JWTの管理

JSONウェブトークン(JWT) は、2つの当事者間で転送されるクレームを表す、コンパクトでURLセーフな手段です。Vonageは、フロントエンドとバックエンドの両方で、様々なAPIへの認証にJWTを使用しています。 認証 を案内する。

JWTの生成

Vonage CLI には vonage jwt create コマンドを使ってJWTを生成することができる。このコマンドを使うには、自分の app-id そして private-key.秘密鍵は、アプリケーションのダッシュボードから生成されるか、以下のコマンドを実行して生成されます。 vonage apps create.このコマンドの詳細は アプリケーションの管理.

JWTを作成する際、秘密鍵ファイルを指すファイル・パスを渡すか、CLI用にこの情報を保存することができる。 vonage auth set 参照 これ を参照)。その後、秘密鍵の内容は .vonagerc ファイルまたは $HOME/.vonage/config.json.

Vonageの資格:

フラッグ 説明 タイプ
--app-id 使用するアプリケーションのID。これはダッシュボードの "Applications "セクションに記載されています。 vonage apps. ストリング
--private-key 秘密鍵のパスまたは内容。秘密鍵にアクセスできるのは、アプリケーションを作成するときか、ダッシュボードで鍵を再生成するときだけです。 ストリング

**JWT Options:**
フラッグ 説明 タイプ
--exp トークンの有効期限 Numbers
--ttl 秒単位で生きる時間 Numbers
--sub トークンの主題 ストリング
--acl トークンのアクセス制御リスト ストリング
# 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

アクセス制御リスト(ACL)

Vonage Client SDKsで使用するためにJWTを生成している場合、ユーザーのアクセス許可を指定するために使用されるACLを指定する必要がある場合があります。

CLIでは、ACLは --acl フラグを使用します。下の例では path オブジェクトが含まれます。このオブジェクトには、ユーザーに付与されたさまざまなパーミッションに対応する、さまざまなエンドポイントのリストが含まれます。これらのエンドポイントの完全なリストは 認証 を案内する。

# 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

JWTの検証

について vonage jwt validate <token> コマンドは、トークンがアプリケーションに正しく署名されているかどうかをチェックするのに使えるが、他のクレームもチェックできる。これは、APIコールを行う際に認証の問題が発生した場合に役立つ。

デフォルトでは、設定の秘密鍵とアプリケーションIDが使用されます。 vonage auth show.

別の秘密鍵やアプリケーションIDでトークンを検証したい場合は、次のようにします、 を使うことができます。 --private-key そして --app-id フラグで上書きする。

Vonageの資格:

フラッグ 説明 タイプ
--app-id 使用するアプリケーションのID。これはダッシュボードの "Applications "セクションに記載されています。 vonage apps. ストリング
--private-key 秘密鍵のパスまたは内容。秘密鍵にアクセスできるのは、アプリケーションを作成するときか、ダッシュボードで鍵を再生成するときだけです。 ストリング

**JWT Options:**
フラッグ 説明 タイプ
--sub トークンの主題 ストリング
--acl トークンのアクセス制御リスト ストリング
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