JWTs verwalten
JSON-Web-Token (JWTs) sind ein kompaktes, URL-sicheres Mittel zur Darstellung von Ansprüchen, die zwischen zwei Parteien übertragen werden sollen. Vonage verwendet JWTs für die Authentifizierung bei einer Vielzahl von APIs sowohl auf dem Front-End als auch auf dem Back-End; eine vollständige Liste der APIs, die JWTs verwenden, finden Sie in der Tabelle in der Authentifizierung Leitfaden.
JWTs generieren
Die Vonage CLI enthält eine vonage jwt create Befehl, der zur Erzeugung von JWTs verwendet werden kann. Um den Befehl zu verwenden, müssen Sie sowohl Ihre app-id und private-key. Der private Schlüssel wird über das Dashboard der Anwendung oder durch Ausführen von vonage apps create. Weitere Informationen zu diesem Befehl finden Sie unter Verwalten von Applications.
Beim Erstellen des JWT können Sie entweder einen Dateipfad angeben, der auf Ihre private Schlüsseldatei verweist, oder diese Informationen für die CLI speichern, indem Sie vonage auth set (siehe hier für weitere Informationen). Der Inhalt des privaten Schlüssels wird dann entweder in der Datei .vonagerc Datei oder $HOME/.vonage/config.json.
Vonage Berechtigungsnachweise:
| Flagge | Beschreibung | Typ |
|---|---|---|
--app-id | Die ID der zu verwendenden Applikation. Diese ist im Abschnitt "Applications" des Dashboards zu finden oder wird ausgegeben mit vonage apps. | Zeichenfolge |
--private-key | Der Pfad oder Inhalt des privaten Schlüssels. Der Zugriff auf den privaten Schlüssel ist nur möglich, wenn die Anwendung erstellt wird oder wenn Sie die Schlüssel im Dashboard neu generieren. | Zeichenfolge |
**JWT Options:**
| Flagge | Beschreibung | Typ |
|---|---|---|
--exp | Der Zeitstempel, zu dem das Token abläuft | Numbers |
--ttl | Die Zeit zum Leben in Sekunden | Numbers |
--sub | Der Gegenstand des Tokens | Zeichenfolge |
--acl | Die Zugriffskontrollliste für das Token | Zeichenfolge |
# 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
Zugriffskontrollliste (ACL)
Wenn Sie ein JWT für die Verwendung mit den Vonage Client SDKs generieren, müssen Sie möglicherweise eine ACL angeben, die zur Festlegung von Berechtigungen für Benutzer verwendet wird.
In der CLI wird eine ACL mit dem Befehl --acl Flagge. In dem folgenden Beispiel sehen Sie die path Objekt, das eine Liste verschiedener Endpunkte enthält, die den verschiedenen dem Benutzer gewährten Berechtigungen entsprechen. Eine vollständige Liste dieser Endpunkte finden Sie in der Datei Authentifizierung Leitfaden.
# 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
Validierung von JWTs
Die vonage jwt validate <token> kann verwendet werden, um zu überprüfen, ob das Token korrekt für Ihre Anwendung signiert ist, aber auch die anderen Ansprüche können überprüft werden. Dies kann hilfreich sein, wenn Sie bei API-Aufrufen Probleme mit der Authentifizierung haben.
Standardmäßig werden der private Schlüssel und die ID der Applikation aus der Konfiguration verwendet; Sie können diese Werte mit vonage auth show.
Wenn Sie ein Token mit einem anderen privaten Schlüssel oder einer anderen Anwendungs-ID validieren wollen,
können Sie die --private-key und --app-id Flaggen, um sie zu überschreiben.
Vonage Berechtigungsnachweise:
| Flagge | Beschreibung | Typ |
|---|---|---|
--app-id | Die ID der zu verwendenden Applikation. Diese ist im Abschnitt "Applications" des Dashboards zu finden oder wird ausgegeben mit vonage apps. | Zeichenfolge |
--private-key | Der Pfad oder Inhalt des privaten Schlüssels. Der Zugriff auf den privaten Schlüssel ist nur möglich, wenn die Anwendung erstellt wird oder wenn Sie die Schlüssel im Dashboard neu generieren. | Zeichenfolge |
**JWT Options:**
| Flagge | Beschreibung | Typ |
|---|---|---|
--sub | Der Gegenstand des Tokens | Zeichenfolge |
--acl | Die Zugriffskontrollliste für das Token | Zeichenfolge |
vonage jwt create <JWT Token> `
--app-id='00000000-0000-0000-0000-000000000000' `
--private-key=./private.key `
--sub='Alice' `
--acl='{"paths":{"/*/rtc/**":{},"/*/users/**":{},"/*/conversations/**":{},"/*/sessions/**":{},"/*/devices/**":{},"/*/image/**":{},"/*/media/**":{},"/*/applications/**":{},"/*/push/**":{},"/*/knocking/**":{},"/*/legs/**":{}}}' `
--exp=872827200
✅ Token was signed with the correct private key
✅ Token has not expired
✅ Application Id [00000000-0000-0000-0000-000000000000] matches [00000000-0000-0000-0000-000000000000]
✅ Subject [Alice] matches [Alice]
✅ ACL matches
✅ [ANY] /*/rtc/**
✅ [ANY] /*/users/**
✅ [ANY] /*/conversations/**
✅ [ANY] /*/sessions/**
✅ [ANY] /*/devices/**
✅ [ANY] /*/image/**
✅ [ANY] /*/media/**
✅ [ANY] /*/applications/**
✅ [ANY] /*/push/**
✅ [ANY] /*/knocking/**
✅ [ANY] /*/legs/**
✅ All checks complete! Token is valid
vonage jwt create <JWT Token> ^
--app-id='00000000-0000-0000-0000-000000000000' ^
--private-key=./private.key ^
--sub='Alice' ^
--acl='{"paths":{"/*/rtc/**":{},"/*/users/**":{},"/*/conversations/**":{},"/*/sessions/**":{},"/*/devices/**":{},"/*/image/**":{},"/*/media/**":{},"/*/applications/**":{},"/*/push/**":{},"/*/knocking/**":{},"/*/legs/**":{}}}' ^
--exp=872827200
✅ Token was signed with the correct private key
✅ Token has not expired
✅ Application Id [00000000-0000-0000-0000-000000000000] matches [00000000-0000-0000-0000-000000000000]
✅ Subject [Alice] matches [Alice]
✅ ACL matches
✅ [ANY] /*/rtc/**
✅ [ANY] /*/users/**
✅ [ANY] /*/conversations/**
✅ [ANY] /*/sessions/**
✅ [ANY] /*/devices/**
✅ [ANY] /*/image/**
✅ [ANY] /*/media/**
✅ [ANY] /*/applications/**
✅ [ANY] /*/push/**
✅ [ANY] /*/knocking/**
✅ [ANY] /*/legs/**
✅ All checks complete! Token is valid