Authentification
Les API de Vonage prennent en charge différentes méthodes d'authentification en fonction du produit que vous utilisez :
| API | Clé et secret de l'API (en-tête) | Jeton Web JSON (JWT) |
|---|---|---|
| Account | ||
| Applications | ||
| Audit | ||
| Conversation | ||
| Conversion | ||
| Récupération de l'emplacement de l'appareil | ||
| Envoi | ||
| Identité | ||
| Les médias | ||
| Messages1 | ||
| Numbers | ||
| Numbers Insight | ||
| Tarification v1 | ||
| Tarification v2 | ||
| SIP programmable | ||
| La qualité à la demande | ||
| Rédiger | ||
| Rapports | ||
| SMS | ||
| Verify (héritage) | ||
| Verify2 | ||
| Voix3 | ||
| Vidéo |
1 Messages prend en charge l'authentification JWT et l'authentification de base, mais l'authentification de base ne prend pas en charge les webhooks ou les fonctions avancées telles que les listes de contrôle d'accès (ACL). Pour la plupart des cas d'utilisation, nous recommandons l'authentification JWT. Voir Messages API Authentification
2 Verify prend en charge l'authentification JWT et l'authentification de base, mais cette dernière ne prend pas en charge les webhooks ou les fonctionnalités avancées telles que les ACL.
3 Le SIP Trunking utilise Authentification Digest avec la clé API comme utilisateur et le secret API comme mot de passe.
Contenu
Dans ce document, vous trouverez des informations sur l'authentification par les moyens suivants :
Clé et secret de l'API
Lorsque vous créez un compte Vonage, une clé API et un secret seront créés pour vous. Ils se trouvent dans votre Paramètres du compte dans le tableau de bord de Vonage. Vous devez toujours les garder en sécurité et les conserver à l'abri des regards indiscrets. ne jamais communiquer ces informationsLes données de la base de données de l'entreprise peuvent être utilisées par des tiers : soyez prudent lorsque vous les ajoutez à votre base de données afin de vous assurer qu'elles ne sont pas partagées avec des personnes susceptibles de les utiliser à des fins malveillantes. Si vous utilisez signatures des messagesCes derniers sont générés à l'aide de l'outil SIGNATURE_SECRET plutôt que le API_SECRET; les deux valeurs peuvent être trouvées dans votre Paramètres du compte.
Remarque : le secret doit toujours être conservé en toute sécurité et ne jamais être partagé. Soyez prudent lorsque vous l'ajoutez à votre base de code afin de vous assurer qu'il n'est pas partagé avec quelqu'un qui pourrait l'utiliser à des fins malveillantes. Pour en savoir plus sur le Meilleures pratiques de sécurité pour votre Account Vonage.
Les API de Vonage peuvent exiger votre clé et votre secret d'API de différentes manières.
Authentification de base
Un certain nombre d'API Vonage plus récentes exigent que l'authentification soit effectuée à l'aide d'une clé d'API et d'un secret envoyés encodés en Base64 dans le fichier Authorization l'en-tête.
Pour ces API, vous envoyez votre clé API et votre secret de la manière suivante :
Authorization: Basic base64(API_KEY:API_SECRET)
Si votre clé API était aaa012 et votre secret API étaient abc123456789vous concaténeriez la clé et le secret avec un : (deux points), puis les coder en utilisant l'encodage Base64 pour produire une valeur comme celle-ci :
Authorization: Basic YWFhMDEyOmFiYzEyMzQ1Njc4OQ==
Un site web permettant de générer des chaînes encodées en Base64 est disponible ici :
- Généralités : Encodage et décodage Base64
Les sites web suivants expliquent en détail comment encoder les chaînes Base64 dans divers langages de programmation :
- C#/.NET : Comment coder et décoder une chaîne Base64 ? de StackOverflow
- Allez-y : Encodage Base64 de Go By Example
- Java : Base64
- JavaScript : Encodage et décodage Base64 à partir de la documentation web MDN
- PHP : base64_encode
- Python : Base64
- Rubis : Base64
- Swift : Encodage et décodage Base64 en Swift de Conseils aux développeurs iOS
Rotation secrète
Il est possible d'avoir deux secrets API à utiliser avec une clé API en même temps. Vous pouvez ainsi créer un deuxième secret API et le tester avant de révoquer le secret API existant dans votre réseau de production. La procédure de rotation des secrets API comprend les étapes suivantes :
- Créez un deuxième secret API dans votre Paramètres du compte ou en utilisant la fonction rotation du secret API.
- Mettez à jour un ou plusieurs de vos serveurs afin d'utiliser le secret API nouvellement créé pour effectuer des appels aux API de Vonage.
- Vérifier qu'il n'y a pas de problème de connectivité et déployer la mise à jour du secret de l'API sur les serveurs restants.
- Supprimer le secret API remplacé
Jetons Web JSON
Jetons Web JSON (JWT) sont un moyen compact et sûr de représenter les demandes à transférer entre deux parties. Pour une liste complète des API qui utilisent les JWT, veuillez consulter le tableau suivant ci-dessus.
En-tête et charge utile
Les JWT se composent d'un en-tête et d'une charge utile. Les valeurs de l'en-tête sont les suivantes
| Nom | Description | Exigée |
|---|---|---|
alg | L'algorithme de cryptage utilisé pour générer le JWT. RS256 est pris en charge. | |
typ | La structure du jeton. Fixé à JWT. |
Les valeurs pour la revendication de charge utile sont les suivantes :
| Nom | Description | Exigée |
|---|---|---|
application_id | L'identifiant unique attribué à votre application par Vonage. | |
iat | Horodatage UNIX à UTC + 0 indiquant le moment où le JWT a été demandé. | |
jti | Chaîne d'identification unique du JWT. | |
nbf | Horodatage UNIX à UTC + 0 indiquant le moment où le JWT est devenu valide. | |
exp | Horodatage UNIX à UTC + 0 indiquant le moment où le JWT n'est plus valide. La valeur minimale est de 30 secondes à partir du moment où le JWT est généré. Une valeur maximale de 24 heures à partir du moment où le JWT est généré. La valeur par défaut est de 15 minutes à partir du moment où le JWT est généré. |
Générer des JWT
Utiliser le CLI de Vonage pour générer des JWTs
Les CLI Vonage fournit une commande pour générer un JWT.
Voici un exemple de génération d'un JWT pour une application :
# 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 clé privée en question est générée à partir du tableau de bord de l'application ou de vonage apps create. Vous pouvez enregistrer ces
pour l'interface de programmation en exécutant vonage auth set. Le contenu de la clé privée est alors enregistré dans l'un des deux systèmes suivants
le .vonagerc ou $HOME/.vonage/config.json.
De plus amples informations sur le CLI de Vonage peuvent être trouvées dans son sur GitHub.
Des exemples d'utilisation des bibliothèques de Vonage pour générer des JWT sont disponibles ci-dessous. Si vous n'utilisez pas une bibliothèque Vonage, vous devez vous référer à RFC 7519 pour mettre en œuvre les JWT.
SDKs du client Vonage
Vonage Client et Vidéo Les SDK utilisent des JWT pour l'authentification lorsqu'un client se connecte à Vonage. Ces JWT sont générés à l'aide de l'identifiant de l'application et de la clé privée qui est fournie lors de la création d'une nouvelle application.
Réclamations
En utilisant cette private.key et l'ID de l'application, vous pouvez frapper un nouveau JWT. Pour connecter un utilisateur à un client Vonage, le JWT devra contenir les données suivantes :
Vonage Client SDK
| Réclamation | Description |
|---|---|
sub | Le "sujet". Le sujet, dans ce cas, sera le nom de l'utilisateur créé et associé à votre Applications Vonage. |
acl | Liste de contrôle d'accès. Le Client SDK l'utilise comme système de permission pour les utilisateurs. Pour en savoir plus, consultez la page Vue d'ensemble de l'ACL. |
application_id | Il s'agit de l'ID de l'Application Vonage que vous avez créée. |
iat | "Issued at time" Il s'agit de l'heure à laquelle le JWT a été délivré, en heure Unix. |
jti | "ID JWT". Il s'agit d'une chaîne d'identification unique pour ce JWT. |
exp | "Expiration time" Il s'agit de l'heure à laquelle le JWT expirera dans le futur, en heure Unix. |
Les exp est facultative. Si la demande n'est pas fournie, le JWT expirera par défaut dans 15 minutes. Le délai d'expiration maximal d'un JWT est de 24 heures. Les JWT doivent généralement être de courte durée, car il est facile de créer un nouveau JWT et certains JWT peuvent avoir plusieurs autorisations de grande portée.
Exemple de charge utile JWT du Client SDK
Une fois que toutes les revendications ont été fournies, les revendications résultantes devraient apparaître comme suit :
{
"iat": 1532093588,
"jti": "705b6f50-8c21-11e8-9bcb-595326422d60",
"sub": "alice",
"exp": "1532179987",
"acl": {
"paths": {
...
}
},
"application_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab"
}
( ... est tronqué)
Vonage Client Client SDK
| Réclamation | Description |
|---|---|
sub | Le "sujet". Le sujet, dans ce cas, doit être la chaîne de caractères video. |
acl | Liste de contrôle d'accès. Le Client SDK l'utilise comme système de permission pour les utilisateurs. Pour en savoir plus, consultez la page Vue d'ensemble de l'ACL. |
application_id | Il s'agit de l'ID de l'Application Vonage que vous avez créée. |
session_id | Il s'agit de l'identifiant du Session que vous avez créée. |
scope | Il s'agit de la portée du jeton. Il doit s'agir de la chaîne session.connect. |
role | Il s'agit du rôle du jeton. Il peut s'agir d'une chaîne de caractères valeurs en fonction des autorisations que vous souhaitez accorder à ce jeton. |
data | Ces métadonnées personnalisées peuvent être ajoutées facultativement pour décrire le jeton. Il s'agit d'une chaîne limitée à 1000 caractères. |
initial_layout_class_list | Cela vous permet de spécifier facultativement, lors de la diffusion, la valeur initiale de la liste des classes de présentation pour les flux publiés par le client. |
iat | "Issued at time" Il s'agit de l'heure à laquelle le JWT a été délivré, en heure Unix. |
jti | "ID JWT". Il s'agit d'une chaîne d'identification unique pour ce JWT. |
exp | "Expiration time" Il s'agit de l'heure à laquelle le JWT expirera dans le futur, en heure Unix. |
Les exp est facultative. Si la demande n'est pas fournie, le JWT expirera par défaut dans les 24 heures. Le délai d'expiration maximal pour un JWT du SDK vidéo est de 30 jours. Les JWT doivent généralement être de courte durée, car il est facile de créer un nouveau JWT et certains JWT peuvent avoir plusieurs autorisations de grande portée. Veillez à toujours essayer de définir un exp à la durée la plus courte possible pour votre application.
Exemple de charge utile JWT du Client SDK vidéo
{
"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"
}
Liste de contrôle d'accès (ACL)
Dans le cadre de la exemple de charge utile de requête JWT ci-dessus, remarquez comment le acl La demande est assortie d'une paths L'objet chemin d'accès. L'objet chemin contient une liste de points d'extrémité qui correspondent à certaines autorisations dont dispose un utilisateur lorsqu'il utilise le Client SDK.
Vous trouverez ci-dessous la liste des points de terminaison auxquels vous pouvez accorder l'accès à un utilisateur :
| Point final | Description | Requis pour |
|---|---|---|
/*/rtc/** | Créer une session de signalisation pour recevoir des événements et envoyer des mesures | Appels/messages In-App Messaging |
/*/sessions/** | Se connecter en tant qu'utilisateur de la voix ou du chat dans l'application | Appels/messages In-App Messaging |
/*/users/** | Obtenir des conversations d'utilisateurs, des sessions d'utilisateurs et des objets d'utilisateurs | Appels/messages In-App Messaging |
/*/conversations/** | Créer et gérer des conversations et envoyer/recevoir des messages | Appels/messages In-App Messaging |
/*/knocking/** | Lancer des appels téléphoniques | Appels in-app |
/*/devices/** | Enregistrer l'appareil pour recevoir des notifications push | Appels/messages In-App Messaging |
/*/legs/** | Créer et gérer des étapes dans une conversation | Appels in-app |
/*/session/** | Se connecter à une session vidéo | Vidéo |
Vous devez donner à l'utilisateur que vous générez des autorisations lui permettant d'accéder uniquement aux chemins d'accès pertinents. Par exemple, si l'utilisateur du Client SDK n'a pas besoin d'aller chercher des informations sur son objet Utilisateur ou sur d'autres Utilisateurs, vous devez omettre l'option users chemin. Pour illustrer davantage, si vous ajoutez l'élément /*/conversations/** dans l'ACL d'un JWT, l'utilisateur pourra créer et gérer des conversations. De plus, s'il s'agit du chemin seulement l'utilisateur n'aura accès qu'à l'ACL /conversations point final.
Note : L'utilisation de caractères génériques dans les chemins d'accès à la liste de contrôle (par exemple /*/conversations/**) permettra au jeton JWT d'accéder à toutes les opérations de ce point de terminaison. Il est fortement recommandé d'utiliser un contrôle plus granulaire de vos chemins d'accès ACL, comme illustré ci-dessous.
Chemins ACL granulaires
Nous avons vu plus haut comment accorder aux utilisateurs l'accès aux points d'extrémité. Vous pouvez également limiter ou accorder l'accès en fonction des chemins secondaires et des méthodes HTTP. Cela vous permet de définir de manière très granulaire les autorisations qu'un jeton doit avoir. Par exemple, dans votre application Voice Client SDK, vous souhaitez que les utilisateurs puissent obtenir des informations sur une conversation :
{
"acl": {
"paths": {
"/*/conversations/**": {}
}
}
}
Les chemins d'accès ACL ci-dessus permettent n'importe qui à l'aide de ce jeton pour effectuer des demandes auprès de tous Point d'arrivée de l'API Conversation lié à votre application Vonage. Cela permettra à quiconque détient ce jeton d'obtenir une liste des Conversations en cours dans votre application, de créer de nouvelles Conversations, ou plus encore. Pour atténuer ce problème, vous pouvez spécifier quels chemins doivent être accessibles et quelles méthodes HTTP sont autorisées à être utilisées sur ces chemins.
{
"acl": {
"paths": {
"/*/conversations/*": {
"methods": [
"GET"
]
}
}
}
}
Ce nouveau chemin d'accès à l'ACL permet à toute personne possédant ce jeton de seulement faire un GET à une conversation spécifique et pas d'autres sous-chemins ou opérations. Ce qui est beaucoup plus restrictif qu'auparavant.
Chemins d'accès ACL minimaux pour les SDK clients
Vous trouverez ci-dessous les chemins d'accès ACL minimaux nécessaires pour effectuer diverses actions dans les SDK Vonage Client. Pour ajouter la prise en charge d'autres points d'extrémité en fonction de votre cas d'utilisation, reportez-vous à la section Tableau ACL ci-dessus et les ajouter de la manière la plus restrictive possible.
Il s'agit d'un cas d'utilisation de base qui consiste à créer une session, à utiliser serverCall, reconnectCallet de pouvoir répondre à un appel, le rejeter ou le raccrocher.
{
"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"] }
}
}
}
Outre le cas d'appel de base, cela vous permettra d'utiliser les fonctions du SDK telles que mute, sayetc. Ceci est nécessaire pour le 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"] }
}
}
}
En plus du cas d'appel de base, cela vous permettra d'utiliser les fonctions SDK pour gérer les jetons push. Ajoutez les méthodes d'appareil que vous souhaitez prendre en charge si nécessaire.
{
"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éthodes d'appareils :
- POST - Enregistrer de nouveaux dispositifs d'utilisateur.
- GET - Permet d'obtenir les appareils enregistrés pour l'utilisateur.
- PUT - Mise à jour des appareils enregistrés pour l'utilisateur.
- SUPPRIMER - Supprime les appareils enregistrés pour l'utilisateur.
En plus du cas d'appel de base, cela vous permettra d'utiliser les fonctions SDK pour obtenir des informations sur un utilisateur spécifique.
{
"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"] },
}
}
}
Cela permet de se connecter à une session avec le SDK vidéo
{
"acl": {
"paths": {
"/*/session/**": {}
}
}
}
Générer des JWT à l'aide du CLI de Vonage
Les SDK de serveur contiennent des méthodes pour générer des jetons JWT. Vous pouvez cependant utiliser la méthode CLI Vonage pour le faire également. Ceci est particulièrement utile lors des tests.
# 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
Utilisation des SDK du serveur
Il est prévu que le serveur d'accompagnement de votre application Vonage génère des JWT pour les SDK clients. Voici quelques exemples d'utilisation des SDK de Vonage Server :
La version 3 du SDK du serveur Node de Vonage comprend un paquetage permettant de générer des jetons JWT. Il peut également générer un jeton JWT en utilisant les demandes d'indemnisation appropriées.
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,
});
Les Bibliothèque JDK JWT de Vonage peut être utilisé pour générer un JWT signé avec des revendications.
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()
Les Bibliothèque JDK JWT de Vonage peut être utilisé pour générer un JWT signé avec des revendications.
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();
Les SDK .NET de Vonage peut être utilisé pour générer un JWT signé avec des revendications.
Par exemple, supposons que nous voulions ajouter les revendications suivantes dans le 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>
{
...
},
}
},
};
Il existe plusieurs façons de générer un JWT.
Vous pouvez utiliser la méthode statique CreateToken sur le Jwt classe :
var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_APPLICATION_PRIVATE_KEY_PATH);
var token = Jwt.CreateToken(credentials.ApplicationId, credentials.ApplicationKey, payload);
Ou utiliser la méthode GenerateToken sur un Jwt instance :
// 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 version actuelle du SDK du serveur PHP de Vonage peut également créer un JWT comprenant les revendications appropriées lors de l'utilisation de l'authentification par paire de clés.
$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();
Les Bibliothèque JWT Python de Vonage peut être utilisé pour générer un JWT signé avec des revendications par défaut ou personnalisées.
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)
Les Bibliothèque JDK JWT de Vonage peut être utilisé pour générer un JWT signé avec des revendications.
@builder = Vonage::JWTBuilder.new(application_id: YOUR_APPLICATION_ID, private_key: YOUR_PRIVATE_KEY)
@token = @builder.jwt.generate
( ... est tronqué)