twilio-flex-token-validator
Version:
Flex JWE Token Validator
89 lines (66 loc) • 3.05 kB
Markdown
<h1 align="center">Twilio Flex Token Validator</h1>
<p align="center">Flex JWE Token Validator provides an easy way to validate a Flex JWE token.</p>
<p align="center">
<a href="https://travis-ci.com/twilio/twilio-flex-token-validator">
<img src="https://travis-ci.com/twilio/twilio-flex-token-validator.svg?branch=master" title="Build Status" />
</a>
<a href="https://codecov.io/gh/twilio/twilio-flex-token-validator">
<img src="https://codecov.io/gh/twilio/twilio-flex-token-validator/branch/main/graph/badge.svg?token=vfjh2eKfxc"/>
</a>
<a href="https://www.npmjs.com/package/twilio-flex-token-validator">
<img src="https://img.shields.io/npm/v/twilio-flex-token-validator.svg" title="npm" />
</a>
<a href="https://www.npmjs.com/package/twilio-flex-token-validator">
<img src="https://img.shields.io/npm/dt/twilio-flex-token-validator.svg" title="npm" />
</a>
<a href="./LICENSE.md">
<img src="https://img.shields.io/badge/license-MIT-green.svg" title="License" />
</a>
</p>
Install with `npm install twilio-flex-token-validator`.
You can use this validator either within a [Twilio Function](https://www.twilio.com/functions), or into any NodeJS application.
First visit [Twilio Function Configuration](https://www.twilio.com/console/runtime/functions/configure) and add `twilio-flex-token-validator` as an NPM package. On the same page, enable the checkbox `Enable ACCOUNT_SID and AUTH_TOKEN`.
In your Twilio Function, wrap your main `handler` with this validator:
```js
const TokenValidator = require('twilio-flex-token-validator').functionValidator;
exports.handler = TokenValidator(function(context, event, callback) {
// Your normal Twilio Function goes here.
// This block will only be called if your token is validated, otherwise it returns a 403.
});
```
This validator assumes that the token is provided as the `Token` key. The successful result of the token validation is added to `event.TokenResult`.
Make sure the checkbox `Check for valid Twilio signature` is _disabled_. This token validator will handle the authentication of the request instead.
You can also use this validator inside any existing Node servers:
```js
const TokenValidator = require('twilio-flex-token-validator').validator;
TokenValidator(token, accountSid, authToken)
.then(tokenResult => {
// validated
})
.catch(err => {
// validation failed
});
```
The validated token result will contain the following data:
```json
{
"valid": true,
"code": 0,
"message": null,
"expiration": "2018-09-24T23:22:44.240Z",
"realm_user_id": "user@example.com",
"identity": "user_40example_2Dcom",
"roles":[
"agent"
],
"worker_sid": "WKxxx"
}
```
Check out [CONTRIBUTING](CONTRIBUTING.md) for more information on how to contribute to this project.
Twilio Flex Token Validator is licensed under [MIT](LICENSE).