Ce référentiel contient un exemple de code backend qui montre comment combiner la génération Virgil et Twilio JWT, qui sont utilisés pour l'authentification avec les services Virgil et Twilio.
N'utilisez pas cette authentification en production. Les requêtes vers des points de terminaison /virgil-jwt et /twilio-jwt doivent être autorisées pour les utilisateurs authentifiés. Utilisez votre stratégie d’autorisation d’application.
Clonez le référentiel depuis GitHub.
$ git clone https://github.com/VirgilSecurity/twilio-sample-backend-nodejs.git
Si vous n'avez pas encore de compte, créez-en un en utilisant votre e-mail.
.env
dans la section du fichier .env ..env
. Pour générer un Virgil JWT, les valeurs suivantes sont requises :
Nom de la variable | Description |
---|---|
ID_APP | ID de votre application Virgil. |
APP_KEY | Clé privée de votre application utilisée pour signer les JWT. |
APP_KEY_ID | ID de votre clé d'application. Une valeur de chaîne unique qui identifie votre compte dans le Virgil Cloud. |
.env.example
en .env
.APP_ID
dans le fichier .env
;APP_KEY
dans le fichier .env
;APP_KEY_ID
dans le fichier .env
;Pour générer un Twilio JWT, les valeurs suivantes sont requises :
Nom de la variable | Description |
---|---|
TWILIO_ACCOUNT_SID | Votre identifiant de compte Twilio principal - trouvez-le dans la console ici. |
TWILIO_API_KEY_SID | SID de la clé API Twilio. Utilisé pour l'authentification sur les services Twilio. Généré avec TWILIO_API_SECRET |
TWILIO_API_SECRET | Clé secrète de l'API Twilio : générez-en une ici |
TWILIO_SERVICE_SID | Une instance de service où toutes les données de notre application sont stockées et étendues. Générez-en un dans la console ici. |
Ajoutez ces paramètres à votre fichier .env
.
$ npm install
$ npm run start
Maintenant, utilisez votre code client pour faire une demande afin d'obtenir un JWT à partir de l'exemple de backend qui fonctionne sur http://localhost:3000.
En plus du backend, nous proposons une démonstration d'un simple chat client interagissant avec l'API Virgil, que vous pouvez voir si vous accédez à http://localhost:3000 sur votre navigateur. L'exemple de code de discussion se trouve dans le répertoire public
.
Ce point de terminaison est un exemple d’authentification des utilisateurs. Il prend identity
de l'utilisateur et répond avec un jeton unique.
POST https://localhost:3000/authenticate HTTP/1.1
Content-type: application/json;
{
"identity" : " string "
}
Response:
{
"authToken" : " string "
}
Ce point de terminaison vérifie si une demande est authentifiée par un en-tête d'autorisation. Il prend authToken
de l'utilisateur, trouve l'identité de l'utilisateur associée et génère un virgilToken
(qui est un jeton Web JSON) avec cette identity
dans une charge utile. Utilisez ce jeton pour effectuer des appels API autorisés vers Virgil Cloud.
GET https://localhost:3000/virgil-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"virgilToken" : " string "
}
Identique au point de terminaison du jeton Virgil Le point de terminaison Twilio doit être protégé et répond avec twilioToken
.
GET https://localhost:3000/twilio-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"twilioToken" : " string "
}
Pour générer un Virgil JWT, vous devez utiliser la classe JwtGenerator
du SDK Virgil.
const virgilCrypto = new VirgilCrypto ( ) ;
const generator = new JwtGenerator ( {
appId : process . env . APP_ID ,
apiKeyId : process . env . API_KEY_ID ,
apiKey : virgilCrypto . importPrivateKey ( process . env . API_PRIVATE_KEY ) ,
accessTokenSigner : new VirgilAccessTokenSigner ( virgilCrypto )
} ) ;
Ensuite, vous devez fournir un point de terminaison HTTP qui renverra le JWT avec l'identité de l'utilisateur en tant que JSON.
Pour plus de détails, jetez un œil au fichier virgilToken.js.
Cette bibliothèque est publiée sous la licence BSD à 3 clauses.
Notre équipe d'assistance aux développeurs est là pour vous aider. Découvrez plus d’informations sur notre centre d’aide.
Vous pouvez nous trouver sur Twitter ou nous envoyer un e-mail à [email protected].
Bénéficiez également d’une aide supplémentaire de notre équipe d’assistance sur Slack.