認証¶
概要¶
Sora Cloud では JWT 形式のアクセストークンを
Sora の "type": "connect"
時の metadata
に access_token
を含めて認証を行います。
metadata¶
type: connnect
の metadata
に "access_token": "<JWT>"
を含めます。
{
"type": "connect",
"role": "sendrecv",
"channel_id": "sora-cloud@shiguredo#1490",
"multistream": "true",
"metadata": {
"access_token": "<JWT>"
}
}
JWT 仕様¶
- typ:
JWT
- alg:
HS256
JWT 利用の注意点¶
Sora Cloud で利用する特定のトークンの失効させる方法は API キーを再生成するしか方法がありません。
そのため、本番環境向けには必ず nbf
/ exp
を付けて短い時間しか利用できないトークンを発行するようにしてください。
Sora Cloud の認証では JWT 的なチェックのみで iss
の存在有無などのチェックは行いません。
認証ウェブフックを設定し、プロジェクト側でのチェックを行うようにしてください。
利用可能な登録済みクレーム¶
exp¶
- クレーム:
exp
- 型:
integer
- 要求:
オプション
- RFC:
トークンが利用できなくなる時間 (UTC) を指定できます。
nbf¶
- クレーム:
nbf
- 型:
integer
- 要求:
オプション
- RFC:
トークンが利用できるようになる時間 (UTC) を指定できます。
jti¶
- クレーム:
jti
- 型:
string
- 要求:
オプション
オプションプライベートクレーム¶
channel_id¶
危険
channel_id クレーム
を指定しない場合すべてのチャネルにアクセス可能になるため、本番環境では channel_id クレーム
を指定する実装にしてください。
- クレーム:
channel_id
- 型:
string
- 要求:
オプション
channel_id クレームが含まれていた場合、Sora Cloud が認証時に channel_id と一致しているかどうかを確認します。
role¶
- クレーム:
role
- 型:
string
- 要求:
オプション
role クレームが含まれていた場合、Sora Cloud が認証時に role と一致しているかどうかを確認します。
指定可能な文字列は sendrecv / recvonly / sendonly です。
max_channel_connections¶
- クレーム:
max_channel_connections
- 型:
integer
- 要求:
オプション
認証時にチェックするチャネルの最大接続数を指定できます。
参考¶
シーケンス図¶
アクセストークンでの認証成功¶
アクセストークン生成 API 利用あり
Sora 認証ウェブフックの設定あり
sequenceDiagram autonumber participant client as クライアント participant sora as WebRTC SFU Sora participant cloud as Sora Cloud participant app as アプリケーションサーバー app->>cloud: アクセストークン API<br> cloud-->>app: 200 OK<br>"access_token": "<JWT>" app->>client: Sora Cloud 認証用の JWT 払い出し client->>sora: "type": "connection"<br>"metadata": {"access_token": "<JWT>"} sora->>cloud: 認証ウェブフック note over cloud: アクセストークン検証成功 cloud->>app: 認証ウェブフック app-->>cloud: 200 OK<br>"allowed": true cloud-->>sora: 200 OK<br>"allowed": true sora->>client: "type": "offer" client->>sora: "type": "answer" note over client,sora: WebRTC 確立