Autenticación
Las API de Vonage admiten diferentes métodos de autenticación según el producto que estés usando:
| API{filter} | Clave y secreto de la API (encabezado) | Token web JSON (JWT) |
|---|---|---|
| Account | ||
| Aplicaciones | ||
| Audit | ||
| Conversación | ||
| Conversión | ||
| Recuperación de la ubicación del dispositivo | ||
| Despacho | ||
| Identidad | ||
| Medios de comunicación | ||
| Mensajes1 | ||
| Numbers | ||
| Entender los Numbers | ||
| Precios v1 | ||
| Precios v2 | ||
| SIP programable | ||
| Calidad a la carta | ||
| Redactar | ||
| Informes | ||
| SMS | ||
| Verify (heredado) | ||
| Verify2 | ||
| Voz3 | ||
| Vídeo |
1 Mensajes soporta tanto autenticación JWT como Básica, sin embargo la autenticación básica no soporta webhooks o características avanzadas como ACLs. Para la mayoría de los casos de uso recomendamos la autenticación JWT. Consulte Autenticación de la Messages API
2 Verify admite tanto la autenticación JWT como la autenticación básica; sin embargo, la autenticación básica no admite webhooks ni funciones avanzadas como las listas de control de acceso (ACL).
3 Usos de SIP Trunking Autenticación Digest con la clave de la API como usuario y el secreto de la API como contraseña.
Índice
En este documento podrás obtener información sobre la autenticación a través de los siguientes métodos:
Clave y secreto de la API
Cuando creas una Account de Vonage, se crearán una clave API y un secreto para ti. Estas se encuentran en tu configuración de la Account en el panel de control de Vonage. Debes mantenerlos siempre a buen recaudo y nunca comparta estos datos: tenga cuidado al añadirlo a su código base para asegurarse de que no se comparte con nadie que pueda utilizarlo de forma malintencionada. Si utiliza firmas de mensajesse generan mediante la función SIGNATURE_SECRET en lugar del API_SECRETambos valores se encuentran en su configuración de la Account.
Nota: El secreto debe mantenerse siempre seguro y nunca compartirse. Ten cuidado al añadirlo a tu código base para asegurarte de que no se comparte con nadie que pueda utilizarlo de forma malintencionada. Más información sobre Mejores prácticas de seguridad para tu Account de Vonage.
Las API de Vonage pueden requerir tu clave y secreto de API de diferentes maneras.
Autenticación básica
Algunas de las API de Vonage más recientes requieren que la autenticación se realice mediante una clave y un secreto de API enviados codificados en Base64 en el archivo Authorization de cabeza.
Para estas API, envíe su clave API y su secreto de la siguiente manera:
Authorization: Basic base64(API_KEY:API_SECRET)
Si tu clave API fuera aaa012 y su secreto API eran abc123456789concatenarías la clave y el secreto con un : el símbolo (dos puntos) y, a continuación, codificarlos mediante la codificación Base64 para obtener un valor como este:
Authorization: Basic YWFhMDEyOmFiYzEyMzQ1Njc4OQ==
Aquí puedes encontrar una página web para generar cadenas codificadas en Base64:
En los siguientes sitios web encontrará información detallada sobre cómo codificar cadenas Base64 en diversos lenguajes de programación:
- C#/.NET: ¿Cómo codifico y descodifico una cadena Base64? de StackOverflow
- Vamos: Codificación Base64 de Go By Example
- Java: Base64
- JavaScript: Codificación y decodificación Base64 de los documentos web de MDN
- PHP: codificar_base64
- Python: Base64
- Rubí: Base64
- Swift: Codificación y decodificación Base64 en Swift de Consejos para desarrolladores de iOS
Rotación secreta
Es posible utilizar dos secretos de API con una misma clave de API al mismo tiempo. De este modo, puedes crear un segundo secreto de API y probarlo antes de revocar el secreto de API existente en tu red de producción. El procedimiento de rotación de secretos de API consta de los siguientes pasos:
- Cree un segundo secreto de API en su configuración de la Account o utilizando el API de rotación secreta.
- Actualiza uno o más de tus servidores para que utilicen el nuevo secreto de API creado para realizar llamadas a las API de Vonage
- Comprueba que no haya problemas de conectividad y aplica la actualización del secreto de la API en el resto de servidores.
- Elimina el secreto de la API sustituido
Tokens web JSON
Tokens web JSON (JWT) son un medio compacto y seguro de URL para representar declaraciones que deben transferirse entre dos partes. Para obtener una lista completa de las API que utilizan JWT, consulte la tabla arriba.
Cabecera y carga útil
Los JWT constan de un encabezado y una carga útil. Los valores de la cabecera son:
| Nombre | Descripción | Requerido |
|---|---|---|
alg |
El algoritmo de cifrado utilizado para generar el JWT. RS256 es compatible. |
|
typ |
La estructura de fichas. Establecida en JWT. |
Los valores de la declaración de carga útil son:
| Nombre | Descripción | Requerido |
|---|---|---|
application_id |
El identificador único asignado a tu aplicación por Vonage. | |
iat |
La marca de tiempo UNIX en UTC + 0 que indica el momento en que se solicitó el JWT. | |
jti |
Un identificador de cadena único del JWT. | |
nbf |
La marca de tiempo UNIX en UTC + 0 que indica el momento en que el JWT entró en vigor. | |
exp |
La marca de tiempo UNIX en UTC + 0 que indica el momento en que el JWT deja de ser válido. El valor mínimo es de 30 segundos a partir del momento en que se genera el JWT. El valor máximo es de 24 horas a partir del momento en que se genera el JWT. El valor por defecto es de 15 minutos a partir del momento en que se genera el JWT. |
Generación de JWT
Uso de la CLI de Vonage para generar JWT
El CLI de Vonage ofrece un comando para generar un JWT.
A continuación se muestra un ejemplo de cómo generar un JWT para una aplicación:
# A command with parameters
vonage jwt create `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key
# Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzYyODE5NDYsImp0aSI6IjBmZjcwZDNmLTAzN2EtNGY4MC04ODZjLWI3MmM3MmQyMWNmMiIsImlhdCI6MTczNjI4MTA0NiwiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.gA7jClpqaZ2OoS0iri-zGCbda4jO7C0M8mka0EnSyjlds1EeY8fNoBEx3FTXHfkkzzrj0TskrWc_dcs1wuM8Kx55c5rLQ7taVpDAYopKSc_CeeOaad8S6aWnRkTUTNeduO4aIn-0CbyRTluBYsH1RBqYBQvobuQIDEwbFw8xBgx0UfREMMN6DAWknR57eiVXN9x_oD6CGQJ1yV3025nGboeMsP9YgX4Nwc-rE2r8c1ZGwCLO81x8i19Qil3Nwu5q1nzouyavQjIw00B_TZkushnI1ufdi_GNqk-h5q2HvGkg7Pj9bVkZHFdVTO8im03JYNyJmcV83vnpjOLuCFRzxQ
REM A command with parameters
vonage jwt create ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key
REM Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzYyODE5NDYsImp0aSI6IjBmZjcwZDNmLTAzN2EtNGY4MC04ODZjLWI3MmM3MmQyMWNmMiIsImlhdCI6MTczNjI4MTA0NiwiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.gA7jClpqaZ2OoS0iri-zGCbda4jO7C0M8mka0EnSyjlds1EeY8fNoBEx3FTXHfkkzzrj0TskrWc_dcs1wuM8Kx55c5rLQ7taVpDAYopKSc_CeeOaad8S6aWnRkTUTNeduO4aIn-0CbyRTluBYsH1RBqYBQvobuQIDEwbFw8xBgx0UfREMMN6DAWknR57eiVXN9x_oD6CGQJ1yV3025nGboeMsP9YgX4Nwc-rE2r8c1ZGwCLO81x8i19Qil3Nwu5q1nzouyavQjIw00B_TZkushnI1ufdi_GNqk-h5q2HvGkg7Pj9bVkZHFdVTO8im03JYNyJmcV83vnpjOLuCFRzxQ
La clave privada en cuestión se genera desde el panel de control de la aplicación o desde vonage apps create. Puedes guardar esta
información para la CLI ejecutando vonage auth set. El contenido de la clave privada se guardará en
el sitio .vonagerc archivo o $HOME/.vonage/config.json.
Para obtener más información sobre el CLI de Vonage, consulta su en GitHub.
Se pueden encontrar ejemplos de uso de las bibliotecas de Vonage para generar JWTs debajo de. Si no utilizas una biblioteca de Vonage, debes consultar RFC 7519 para implementar JWTs.
SDK de cliente de Vonage
Vonage Cliente y Vídeo Los SDK utilizan JWT para la autenticación cuando un cliente se conecta a Vonage. Estos JWT se generan utilizando el ID de la aplicación y la clave privada que se proporciona cuando se crea una nueva aplicación.
Reclamaciones
Utilizando eso private.key y el ID de la aplicación, puedes acuñar un nuevo JWT. Para registrar a un usuario en un cliente de Vonage, el JWT necesitará las siguientes afirmaciones:
Vonage Client SDK
| Afirmación | Descripción |
|---|---|
sub |
El "asunto". El asunto, en este caso, será el nombre del usuario creado y asociado con tu aplicación de Vonage. |
acl |
Lista de control de acceso. El Client SDK la utiliza como sistema de permisos para los usuarios. Más información en Visión general de ACL. |
application_id |
Este es el ID de la aplicación de Vonage que has creado. |
iat |
«Emitido a las» Es la hora a la que se emitió el JWT, expresada en tiempo de la época Unix. |
jti |
"ID JWT". Se trata de un identificador único en forma de cadena para este JWT. |
exp |
«Hora de caducidad»: es la hora futura en la que caducará el JWT, expresada en tiempo de la época Unix. |
El exp es opcional. Si no se proporciona el claim, el JWT expirará por defecto en 15 minutos. El tiempo máximo de expiración de un JWT es de 24 horas. Normalmente, los JWT deberían durar poco, ya que es trivial crear un nuevo JWT y algunos JWT pueden tener múltiples permisos de gran alcance.
Ejemplo de carga útil JWT del Client SDK
Una vez que se hayan proporcionado todas las reclamaciones, las reclamaciones resultantes deberían aparecer así:
{
"iat": 1532093588,
"jti": "705b6f50-8c21-11e8-9bcb-595326422d60",
"sub": "alice",
"exp": "1532179987",
"acl": {
"paths": {
...
}
},
"application_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab"
}
( ... fragmento truncado)
SDK de cliente de vídeo de Vonage
| Afirmación | Descripción |
|---|---|
sub |
El «asunto». El asunto, en este caso, debería ser la cadena video. |
acl |
Lista de control de acceso. El Client SDK la utiliza como sistema de permisos para los usuarios. Más información en Visión general de ACL. |
application_id |
Este es el ID de la aplicación de Vonage que has creado. |
session_id |
Este es el ID del Sesión que tú has creado. |
scope |
Es el ámbito del token. Debe ser la cadena session.connect. |
role |
Es la función del token. Puede ser un rango de cadena valores dependiendo de los permisos que quieras conceder a este token. |
data |
Estos metadatos personalizados se pueden añadir de forma opcional para describir el token. Se trata de una cadena limitada a 1000 caracteres. |
initial_layout_class_list |
Esto le permite, opcionalmente, al emitir, especificar la inicial Lista de clases de diseño para los flujos publicados por el cliente. |
iat |
«Emitido a las» Es la hora a la que se emitió el JWT, expresada en tiempo de la época Unix. |
jti |
"ID JWT". Se trata de un identificador único en forma de cadena para este JWT. |
exp |
«Hora de caducidad»: es la hora futura en la que caducará el JWT, expresada en tiempo de la época Unix. |
El exp es opcional. Si no se proporciona la reclamación, el JWT caducará por defecto en 24 horas. El plazo máximo de caducidad de un JWT del SDK de vídeo es de 30 días. Por lo general, los JWT deben tener una vigencia corta, ya que es muy sencillo crear uno nuevo y algunos pueden tener múltiples permisos de amplio alcance. Asegúrate siempre de intentar establecer un exp desde el tiempo máximo hasta el mínimo viable para tu aplicación.
Ejemplo de carga útil JWT del Client SDK de vídeo
{
"scope": "session.connect",
"session_id": "1_MX44YjY4NTFmZS01NjdjLTRlODYtYWRmOC0zYmVhODM2MzNjNjB-fjE3NDIzMDY0ODY0NjZ-WS9FOHhybUdHV0JtTGZYTEV2aVlwV1N4fn5-",
"role": "moderator",
"initial_layout_class_list": "",
"sub": "video",
"acl": {
"paths": {
"/session/**": {}
}
},
"jti": "c04c96ba-3229-4fd4-9f55-406b6a6eb485",
"iat": 1742306486,
"exp": 1742307386,
"application_id": "8b6851fe-567c-4e86-adf8-3bea83633c60"
}
Lista de control de acceso (ACL)
En el Ejemplo de carga útil de una solicitud JWT En la imagen anterior, fíjate en cómo el acl reclamación tiene un paths objeto. El objeto «path» contiene una lista de puntos finales que se corresponden con determinados permisos de los que dispone un usuario al utilizar el Client SDK.
A continuación se muestra la lista de puntos finales a los que puede conceder acceso a un usuario:
| Punto final | Descripción | Necesario para |
|---|---|---|
/*/rtc/** |
Crear sesión de señalización para recibir eventos y enviar métricas | Llamadas/mensajes dentro de la aplicación |
/*/sessions/** |
Iniciar sesión como usuario de voz o chat dentro de la aplicación | Llamadas/mensajes dentro de la aplicación |
/*/users/** |
Obtención de conversaciones de usuario, sesiones de usuario y objeto de usuario | Llamadas/mensajes dentro de la aplicación |
/*/conversations/** |
Crear y gestionar conversaciones y enviar/recibir mensajes | Llamadas/mensajes dentro de la aplicación |
/*/knocking/** |
Iniciar llamadas telefónicas | Llamadas dentro de la aplicación |
/*/devices/** |
Registrar el dispositivo para recibir notificaciones push | Llamadas/mensajes dentro de la aplicación |
/*/legs/** |
Crear y gestionar tramos en una conversación | Llamadas dentro de la aplicación |
/*/session/** |
Conectarse a una sesión de vídeo | Vídeo |
Debe proporcionar al usuario que está generando permisos para acceder sólo a las rutas relevantes. Por ejemplo, si el usuario del Voice Client SDK no va a necesitar obtener información sobre su objeto Usuario u otros Usuarios, debe omitir la ruta users ruta. Para explicarlo mejor, si añades el /*/conversations/** a la ACL de un JWT, el usuario podrá crear y gestionar conversaciones. Además, si este es el solo Una vez configurados los ACL, el usuario solo tendrá acceso a los /conversations punto final.
Nota: El uso de comodines en sus rutas ACL (por ejemplo. /*/conversations/**) permitirá que el token JWT acceda a todas las operaciones de ese punto final. Se recomienda encarecidamente que utilices un control más granular de las rutas de tu ACL, tal y como se ilustra a continuación.
Rutas ACL granulares
Arriba vimos cómo conceder a los usuarios acceso a los endpoints. También puede limitar o conceder acceso basado en sub-rutas y métodos HTTP. Esto le permite definir de forma muy granular qué permisos debe tener un token. Por ejemplo, en tu aplicación Voice Client SDK quieres que los usuarios puedan obtener información sobre una conversación:
{
"acl": {
"paths": {
"/*/conversations/**": {}
}
}
}
Las rutas ACL anteriores permiten cualquiera con este token para realizar peticiones a cualquier Punto final de la Conversation API vinculado a tu aplicación de Vonage. Esto permitirá a quien posea este token obtener una lista de las conversaciones en curso en tu aplicación, crear nuevas conversaciones y mucho más. Para mitigar este riesgo, puedes especificar a qué rutas concretas se debe permitir el acceso y qué métodos HTTP se pueden utilizar en dichas rutas.
{
"acl": {
"paths": {
"/*/conversations/*": {
"methods": [
"GET"
]
}
}
}
}
Estas nuevas rutas ACL permiten a cualquier persona con este token solo hacer un GET a una conversación específica y no a otras sub-rutas u operaciones. Lo cual es mucho más restrictivo que antes.
Rutas ACL mínimas para SDK de cliente
A continuación se detallan las rutas ACL mínimas necesarias para realizar varias acciones en los SDK del cliente de Vonage. Para agregar compatibilidad con más terminales según tu caso de uso, consulta la sección Tabla ACL lo anterior y añádelas de la forma más restrictiva posible.
Esto soporta el caso de uso básico de crear una sesión, utilizando serverCall, reconnectCally poder responder, rechazar o colgar una llamada.
{
"acl": {
"paths": {
"/*/sessions/**": { "methods": ["POST"] },
"/*/conversations/*": { "methods": ["GET"] },
"/*/conversations/*/rtc/*/answer": { "methods": ["POST"] },
"/*/conversations/*/rtc/*/offer/*": { "methods": ["POST"]},
"/*/conversations/*/members/*": { "methods": ["PUT", "DELETE"] },
"/*/knocking/**": { "methods": ["POST", "DELETE"] },
"/*/legs/**": { "methods": ["POST", "GET"] },
"/*/v2/rtc/**": { "methods": ["POST", "GET"] }
}
}
}
Además del caso base Calling, esto le permitirá utilizar funciones del SDK como mute, sayetc. Esto es necesario para el Chat SDK.
{
"acl": {
"paths": {
"/*/sessions/**": { "methods": ["POST"] },
"/*/conversations/*": { "methods": ["GET"] },
"/*/conversations/*/events/*": { "methods": ["POST", "GET"]},
"/*/conversations/*/rtc/*/answer": { "methods": ["POST"] },
"/*/conversations/*/rtc/*/offer/*": { "methods": ["POST"]},
"/*/conversations/*/members/*": { "methods": ["PUT", "DELETE"] },
"/*/knocking/**": { "methods": ["POST", "DELETE"] },
"/*/legs/**": { "methods": ["POST", "GET"] },
"/*/v2/rtc/**": { "methods": ["POST", "GET"] }
}
}
}
Además del caso de llamada base, esto le permitirá utilizar las funciones del SDK para gestionar los tokens push. Añada los métodos de dispositivo que desee admitir según sea necesario.
{
"acl": {
"paths": {
"/*/sessions/**": { "methods": ["POST"] },
"/*/conversations/*": { "methods": ["GET"] },
"/*/conversations/*/rtc/*/answer": { "methods": ["POST"] },
"/*/conversations/*/rtc/*/offer/*": { "methods": ["POST"]},
"/*/conversations/*/members/*": { "methods": ["PUT", "DELETE"] },
"/*/knocking/**": { "methods": ["POST", "DELETE"] },
"/*/legs/**": { "methods": ["POST", "GET"] },
"/*/v2/rtc/**": { "methods": ["POST", "GET"] },
"/*/devices/**": { "methods": [] }
}
}
}
Métodos de los dispositivos:
- POST: registrar nuevos dispositivos de usuario.
- GET - Obtener los dispositivos registrados para el usuario.
- PUT - Actualiza los dispositivos registrados para el usuario.
- ELIMINAR: elimina los dispositivos registrados del usuario.
Además del caso de llamada base, esto le permitirá utilizar las funciones del SDK para obtener información sobre un usuario específico.
{
"acl": {
"paths": {
"/*/sessions/**": { "methods": ["POST"] },
"/*/conversations/*": { "methods": ["GET"] },
"/*/conversations/*/rtc/*/answer": { "methods": ["POST"] },
"/*/conversations/*/rtc/*/offer/*": { "methods": ["POST"]},
"/*/conversations/*/members/*": { "methods": ["PUT", "DELETE"] },
"/*/knocking/**": { "methods": ["POST", "DELETE"] },
"/*/legs/**": { "methods": ["POST", "GET"] },
"/*/v2/rtc/**": { "methods": ["POST", "GET"] },
"/*/users/*": { "methods": ["GET"] },
}
}
}
Esto permite conectarse a una sesión con el SDK de vídeo.
{
"acl": {
"paths": {
"/*/session/**": {}
}
}
}
Generación de JWT mediante la CLI de Vonage
El SDK de servidor contienen métodos para generar tokens JWT. No obstante, puedes utilizar el CLI de Vonage para hacer esto también. Esto es especialmente útil durante las pruebas.
# A command with parameters
vonage jwt create `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key `
--sub='Alice' `
--acl='{\"paths\":{\"\/*\/users\/**\":{},\"\/*\/conversations\/**\":{},\"\/*\/sessions\/**\":{},\"\/*\/devices\/**\":{},\"\/*\/push\/**\":{},\"\/*\/knocking\/**\":{},\"\/*\/legs\/**\":{}}}'
# Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2wiOnsicGF0aHMiOnsiLyovcnRjLyoqIjp7fSwiLyovdXNlcnMvKioiOnt9LCIvKi9jb252ZXJzYXRpb25zLyoqIjp7fSwiLyovc2Vzc2lvbnMvKioiOnt9LCIvKi9kZXZpY2VzLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fSwiZXhwIjoxNzQxMTgyMzA3LCJzdWIiOiJBbGljZSIsImp0aSI6Ijg1MTViNzk2LTA1YjktNGFkMS04MTRkLTE1NWZjZTQzZWM1YiIsImlhdCI6MTc0MTE4MTQwNywiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.BscMdDXZ1-nuLtKyPJvw9tE8E8ZjJvTPJPMT9y0TjPz4Q7qqNaqxcjglc5QPtYEjh2YpZH6btSKbUF4XTClI026Hl5_QOBlnayYo7jXwhba16fa5PeyzSf30QFGFrHbANwrQJFVCjd329SZUpwK4GxgB1gf230NhbfmkhegKezqicru2WTGCKm8kQncYliFwIEYUlcRAb2c8xcaVrn_6QNNahyeJRwGFfWpIkX0Oe-S4RDlPjoq47_gYWac9MmaetB4Dd3Yp531AuniGV5JiIShkaEwuY4Zyov4Hcmajm4Lm_UFY119la7vzHis0P7cT9pPUDe5cyPj7eT8-VhitfQ
REM A command with parameters
vonage jwt create ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key ^
--sub='Alice' ^
--acl="{\"paths\":{\"\/*\/users\/**\":{},\"\/*\/conversations\/**\":{},\"\/*\/sessions\/**\":{},\"\/*\/devices\/**\":{},\"\/*\/push\/**\":{},\"\/*\/knocking\/**\":{},\"\/*\/legs\/**\":{}}}"
REM Will produce a token
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2wiOnsicGF0aHMiOnsiLyovcnRjLyoqIjp7fSwiLyovdXNlcnMvKioiOnt9LCIvKi9jb252ZXJzYXRpb25zLyoqIjp7fSwiLyovc2Vzc2lvbnMvKioiOnt9LCIvKi9kZXZpY2VzLyoqIjp7fSwiLyovcHVzaC8qKiI6e30sIi8qL2tub2NraW5nLyoqIjp7fSwiLyovbGVncy8qKiI6e319fSwiZXhwIjoxNzQxMTgyMzA3LCJzdWIiOiJBbGljZSIsImp0aSI6Ijg1MTViNzk2LTA1YjktNGFkMS04MTRkLTE1NWZjZTQzZWM1YiIsImlhdCI6MTc0MTE4MTQwNywiYXBwbGljYXRpb25faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAifQ.BscMdDXZ1-nuLtKyPJvw9tE8E8ZjJvTPJPMT9y0TjPz4Q7qqNaqxcjglc5QPtYEjh2YpZH6btSKbUF4XTClI026Hl5_QOBlnayYo7jXwhba16fa5PeyzSf30QFGFrHbANwrQJFVCjd329SZUpwK4GxgB1gf230NhbfmkhegKezqicru2WTGCKm8kQncYliFwIEYUlcRAb2c8xcaVrn_6QNNahyeJRwGFfWpIkX0Oe-S4RDlPjoq47_gYWac9MmaetB4Dd3Yp531AuniGV5JiIShkaEwuY4Zyov4Hcmajm4Lm_UFY119la7vzHis0P7cT9pPUDe5cyPj7eT8-VhitfQ
Uso de los SDK de servidor
Se espera que el servidor que acompaña a tu aplicación de Vonage genere JWT para los SDK de cliente. Estos son algunos ejemplos que utilizan los SDK de servidor de Vonage:
Versión 3 del SDK del servidor Vonage Node incluye un paquete para generar tokens JWT. También puede generar un JWT utilizando las afirmaciones adecuadas.
const { tokenGenerate } = require('@vonage/jwt');
const privateKey = readFileSync('path/to/private.key');
const aclPaths = {
"paths": {
...
}
}
const token = tokenGenerate("aaaaaaaa-bbbb-cccc-dddd-0123456789ab", privateKey, {
//expire in 24 hours
exp: Math.round(new Date().getTime()/1000)+86400,
sub: "Alice",
acl: aclPaths,
});
El Biblioteca JWT de Vonage para JDK puede utilizarse para generar un JWT firmado con reclamaciones.
val token : String = Jwt.builder()
.applicationId("aaaaaaaa-bbbb-cccc-dddd-0123456789ab")
.privateKeyPath("/path/to/private.key")
.issuedAt(ZonedDateTime.now())
.subject("Alice")
.addClaim("acl", mapOf(
"paths" to mapOf(
...
)
))
.build()
.generate()
El Biblioteca JWT de Vonage para JDK puede utilizarse para generar un JWT firmado con reclamaciones.
String token = Jwt.builder()
.applicationId("aaaaaaaa-bbbb-cccc-dddd-0123456789ab")
.privateKeyPath(Paths.get("/path/to/private.key"))
.subject("Alice")
.issuedAt(ZonedDateTime.now())
.expiresAt(ZonedDateTime.now().plusMinutes(20))
.addClaim("acl", Map.of(
"paths", Map.of(
...
)
))
.build()
.generate();
El SDK .NET de Vonage puede utilizarse para generar un JWT firmado con reclamaciones.
Como ejemplo, supongamos que queremos añadir las siguientes afirmaciones en el JWT:
var payload = new Dictionary<string, object>
{
{"sub", "Alice"},
{"exp", DateTimeOffset.UtcNow.AddDays(1).ToUnixTimeSeconds().ToString()},
{
"acl", new Dictionary<string, object>
{
["paths"] = new Dictionary<string, object>
{
...
},
}
},
};
Hay varias formas de generar un JWT.
Puedes utilizar el método estático CreateToken en el Jwt clase:
var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_APPLICATION_PRIVATE_KEY_PATH);
var token = Jwt.CreateToken(credentials.ApplicationId, credentials.ApplicationKey, payload);
O utilice el método GenerateToken en un Jwt instancia:
// Using the credentials instance
var result = tokenGenerator.GenerateToken(credentials, payload);
// Using ApplicationId and ApplicationKey values
var result = tokenGenerator.GenerateToken(credentials.ApplicationId, credentials.ApplicationKey, payload);
La versión actual del SDK de servidor PHP de Vonage También se puede crear un JWT que incluya las reclamaciones adecuadas al utilizar la autenticación mediante par de claves.
$keypair = new \Vonage\Client\Credentials\Keypair(
file_get_contents('/path/to/private.key'),
'aaaaaaaa-bbbb-cccc-dddd-0123456789ab'
);
$client = new \Vonage\Client($keypair);
$claims = [
'acl' => [
'paths' => [
...
]
]
];
$token = $client->generateJwt($claims);
$tokenString = $token->toString();
El Biblioteca JWT de Vonage para Python puede utilizarse para generar un JWT firmado con reivindicaciones predeterminadas o personalizadas.
from vonage_jwt import JwtClient
jwt_client = JwtClient(application_id, private_key)
# The `claims` field is optional and can be omitted as defaults are set
paths = { ... }
claims = {'sub': 'Alice', 'paths': paths}
vonage_jwt = jwt_client.generate_application_jwt(claims)
El Biblioteca JWT de Vonage para JDK puede utilizarse para generar un JWT firmado con reclamaciones.
@builder = Vonage::JWTBuilder.new(application_id: YOUR_APPLICATION_ID, private_key: YOUR_PRIVATE_KEY)
@token = @builder.jwt.generate
( ... fragmento truncado)