認証
Vonage APIは、お使いの製品によって異なる認証方法をサポートしています:
| API | APIキーとシークレット(ヘッダー) | JSONウェブトークン(JWT) |
|---|---|---|
| アカウント | ||
| アプリケーション | ||
| Audit | ||
| 会話 | ||
| コンバージョン | ||
| デバイスの位置情報検索 | ||
| 派遣 | ||
| アイデンティティ・インサイト | ||
| メディア | ||
| メッセージ1 | ||
| Numbers | ||
| Numbersインサイト | ||
| 価格 v1 | ||
| 価格 v2 | ||
| プログラマブルSIP | ||
| オンデマンドの品質 | ||
| 再編集 | ||
| レポート | ||
| ショートメール | ||
| ベリファイ(レガシー) | ||
| Verify2 | ||
| 声3 | ||
| ビデオ |
1 MessagesはJWT認証とBasic認証の両方をサポートしていますが、Basic認証はWebhookやACLなどの高度な機能をサポートしていません。ほとんどの場合、JWT認証をお勧めします。参照 Messages API 認証
2 VerifyはJWT認証とBasic認証の両方をサポートしているが、Basic認証はWebhookやACLなどの高度な機能をサポートしていない。
3 SIPトランキングは次のような用途に使用します。 ダイジェスト認証 メソッドに、ユーザーとしてAPI Keyを、パスワードとしてAPI Secretを指定します。
内容
この文書では、以下の手段による認証について学ぶことができる:
APIキーとシークレット
Vonageアカウントを作成すると、APIキーとシークレットが作成されます。これらはお客様の アカウント設定 をVonage Dashboardに入力してください。これらは常に安全で これらの詳細は決して共有しないでくださいコードベースに追加する場合は、悪意を持って使用する人と共有されないように注意してください。もし メッセージ署名を使用して生成される。 SIGNATURE_SECRET よりも API_SECRETどちらの値も アカウント設定.
注意:秘密は常に安全に保ち、決して共有してはならない。コードベースに追加するときは、悪意を持って使用する可能性のある人と共有されないように注意してください。詳しくは Vonageアカウントのベストセキュリティプラクティス.
VonageのAPIは、さまざまな方法でAPIキーとシークレットを要求します。
基本認証
新しいVonage APIの多くは、Base64でエンコードされたAPIキーとシークレットを使って認証を行う必要があります。 Authorization ヘッダーを使用する。
これらのAPIでは、以下の方法でAPIキーとシークレットを送信する:
Authorization: Basic base64(API_KEY:API_SECRET)
APIキーが aaa012 そしてあなたのAPIシークレットは abc123456789でキーとシークレットを連結する。 : (コロン)記号を使い、Base64エンコーディングでエンコードすると、次のような値になる:
Authorization: Basic YWFhMDEyOmFiYzEyMzQ1Njc4OQ==
Base64エンコードされた文字列を生成するウェブサイトはこちら:
- 一般的なことだ: Base64エンコードとデコード
さまざまなプログラミング言語でBase64文字列をエンコードする方法の詳細は、以下のウェブサイトで見ることができる:
- C#/.NET: Base64文字列をエンコード、デコードするには? StackOverflowより
- 行くんだ: Base64エンコーディング 模範解答より
- Javaだ: ベース64
- JavaScriptだ: Base64エンコードとデコード MDNウェブドキュメントより
- PHPだ: ベース64_エンコード
- パイソン ベース64
- ルビー ベース64
- スウィフト SwiftでのBase64エンコードとデコード iOS Developer Tipsより
秘密のローテーション
1つのAPIキーに対して、同時に2つのAPIシークレットを使用することができる。こうすることで、本番ネットワークで既存のAPIシークレットを失効させる前に、2つ目のAPIシークレットを作成してテストすることができる。APIシークレットのローテーションは、以下の手順で行う:
- に2つ目のAPIシークレットを作成する。 アカウント設定 または 秘密回転API.
- Vonage APIへの呼び出しに新しく作成したAPIシークレットを使用するように、1つまたは複数のサーバーを更新します。
- 接続に問題がないことをテストし、残りのサーバーにAPIシークレットアップデートを展開する。
- 置換されたAPIシークレットを削除する
JSONウェブトークン
JSONウェブトークン(JWT) は、2者間で転送されるクレームを表す、コンパクトでURLセーフな手段である。JWTを使用するAPIの完全なリストについては、表を参照してください。 上記.
ヘッダーとペイロード
JWTはヘッダーとペイロードで構成される。ヘッダーの値は
| 名称 | 説明 | 必須 |
|---|---|---|
alg | JWTの生成に使用された暗号化アルゴリズム。 RS256 がサポートされている。 | |
typ | トークンの構造。以下のように設定します。 JWT. |
ペイロードクレームの値は以下の通り:
| 名称 | 説明 | 必須 |
|---|---|---|
application_id | Vonageによってアプリケーションに割り当てられた固有のID。 | |
iat | JWTが要求された瞬間を示すUTC + 0のUNIXタイムスタンプ。 | |
jti | JWTの一意な文字列識別子。 | |
nbf | JWTが有効になった瞬間を示すUTC + 0のUNIXタイムスタンプ。 | |
exp | JWTが無効になった瞬間を示すUTC + 0のUNIXタイムスタンプ。最小値はJWTが生成されてから30秒。最大値はJWTが生成されてから24時間。デフォルト値はJWT生成から15分。 |
JWTの生成
Vonage CLIを使用してJWTを生成する
について Vonage CLI はJWTを生成するコマンドを提供する。
アプリケーション用にJWTを生成する例を以下に示す:
# 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
当該秘密鍵は、アプリケーション・ダッシュボードから生成されるか、あるいは vonage apps create.この情報は
を実行することで、CLI用にこの情報を保存することができます。 vonage auth set.秘密鍵の内容は、次のいずれかに保存される。
に保存されます。 .vonagerc ファイルまたは $HOME/.vonage/config.json.
Vonage CLI の詳細については、その GitHub のリポジトリ.
JWT を生成するために Vonage ライブラリを使用する例を以下に示します。 以下.Vonage ライブラリを使用していない場合は、以下を参照してください。 RFC 7519 JWTを実装する。
VonageクライアントSDK
ヴォネージ クライアント そして ビデオ SDKは、クライアントがVonageに接続する際の認証にJWTを使用します。これらのJWTは、提供されたアプリケーションIDと秘密鍵を使用して生成されます。 新規アプリケーション作成時.
クレーム
それを使って private.key とアプリケーション ID を入力すると、新しい JWT を作成できます。ユーザーをVonageクライアントにログインさせるために、JWTは以下のクレームを必要とします:
Vonage Client SDK
| クレーム | 説明 |
|---|---|
sub | 件名」です。この場合の件名は、Vonage Applicationsに作成され関連付けられたユーザーの名前になります。 |
acl | アクセス制御リスト。Client SDKは、これをユーザーのアクセス許可システムとして使用します。詳しくは ACLの概要. |
application_id | これは作成したVonage ApplicationsのIDです。 |
iat | "Issued at time" これはJWTが発行された時間であり、unixのエポックタイムで表される。 |
jti | "JWT ID".これは、このJWTの一意な文字列識別子である。 |
exp | "有効期限" これは、JWTが期限切れになる将来の時間であり、unixのエポックタイムで表される。 |
について exp クレームは任意である。 クレームが提供されない場合、JWTはデフォルトで15分で期限切れとなる。JWTの最大有効期限は24時間である。新しいJWTを作成するのは些細なことであり、いくつかのJWTは複数の広範囲に及ぶ権限を持つことができるため、JWTは通常、短命であるべきである。
Client SDK JWT ペイロードのサンプル
すべてのクレームが提供されると、結果としてクレームはこのように表示される:
{
"iat": 1532093588,
"jti": "705b6f50-8c21-11e8-9bcb-595326422d60",
"sub": "alice",
"exp": "1532179987",
"acl": {
"paths": {
...
}
},
"application_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab"
}
( ... スニペットは切り捨て)
VonageビデオクライアントSDK
| クレーム | 説明 |
|---|---|
sub | 件名」。この場合、件名は以下の文字列となります。 video. |
acl | アクセス制御リスト。Client SDKは、これをユーザーのアクセス許可システムとして使用します。詳しくは ACLの概要. |
application_id | これは作成したVonage ApplicationsのIDです。 |
session_id | のIDである。 セッション あなたが作ったものだ。 |
scope | これはトークンのスコープです。文字列 session.connect. |
role | これはトークンの役割です。文字列 価値観 このトークンにどのようなパーミッションを与えたいかによって異なります。 |
data | このカスタム・メタデータは、トークンを説明するためにオプションで追加できます。これは文字列で 1000文字. |
initial_layout_class_list | これにより、ブロードキャスト時にオプションで、最初の レイアウトクラスリスト クライアントが発行したストリームに対して。 |
iat | "Issued at time" これはJWTが発行された時間であり、unixのエポックタイムで表される。 |
jti | "JWT ID".これは、このJWTの一意な文字列識別子である。 |
exp | "有効期限" これは、JWTが期限切れになる将来の時間であり、unixのエポックタイムで表される。 |
について exp クレームは任意である。 クレームが提供されない場合、JWTはデフォルトで24時間で失効します。Video SDK JWTの最大有効期限は30日です。新しいJWTを作成するのは簡単であり、JWTの中には複数の広範囲に及ぶ権限を持つものもあるため、JWTは通常、短命であるべきです。常に exp の時間を、アプリケーションで実行可能な最小限の時間に短縮する。
サンプル動画 Client SDK JWT ペイロード
{
"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"
}
アクセス制御リスト(ACL)
の中で サンプルJWTリクエスト・ペイロード 上記の acl クレームには paths オブジェクトが含まれます。パスオブジェクトには、Client SDK を使用する際にユーザーが持つ特定のパーミッションに対応するエンドポイントのリストが含まれています。
以下は、ユーザーにアクセス権を付与できるエンドポイントのリストです:
| エンドポイント | 説明 | 必須 |
|---|---|---|
/*/rtc/** | イベントを受信し、メトリクスを送信するためのシグナリング・セッションを作成する | アプリ内通話/メッセージ |
/*/sessions/** | In-App Voiceまたはチャットユーザーとしてログインする。 | アプリ内通話/メッセージ |
/*/users/** | ユーザー会話、ユーザーセッション、ユーザーオブジェクトの取得 | アプリ内通話/メッセージ |
/*/conversations/** | 会話の作成と管理、メッセージの送受信 | アプリ内通話/メッセージ |
/*/knocking/** | 電話の開始 | アプリ内通話 |
/*/devices/** | プッシュ通知を受け取るデバイスを登録する | アプリ内通話/メッセージ |
/*/legs/** | 会話における足の作成と管理 | アプリ内通話 |
/*/session/** | ビデオセッションに接続する | ビデオ |
生成するユーザには、関連するパスにのみアクセスする権限を与える必要があります。例えば、Voice Client SDKユーザが自分のUserオブジェクトや他のユーザの情報を取得する必要がない場合は users のパスを追加します。さらに説明するために /*/conversations/** パスをJWTのACLに追加することで、ユーザーは会話の作成と管理ができるようになる。また、これが のみ ACLが設定されている場合、ユーザーは /conversations エンドポイントである。
注:ACLパスにワイルドカードを使う(例えば /*/conversations/**) は、JWT トークンがそのエンドポイントのすべての操作にアクセスできるようにします。以下に示すように、ACLパスをより細かく制御することを強く推奨します。
粒度の細かいACLパス
上記では、エンドポイントへのアクセスをユーザーに許可する方法について見てきました。サブパスやHTTPメソッドに基づいてアクセスを制限したり付与したりすることもできます。これにより、トークンが持つべきパーミッションを非常に細かく定義することができます。例えば、Voice Client SDK アプリケーションで、ユーザが会話に関する情報を取得できるようにしたいとします:
{
"acl": {
"paths": {
"/*/conversations/**": {}
}
}
}
上記のACLパスでは 誰でも にリクエストするために、このトークンを使用する。 いずれも VonageアプリケーションにリンクされたConversation APIエンドポイント。このトークンを持っている人は、あなたのアプリケーションで進行中のConversationのリストを取得したり、新しいConversationを作成したりすることができます。これを軽減するために、アクセス可能なパスと、そのパスで使用できるHTTPメソッドを指定することができます。
{
"acl": {
"paths": {
"/*/conversations/*": {
"methods": [
"GET"
]
}
}
}
}
この新しいACLパスにより、このトークンを持つ人は誰でも次のことができるようになります。 のみ を作る GET リクエストは特定の会話に限定され、それ以上のサブパスや操作はできない。これは以前よりはるかに制限的だ。
クライアントSDKの最小ACLパス
以下は、Vonage Client SDKs で様々なアクションを実行するために必要な最小 ACL パスです。ユースケースに基づいてより多くのエンドポイントのサポートを追加するには ACLテーブル 上記のように、可能な限り限定的に追加する。
これは、セッションを作成する基本的なユースケースをサポートしている。 serverCall, reconnectCallまた、電話に出たり、拒否したり、電話を切ったりすることができる。
{
"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"] }
}
}
}
ベースとなるコールケースに加え、以下のようなSDK関数を使用できるようになる。 mute, sayなど。これはチャット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"] }
}
}
}
基本的な呼び出しケースに加えて、SDK関数を使用してプッシュトークンを管理できるようになります。必要に応じて、サポートしたいデバイス・メソッドを追加してください。
{
"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": [] }
}
}
}
デバイスの方法:
- POST - 新しいユーザーデバイスを登録します。
- GET - ユーザーの登録済みデバイスを取得します。
- PUT - ユーザーの登録デバイスを更新する。
- DELETE - ユーザーの登録デバイスを削除します。
ベースとなるコールケースに加え、SDK関数を使用して特定のユーザーに関する情報を取得できるようになります。
{
"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"] },
}
}
}
ビデオSDKを使用したセッションへの接続をサポートします。
{
"acl": {
"paths": {
"/*/session/**": {}
}
}
}
Vonage CLIを使用したJWTの生成
について サーバーSDK にはJWTトークンを生成するためのメソッドが含まれています。ただし Vonage CLI を使うこともできる。 これは特にテスト中に役立つ。
# 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
サーバーSDKの使用
Vonageアプリケーションの付属サーバーがクライアントSDK用のJWTを生成することが期待されます。以下はVonage Server SDKを使用した例です:
バージョン3 Vonage Node Server SDK にはJWTトークンを生成するためのパッケージが含まれています。また、JWT 適切なクレームを使って.
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,
});
について Vonage JWT JDK ライブラリ は、クレームを含む署名付きJWTを生成するために使用できる。
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()
について Vonage JWT JDK ライブラリ は、クレームを含む署名付きJWTを生成するために使用できる。
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();
について Vonage .NET SDK は、クレームを含む署名付きJWTを生成するために使用できる。
例として、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>
{
...
},
}
},
};
JWTを生成するにはいくつかの方法がある。
静的メソッド CreateToken にある。 Jwt クラスである:
var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_APPLICATION_PRIVATE_KEY_PATH);
var token = Jwt.CreateToken(credentials.ApplicationId, credentials.ApplicationKey, payload);
または GenerateToken での Jwt インスタンスだ:
// Using the credentials instance
var result = tokenGenerator.GenerateToken(credentials, payload);
// Using ApplicationId and ApplicationKey values
var result = tokenGenerator.GenerateToken(credentials.ApplicationId, credentials.ApplicationKey, payload);
現在のバージョンは Vonage PHPサーバーSDK キーペア認証を使用する場合、適切なクレームを含むJWTを作成することもできます。
$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();
について Vonage Python JWT ライブラリ は、デフォルトまたはカスタムのクレームで署名付きJWTを生成するために使用できます。
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)
について Vonage JWT JDK ライブラリ は、クレームを含む署名付きJWTを生成するために使用できる。
@builder = Vonage::JWTBuilder.new(application_id: YOUR_APPLICATION_ID, private_key: YOUR_PRIVATE_KEY)
@token = @builder.jwt.generate
( ... スニペットは切り捨て)