クライアントのクライアント アクセス URL を生成する方法
- [アーティクル]
-
-
クライアント (ブラウザー 💻、モバイル アプリ 📱、または IoT デバイス 💡) では、クライアント アクセス URL を使用してリソースに接続して認証します。 この URL は、wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>
のパターンに従います。 この記事では、クライアント アクセス URL を取得するいくつかの方法について説明します。
Azure portal からコピーする
Azure portal の [キー] タブには、次の図に示すように、クライアント アクセス URL をすばやく生成するためのクライアント URL ジェネレーター ツールがあります。 ここで入力した値は保存されません。
サービス SDK から生成する
Web PubSub サーバー SDK を使用して、同じクライアント アクセス URL を生成できます。
サーバー SDK の概要に関する記事に従って、WebPubSubServiceClient
オブジェクト service
を作成します
WebPubSubServiceClient.getClientAccessToken
を呼び出して、クライアント アクセス URL を生成します。
ユーザー ID を構成する
let token = await serviceClient.getClientAccessToken({ userId: "user1" });
トークンの有効期間を構成する
let token = await serviceClient.getClientAccessToken({
expirationTimeInMinutes: 5,
});
このクライアント アクセス URL を使用して接続するときに、グループ group1
に直接参加できるロールを構成する
let token = await serviceClient.getClientAccessToken({
roles: ["webpubsub.joinLeaveGroup.group1"],
});
このクライアント アクセス URL を使用して接続するときに、クライアントからグループ group1
にメッセージを直接送信できるロールを構成する
let token = await serviceClient.getClientAccessToken({
roles: ["webpubsub.sendToGroup.group1"],
});
このクライアント アクセス URL を使用して接続した後に、クライアントが参加するグループ group1
を構成する
let token = await serviceClient.getClientAccessToken({
groups: ["group1"],
});
サーバー SDK の概要に関する記事に従って、WebPubSubServiceClient
オブジェクト service
を作成します
WebPubSubServiceClient.GetClientAccessUri
を呼び出して、クライアント アクセス URL を生成します。
ユーザー ID を構成する
var url = service.GetClientAccessUri(userId: "user1");
トークンの有効期間を構成する
var url = service.GetClientAccessUri(expiresAfter: TimeSpan.FromMinutes(5));
このクライアント アクセス URL を使用して接続するときに、グループ group1
に直接参加できるロールを構成する
var url = service.GetClientAccessUri(roles: new string[] { "webpubsub.joinLeaveGroup.group1" });
このクライアント アクセス URL を使用して接続するときに、クライアントからグループ group1
にメッセージを直接送信できるロールを構成する
var url = service.GetClientAccessUri(roles: new string[] { "webpubsub.sendToGroup.group1" });
このクライアント アクセス URL を使用して接続した後に、クライアントが参加するグループ group1
を構成する
var url = service.GetClientAccessUri(groups: new string[] { "group1" });
サーバー SDK の概要に関する記事に従って、WebPubSubServiceClient
オブジェクト service
を作成します
WebPubSubServiceClient.get_client_access_token
を呼び出して、クライアント アクセス URL を生成します。
ユーザー ID を構成する
token = service.get_client_access_token(user_id="user1")
トークンの有効期間を構成する
token = service.get_client_access_token(minutes_to_expire=5)
このクライアント アクセス URL を使用して接続するときに、グループ group1
に直接参加できるロールを構成する
token = service.get_client_access_token(roles=["webpubsub.joinLeaveGroup.group1"])
このクライアント アクセス URL を使用して接続するときに、クライアントからグループ group1
にメッセージを直接送信できるロールを構成する
token = service.get_client_access_token(roles=["webpubsub.sendToGroup.group1"])
このクライアント アクセス URL を使用して接続した後に、クライアントが参加するグループ group1
を構成する
token = service.get_client_access_token(groups=["group1"])
サーバー SDK の概要に関する記事に従って、WebPubSubServiceClient
オブジェクト service
を作成します
WebPubSubServiceClient.getClientAccessToken
を呼び出して、クライアント アクセス URL を生成します。
ユーザー ID を構成する
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.setUserId(id);
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
トークンの有効期間を構成する
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.setExpiresAfter(Duration.ofDays(1));
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
このクライアント アクセス URL を使用して接続するときに、グループ group1
に直接参加できるロールを構成する
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.addRole("webpubsub.joinLeaveGroup.group1");
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
このクライアント アクセス URL を使用して接続するときに、クライアントからグループ group1
にメッセージを直接送信できるロールを構成する
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.addRole("webpubsub.sendToGroup.group1");
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
このクライアント アクセス URL を使用して接続した後に、クライアントが参加するグループ group1
を構成する
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.setGroups(Arrays.asList("group1")),
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
実際のコードでは、通常、クライアント アクセス URL を生成するロジックをホストするサーバー側があります。 クライアント要求が入ると、サーバー側では、一般的な認証/認可ワークフローを使用してクライアント要求を検証できます。 クライアント アクセス URL を返すことができるのは、有効なクライアント要求だけです。
Generate Client Token REST API を呼び出す
サービスで Microsoft Entra ID を有効にし、Microsoft Entra トークンを使用して Generate Client Token REST API を呼び出して、クライアントで使用するトークンを取得できます。
アプリケーションからの認可に関する記事に従って、Microsoft Entra ID を有効にします。
Microsoft Entra トークンの取得に関する記事に従って、Postman で Microsoft Entra トークンを取得します。
Microsoft Entra トークンを使用して、Postman で :generateToken
を呼び出します。
URI には「https://{Endpoint}/api/hubs/{hub}/:generateToken?api-version=2022-11-01
」と入力します
[認証] タブで、[ベアラー トークン] を選択し、前の手順でフェッチした Microsoft Entra トークンを貼り付けます
[送信] を選択すると、応答にクライアント アクセス トークンが表示されます。
{
"token": "ABCDEFG.ABC.ABC"
}
クライアント アクセス URI は、wss://<endpoint>/client/hubs/<hub_name>?access_token=<token>
形式です