セキュアな運用のためのnameの指定の推奨について
Channel や Member などのリソースは、自動生成される ID とは別に、ユーザーがオプショナルな値として指定できる Name を持っています。SkyWay では、リソースを作成する際に Name の指定を推奨しています。
JavaScript SDK の Room ライブラリによるサンプルコードを以下に示します。
const room = await SkyWayRoom.Create(context, { type: "p2p", name: "lesson-room-1", }); const me = await room.join( name: "alice" );
Name を利用することで、SkyWay Auth Token での scope を、リソース作成後に特定される id
ではなく事前に決定した name
から指定することができます。以下のように、リソース作成より前に権限の認可条件を指定できることで、よりセキュアかつ便利な運用が可能です。
scope: { app: { id: "sample-app-id", actions: ["read"], channels: [ { name: "lesson-room-1", actions: ["create", "delete"], members: [ { name: "alice", actions: ["create", "delete"], publication: { actions: ["create", "delete"] }, subscription: { actions: ["create", "delete"] } } ], }, ] } }
ワイルドカードの利用について
SkyWay Auth Token における Channel や Member の Nameには、ワイルドカードを利用することができます。
ワイルドカードを利用する場合には version を 2 以上に設定する必要があります
例えば、student-room-1 や student-room-2 には入ることができるが、teacher-room-1 には入れない、というSkyWay Auth Tokenを上記の alice のために作成する場合は以下のように作成します。
{ jti: "aa15ef18-08a4-4755-a9be-9f2d3351465e", iat: 1577804400, exp: 1577904400, version: 2, scope: { app: { id: "sample-app-id", actions: ["read"], channels: [ { name: "student-room-*", // ワイルドカードを利用 actions: ["create", "delete"], members: [ { name: "alice", actions: ["create", "delete"], publication: { actions: ["create", "delete"] }, subscription: { actions: ["create", "delete"] } } ], }, ] } } }