Este repositorio contiene un código de backend de muestra que demuestra cómo combinar la generación JWT de Virgil y Twilio, que se utilizan para la autenticación con los servicios de Virgil y Twilio.
No utilice esta autenticación en producción. Se deben permitir solicitudes a los puntos finales /virgil-jwt y /twilio-jwt para usuarios autenticados. Utilice su estrategia de autorización de aplicaciones.
Clona el repositorio de GitHub.
$ git clone https://github.com/VirgilSecurity/twilio-sample-backend-nodejs.git
Si aún no tiene una cuenta, regístrese para obtener una usando su correo electrónico.
.env
en la sección del archivo .env ..env
. Para generar un Virgil JWT se requieren los siguientes valores:
Nombre de la variable | Descripción |
---|---|
APLICACIÓN_ID | ID de su aplicación Virgil. |
APLICACIÓN_KEY | Clave privada de su aplicación que se utiliza para firmar los JWT. |
APLICACIÓN_KEY_ID | ID de su clave de aplicación. Un valor de cadena único que identifica su cuenta en Virgil Cloud. |
.env.example
a .env
.APP_ID
al archivo .env
;APP_KEY
del archivo .env
;APP_KEY_ID
en el archivo .env
;Para generar un Twilio JWT se requieren los siguientes valores:
Nombre de la variable | Descripción |
---|---|
TWILIO_ACCOUNT_SID | Su identificador principal de cuenta de Twilio: encuéntrelo en la consola aquí. |
TWILIO_API_KEY_SID | SID de la clave Twilio Api. Se utiliza para la autenticación en los servicios de Twilio. Generado con TWILIO_API_SECRET |
TWILIO_API_SECRET | Secreto de clave API de Twilio: genere uno aquí |
TWILIO_SERVICE_SID | Una instancia de servicio donde se almacenan y abarcan todos los datos de nuestra aplicación. Genera uno en la consola aquí. |
Agregue estos parámetros a su archivo .env
.
$ npm install
$ npm run start
Ahora, use su código de cliente para realizar una solicitud para obtener un JWT del backend de muestra que está funcionando en http://localhost:3000.
Junto con el backend, proporcionamos una demostración de un chat de cliente simple que interactúa con la API de Virgil, que puede ver si navega a http://localhost:3000 en su navegador. El código de chat de muestra se encuentra en el directorio public
.
Este punto final es un ejemplo de autenticación de usuarios. Toma identity
del usuario y responde con un token único.
POST https://localhost:3000/authenticate HTTP/1.1
Content-type: application/json;
{
"identity" : " string "
}
Response:
{
"authToken" : " string "
}
Este punto final comprueba si una solicitud está autenticada mediante un encabezado de autorización. Toma authToken
del usuario, encuentra la identidad del usuario relacionada y genera un virgilToken
(que es un token web JSON) con esta identity
en una carga útil. Utilice este token para realizar llamadas API autorizadas a Virgil Cloud.
GET https://localhost:3000/virgil-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"virgilToken" : " string "
}
Igual que el punto final del token Virgil, el punto final de Twilio debe estar protegido y responde con twilioToken
.
GET https://localhost:3000/twilio-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"twilioToken" : " string "
}
Para generar un Virgil JWT, debe utilizar la clase JwtGenerator
del SDK de 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 )
} ) ;
Luego, debe proporcionar un punto final HTTP que devolverá el JWT con la identidad del usuario como JSON.
Para obtener más detalles, consulte el archivo virgilToken.js.
Esta biblioteca se publica bajo la licencia BSD de 3 cláusulas.
Nuestro equipo de soporte para desarrolladores está aquí para ayudarlo. Obtenga más información en nuestro Centro de ayuda.
Puede encontrarnos en Twitter o enviarnos un correo electrónico a [email protected].
Además, obtenga ayuda adicional de nuestro equipo de soporte en Slack.