次の方法で共有


アクセス トークンの作成と管理

アクセス トークンを使うと、Azure Communication Services SDK は、特定の ID として、Azure Communication Services に対して直接認証を行うことができます。 ユーザーがアプリケーション内の通話またはチャット スレッドに参加できるようにする場合は、アクセス トークンを作成する必要があります。

この記事では、Azure Communication Services SDK を使って ID を作成し、アクセス トークンを管理する方法を説明します。 運用のユース ケースでは、「モバイル アーキテクチャの設計」で説明されているように、サーバー側のサービスでアクセス トークンを生成することをお勧めします。

前提条件

環境を設定する

拡張機能の追加

az extension コマンドを使って、Azure CLI 用の Azure Communication Services 拡張機能を追加します。

az extension add --name communication

Azure CLI へのサインイン

Azure CLI にサインインする必要があります。 ターミナルから az login コマンドを実行してサインインし、資格情報を入力できます。

(省略可能) 接続文字列を渡さずに Azure CLI の ID 操作を使用する

--connection_string を使用して接続文字列を渡すことなく Azure CLI の ID 操作を使用するために、AZURE_COMMUNICATION_CONNECTION_STRING 環境変数を構成できます。 環境変数を構成するには、コンソール ウィンドウを開き、次のタブでオペレーティン グシステムを選択します。 <yourConnectionString> は、実際の接続文字列に置き換えてください。

コンソール ウィンドウを開き、次のコマンドを入力します。

setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"

環境変数を追加した後、コンソール ウィンドウを含め、環境変数を読み取る必要がある実行中のプログラムの再起動が必要になる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

環境変数にアクセス トークンを格納する

環境変数を構成するには、コンソール ウィンドウを開き、以下のタブからお使いのオペレーティン グシステムを選択します。 <yourAccessToken> は、実際のアクセス トークンに置き換えてください。

コンソール ウィンドウを開き、次のコマンドを入力します。

setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"

環境変数を追加した後、コンソール ウィンドウを含め、環境変数を読み取る必要がある実行中のプログラムの再起動が必要になる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

操作

ID の作成

アクセス トークンを作成するには、ID が必要です。 Azure Communication Services では、軽量の ID ディレクトリが保持されます。 user create コマンドを使用して、一意の Id を持つディレクトリに新しいエントリを作成します。 ID は、後でアクセス トークンを発行するのに必要になります。

az communication identity user create --connection-string "<yourConnectionString>"
  • <yourConnectionString> を対象の接続文字列に置き換えてください。

ID を作成し、同じ要求内でアクセス トークンを発行する

次のコマンドを実行して、Communication Services ID を作成し、同時にそのアクセス トークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 詳細は、「Azure Communication Services への認証」でサポートされているアクションの一覧を参照してください。

az communication identity token issue --scope chat --connection-string "<yourConnectionString>"

コードで次の置き換えを行います。

  • <yourConnectionString> を対象の接続文字列に置き換えてください。

アクセス トークンの発行

次のコマンドを実行して、Communication Services ID のアクセス トークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 詳細は、「Azure Communication Services への認証」でサポートされているアクションの一覧を参照してください。

az communication identity token issue --scope chat --user "<userId>" --connection-string "<yourConnectionString>"

コードで次の置き換えを行います。

  • <yourConnectionString> を対象の接続文字列に置き換えてください。
  • <userId> を対象のユーザー ID に置き換えてください。

アクセス トークンは有効期間の短い資格情報であるため、再発行が必要になります。 そうしなければ、アプリケーションのユーザーの利便性が損なわれる可能性があります。 expires_on 応答プロパティは、アクセス トークンの有効期間を示します。

複数のスコープを持つアクセス トークンを発行する

次のコマンドを実行して、Communication Services ID の複数のスコープを持つアクセス トークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 詳細については、「ID モデル」のサポートされるアクションの一覧を参照してください。

az communication identity token issue --scope chat voip --user "<userId>" --connection-string "<yourConnectionString>"

コードで次の置き換えを行います。

  • <yourConnectionString> を対象の接続文字列に置き換えてください。
  • <userId> を対象のユーザー ID に置き換えてください。

アクセス トークンは有効期間の短い資格情報であるため、再発行が必要になります。 そうしなければ、アプリケーションのユーザーの利便性が損なわれる可能性があります。 expires_on 応答プロパティは、アクセス トークンの有効期間を示します。

Teams ユーザーの Microsoft Entra アクセス トークンを通信 ID アクセス トークンと交換する

token get-for-teams-user コマンドを使用して、Azure Communication Services SDK で使用できる Teams ユーザーのアクセス トークンを発行します。

az communication identity token get-for-teams-user --aad-token "<yourAadToken>" --client "<yourAadApplication>" --aad-user "<yourAadUser>" --connection-string "<yourConnectionString>"

コードで次の置き換えを行います。

  • <yourConnectionString> を対象の接続文字列に置き換えてください。
  • <yourAadUser> をお使いの Microsoft Entra userId に置き換えます。
  • <yourAadApplication> を Microsoft Entra アプリケーション ID に置き換えます。
  • <yourAadToken> をお使いの Microsoft Entra アクセス トークンに置き換えます。

アクセス トークンの取り消し

アクセス トークンを明示的に取り消すことが必要な場合があります。 例えば、アプリケーションのユーザーがサービスの認証に使用するパスワードを変更した場合などに行います。 token revoke コマンドを使用すると、ID に対して発行されたすべてのアクティブなアクセス トークンを無効にできます。

az communication identity token revoke --user "<userId>" --connection-string "<yourConnectionString>"

コードで次の置き換えを行います。

  • <yourConnectionString> を対象の接続文字列に置き換えてください。
  • <userId> を対象のユーザー ID に置き換えてください。

ID の削除

ID を削除すると、有効なアクセス トークンがすべて取り消され、その ID に対するアクセス トークンが今後発行されなくなります。 そうすると、その ID に関連付けられているすべての永続コンテンツも削除されます。

az communication identity user delete --user "<userId>" --connection-string "<yourConnectionString>"

コードで次の置き換えを行います。

  • <yourConnectionString> を対象の接続文字列に置き換えてください。
  • <userId> を対象のユーザー ID に置き換えてください。

前提条件

最終的なコード

最終的なコードは GitHub にあります。

環境を設定する

新しい C# アプリケーションを作成する

  1. cmd、PowerShell、Bash などのコマンド プロンプト ウィンドウで、dotnet new コマンドを実行して、AccessTokensQuickstart という名前の新しいコンソール アプリを作成します。 このコマンドにより、1 つのソース ファイル Program.cs を使用する簡単な Hello World C# プロジェクトが作成されます。

    dotnet new console -o AccessTokensQuickstart
    
  2. ディレクトリを、新しく作成したアプリ フォルダーに変更し、dotnet build コマンドを使用して自分のアプリケーションをコンパイルします。

    cd AccessTokensQuickstart
    dotnet build
    

    Hello World という簡単な出力が表示されます。 正しく表示される場合は、セットアップは機能しており、Azure Communication Services のコードの記述を始められます。

パッケージをインストールする

まだアプリケーション ディレクトリにいる間に、dotnet add package コマンドを使用して、.NET 用の Azure Communication Services ID ライブラリ パッケージをインストールします。

dotnet add package Azure.Communication.Identity

アプリのフレームワークを設定する

プロジェクト ディレクトリで、次の手順を行います。

  1. テキスト エディターで Program.cs ファイルを開きます。
  2. using ディレクティブを追加して、Azure.Communication.Identity 名前空間を含めます。
  3. 非同期コードをサポートするには、Main メソッドの宣言を更新します。

開始するには、次のコードを実行します。

using System;
using Azure;
using Azure.Core;
using Azure.Communication.Identity;

namespace AccessTokensQuickstart
{
    class Program
    {
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            Console.WriteLine("Azure Communication Services - Access Tokens Quickstart");

            // Quickstart code goes here
        }
    }
}

クライアントを認証する

接続文字列を使用して CommunicationIdentityClient を初期化します。 Main メソッドに追加した次のコードは、COMMUNICATION_SERVICES_CONNECTION_STRING という名前の環境変数からリソースの接続文字列を取得します。

詳しくは、「Communication Services のリソースを作成して管理する」 > 「接続文字列を格納する」をご覧ください。

// This code demonstrates how to retrieve your connection string
// from an environment variable.
string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
var client = new CommunicationIdentityClient(connectionString);

また、以下のコードを実行することで、エンドポイントとアクセスキーを分離することができます。

// This code demonstrates how to fetch your endpoint and access key
// from an environment variable.
string endpoint = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_ENDPOINT");
string accessKey = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_ACCESSKEY");
var client = new CommunicationIdentityClient(new Uri(endpoint), new AzureKeyCredential(accessKey));

Microsoft Entra アプリケーションを既に設定してある場合は、Microsoft Entra ID を使って認証を行うことができます。

TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationIdentityClient(new Uri(endpoint), tokenCredential);

ID の作成

アクセス トークンを作成するには、ID が必要です。 Azure Communication Services では、軽量の ID ディレクトリが保持されます。 createUser メソッドを使用して、一意の Id を持つディレクトリに新しいエントリを作成します。 後で ID を使ってアクセス トークンを発行します。

var identityResponse = await client.CreateUserAsync();
var identity = identityResponse.Value;
Console.WriteLine($"\nCreated an identity with ID: {identity.Id}");

受け取った ID とアプリケーション ユーザーへのマッピングを格納します (たとえば、アプリケーション サーバー データベースに格納します)。

アクセス トークンを発行する

Communication Services の ID を取得したら、GetToken メソッドを使用してその ID 用のアクセストークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 詳細については、「ID モデル」のサポートされるアクションの一覧を参照してください。 また、Azure Communication Service の ID の文字列表現に基づいて、communicationUser の新しいインスタンスを構築することもできます。

// Issue an access token with a validity of 24 hours and the "voip" scope for an identity
var tokenResponse = await client.GetTokenAsync(identity, scopes: new [] { CommunicationTokenScope.VoIP });

// Get the token from the response
var token =  tokenResponse.Value.Token;
var expiresOn = tokenResponse.Value.ExpiresOn;
Console.WriteLine($"\nIssued an access token with 'voip' scope that expires at {expiresOn}:");
Console.WriteLine(token);

アクセス トークンは有効期間の短い資格情報であるため、再発行が必要になります。 そうしないと、アプリケーションのユーザー エクスペリエンスが損なわれる可能性があります。 expiresOn プロパティは、アクセス トークンの有効期間を示します。

カスタム トークンの有効期限を設定する

既定のトークンの有効期限は 24 時間ですが、省略可能なパラメーター tokenExpiresIn に 1 時間から 24 時間の値を指定することで有効期限を構成できます。 新しいトークンを要求するときは、トークンの有効期限に対して通信セッションの予想される一般的な長さを指定します。

// Issue an access token with a validity of an hour and the "voip" scope for an identity 
TimeSpan tokenExpiresIn = TimeSpan.FromHours(1);
CommunicationTokenScope[] scopes = new[] { CommunicationTokenScope.VoIP };
var tokenResponse = await client.GetTokenAsync(identity, scopes, tokenExpiresIn);

同じ要求で id を作成し、トークンを発行する

CreateUserAndTokenAsync メソッドを使用して、Communication Services ID を作成し、同時にそのアクセス トークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 詳細は、「Azure Communication Services への認証」でサポートされているアクションの一覧を参照してください。

// Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
var identityAndTokenResponse = await client.CreateUserAndTokenAsync(scopes: new[] { CommunicationTokenScope.VoIP });

// Retrieve the identity, token, and expiration date from the response
var identity = identityAndTokenResponse.Value.User;
var token = identityAndTokenResponse.Value.AccessToken.Token;
var expiresOn = identityAndTokenResponse.Value.AccessToken.ExpiresOn;
Console.WriteLine($"\nCreated an identity with ID: {identity.Id}");
Console.WriteLine($"\nIssued an access token with 'voip' scope that expires at {expiresOn}:");
Console.WriteLine(token);

アクセス トークンを更新する

アクセス トークンを更新するには、CommunicationUserIdentifier オブジェクトのインスタンスを GetTokenAsync に渡します。 この Id を保存してある場合、新しい CommunicationUserIdentifier を作成する必要があるときは、次のように保存されている IdCommunicationUserIdentifier コンストラクターに渡して、それを行うことができます。

var identityToRefresh = new CommunicationUserIdentifier(identity.Id);
var tokenResponse = await client.GetTokenAsync(identityToRefresh, scopes: new [] { CommunicationTokenScope.VoIP });

アクセス トークンの取り消し

アクセス トークンを明示的に取り消すことが必要な場合があります。 たとえば、アプリケーションのユーザーがサービスへの認証に使うパスワードを変更するときなどです。 RevokeTokensAsync メソッドを使用すると、ID に対して発行されたすべてのアクティブなアクセス トークンを無効にできます。

await client.RevokeTokensAsync(identity);
Console.WriteLine($"\nSuccessfully revoked all access tokens for identity with ID: {identity.Id}");

ID の削除

ID を削除すると、有効なアクセス トークンがすべて取り消され、それ以降その ID に対するアクセス トークンは発行されなくなります。 そうすると、その ID に関連付けられているすべての永続コンテンツも削除されます。

await client.DeleteUserAsync(identity);
Console.WriteLine($"\nDeleted the identity with ID: {identity.Id}");

コードの実行

アクセス トークンの作成を終えたら、dotnet run コマンドを使ってアプリケーション ディレクトリからアプリケーションを実行できます。

dotnet run

アプリの出力には、完了した各アクションが表示されます。

Azure Communication Services - Access Tokens Quickstart

Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

Issued an access token with 'voip' scope that expires at 10/11/2022 7:34:29 AM +00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw

Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-1ce9-31b4-54b7-a43a0d006a52

Issued an access token with 'voip' scope that expires at 10/11/2022 7:34:29 AM +00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw

Successfully revoked all access tokens for identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

Deleted the identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

前提条件

最終的なコード

最終的なコードは GitHub にあります。

環境を設定する

新しい Node.js アプリケーションを作成する

  1. ターミナルまたはコマンド プロンプト ウィンドウで、アプリ用の新しいディレクトリを作成し、それを開きます。

    mkdir access-tokens-quickstart && cd access-tokens-quickstart
    
  2. 既定の設定で npm init -y を実行して、package.json ファイルを作成します。

    npm init -y
    

パッケージをインストールする

npm install コマンドを使用して、JavaScript 用の Azure Communication Services Identity SDK をインストールします。

npm install @azure/communication-identity@latest --save

--save オプションを使用すると、package.json ファイル内の依存関係としてライブラリが表示されます。

アプリのフレームワークを設定する

  1. プロジェクト ディレクトリに issue-access-token.js という名前のファイルを作成し、次のコードを追加します。

    const { CommunicationIdentityClient } = require('@azure/communication-identity');
    
    const main = async () => {
      console.log("Azure Communication Services - Access Tokens Quickstart")
    
      // Quickstart code goes here
    };
    
    main().catch((error) => {
      console.log("Encountered an error");
      console.log(error);
    })
    

クライアントを認証する

接続文字列を使用して CommunicationIdentityClient をインスタンス化します。 Main メソッドに追加した次のコードは、COMMUNICATION_SERVICES_CONNECTION_STRING という名前の環境変数からリソースの接続文字列を取得します。

詳しくは、「Communication Services のリソースを作成して管理する」 > 「接続文字列を格納する」をご覧ください。

// This code demonstrates how to fetch your connection string
// from an environment variable.
const connectionString = process.env['COMMUNICATION_SERVICES_CONNECTION_STRING'];

// Instantiate the identity client
const identityClient = new CommunicationIdentityClient(connectionString);

また、以下のコードを実行することで、エンドポイントとアクセスキーを分離することができます。

// This code demonstrates how to fetch your endpoint and access key
// from an environment variable.
const endpoint = process.env["COMMUNICATION_SERVICES_ENDPOINT"];
const accessKey = process.env["COMMUNICATION_SERVICES_ACCESSKEY"];

// Create the credential
const tokenCredential = new AzureKeyCredential(accessKey);

// Instantiate the identity client
const identityClient = new CommunicationIdentityClient(endpoint, tokenCredential)

Microsoft Entra アプリケーションを既に設定してある場合は、Microsoft Entra ID を使って認証を行うことができます。

const endpoint = process.env["COMMUNICATION_SERVICES_ENDPOINT"];
const tokenCredential = new DefaultAzureCredential();
const identityClient = new CommunicationIdentityClient(endpoint, tokenCredential);

ID の作成

アクセス トークンを作成するには、ID が必要です。 Azure Communication Services では、軽量の ID ディレクトリが保持されます。 createUser メソッドを使用して、一意の Id を持つディレクトリに新しいエントリを作成します。 後でその ID を使ってアクセス トークンを発行する必要があります。

let identityResponse = await identityClient.createUser();
console.log(`\nCreated an identity with ID: ${identityResponse.communicationUserId}`);

受信した ID をアプリケーションのユーザーにマッピングして保存します (例えば、アプリケーション サーバーのデータベースに保存します)。

アクセス トークンを発行する

getToken メソッドを使用して、Communication Services の ID のアクセストークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 詳細については、「ID モデル」のサポートされるアクションの一覧を参照してください。 また、Azure Communication Service の ID の文字列表現に基づいて、communicationUser の新しいインスタンスを構築することもできます。

// Issue an access token with a validity of 24 hours and the "voip" scope for an identity
let tokenResponse = await identityClient.getToken(identityResponse, ["voip"]);

// Get the token and its expiration date from the response
const { token, expiresOn } = tokenResponse;
console.log(`\nIssued an access token with 'voip' scope that expires at ${expiresOn}:`);
console.log(token);

アクセス トークンは有効期間の短い資格情報であるため、再発行が必要になります。 そうしないと、アプリケーションのユーザー エクスペリエンスが損なわれる可能性があります。 expiresOn プロパティは、アクセス トークンの有効期間を示します。

カスタム トークンの有効期限を設定する

既定のトークンの有効期限は 24 時間 (1440 分) ですが、省略可能なパラメーター tokenExpiresInMinutes に 60 分から 1440 分の値を指定することで有効期限を構成できます。 新しいトークンを要求するときは、トークンの有効期限に対して通信セッションの予想される一般的な長さを指定します。

// Issue an access token with a validity of an hour and the "voip" scope for an identity
const tokenOptions: GetTokenOptions = { tokenExpiresInMinutes: 60 };
let tokenResponse = await identityClient.getToken
(identityResponse, ["voip"], tokenOptions);

ID を作成し、1 つのメソッド呼び出しでトークンを発行する

createUserAndToken メソッドを使用して、Communication Services ID を作成し、同時にそのアクセス トークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 それを voip スコープで作成します。

// Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
let identityTokenResponse = await identityClient.createUserAndToken(["voip"]);

// Get the token, its expiration date, and the user from the response
const { token, expiresOn, user } = identityTokenResponse;
console.log(`\nCreated an identity with ID: ${user.communicationUserId}`);
console.log(`\nIssued an access token with 'voip' scope that expires at ${expiresOn}:`);
console.log(token);

アクセス トークンを更新する

トークンには有効期限があるので、更新する必要があります。 トークンを更新するには、トークンの発行に使ったのと同じ ID を指定して getToken をもう一度呼び出します。 また、更新されたトークンの scopes も指定する必要があります。

// Value of identityResponse represents the Azure Communication Services identity stored during identity creation and then used to issue the tokens being refreshed
let refreshedTokenResponse = await identityClient.getToken(identityResponse, ["voip"]);

アクセス トークンの取り消し

アクセス トークンを取り消すことが必要な場合があります。 たとえば、アプリケーションのユーザーがサービスへの認証に使うパスワードを変更するときにそれを行います。 revokeTokens メソッドを使用すると、ID に対して発行されたすべてのアクティブなアクセス トークンを無効にできます。

await identityClient.revokeTokens(identityResponse);

console.log(`\nSuccessfully revoked all access tokens for identity with ID: ${identityResponse.communicationUserId}`);

ID の削除

ID を削除すると、有効なアクセス トークンがすべて取り消され、それ以降その ID に対するアクセス トークンは発行されなくなります。 そうすると、その ID に関連付けられているすべての永続コンテンツも削除されます。

await identityClient.deleteUser(identityResponse);

console.log(`\nDeleted the identity with ID: ${identityResponse.communicationUserId}`);

コードの実行

コンソール プロンプトから、issue-access-token.js ファイルのあるディレクトリに移動し、以下の node コマンドを実行してアプリを実行します。

node ./issue-access-token.js

アプリの出力では、完了した各アクションが説明されています。

Azure Communication Services - Access Tokens Quickstart

Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.9028648+00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw

Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-1ce9-31b4-54b7-a43a0d006a52

Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.9028648+00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw

Successfully revoked all access tokens for identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

Deleted the identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

前提条件

最終的なコード

最終的なコードは GitHub にあります。

環境を設定する

新しい Python アプリケーションを作成する

  1. ターミナルまたはコマンド プロンプト ウィンドウで、アプリ用の新しいディレクトリを作成し、それを開きます。

    mkdir access-tokens-quickstart && cd access-tokens-quickstart
    
  2. テキスト エディターを使って、プロジェクトのルート ディレクトリに issue-access-tokens.py というファイルを作成します。 次に、基本的な例外処理を含め、プログラムの構造を追加します。 すべてのソース コードをこのファイルに追加します。

    import os
    from datetime import timedelta
    from azure.communication.identity import CommunicationIdentityClient, CommunicationUserIdentifier
    
    try:
       print("Azure Communication Services - Access Tokens Quickstart")
       # Quickstart code goes here
    except Exception as ex:
       print("Exception:")
       print(ex)
    

パッケージをインストールする

アプリケーション ディレクトリにいる間に、pip install コマンドを使って、Azure Communication Services Identity SDK for Python パッケージをインストールします。

pip install azure-communication-identity

クライアントを認証する

接続文字列を使用して CommunicationIdentityClient をインスタンス化します。 try ブロックに追加した次のコードは、COMMUNICATION_SERVICES_CONNECTION_STRING という名前の環境変数からリソースの接続文字列を取得します。

詳しくは、「Communication Services のリソースを作成して管理する」 > 「接続文字列を格納する」をご覧ください。

# This code demonstrates how to retrieve your connection string
# from an environment variable.
connection_string = os.environ["COMMUNICATION_SERVICES_CONNECTION_STRING"]

# Instantiate the identity client
client = CommunicationIdentityClient.from_connection_string(connection_string)

または、Microsoft Entra アプリケーションを既に設定してある場合は、Microsoft Entra ID を使って認証を行うことができます。

endpoint = os.environ["COMMUNICATION_SERVICES_ENDPOINT"]
client = CommunicationIdentityClient(endpoint, DefaultAzureCredential())

ID の作成

アクセス トークンを作成するには、ID が必要です。 Azure Communication Services では、軽量の ID ディレクトリが保持されます。 create_user メソッドを使用して、一意の Id を持つディレクトリに新しいエントリを作成します。 ID は、後でアクセス トークンを発行するために必要になります。

identity = client.create_user()
print("\nCreated an identity with ID: " + identity.properties['id'])

受け取った ID とアプリケーション ユーザーへのマッピングを格納します (たとえば、アプリケーション サーバー データベースに格納します)。

アクセス トークンを発行する

get_token メソッドを使用して、Communication Services の ID のアクセストークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 詳細については、「ID モデル」のサポートされるアクションの一覧を参照してください。 また、Azure Communication Service のアイデンティティの文字列表現に基づいて、パラメーター CommunicationUserIdentifier の新しいインスタンスを構築することもできます。

# Issue an access token with a validity of 24 hours and the "voip" scope for an identity
token_result = client.get_token(identity, ["voip"])
print("\nIssued an access token with 'voip' scope that expires at " + token_result.expires_on + ":")
print(token_result.token)

アクセス トークンは有効期間の短い資格情報であるため、再発行が必要になります。 そうしないと、アプリケーションのユーザー エクスペリエンスが損なわれる可能性があります。 expires_on 応答プロパティは、アクセス トークンの有効期間を示します。

カスタム トークンの有効期限を設定する

既定のトークンの有効期限は 24 時間ですが、省略可能なパラメーター token_expires_in に 1 時間から 24 時間の値を指定することで有効期限を構成できます。 新しいトークンを要求するときは、トークンの有効期限に対して通信セッションの予想される一般的な長さを指定します。

# Issue an access token with a validity of an hour and the "voip" scope for an identity
token_expires_in = timedelta(hours=1)
token_result = client.get_token(identity, ["voip"], token_expires_in=token_expires_in)

ID を作成し、同じ要求内でアクセス トークンを発行する

create_user_and_token メソッドを使用して、Communication Services ID を作成し、同時にそのアクセス トークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 詳細は、「Azure Communication Services への認証」でサポートされているアクションの一覧を参照してください。

# Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
identity_token_result = client.create_user_and_token(["voip"])

# Get the token details from the response
identity = identity_token_result[0]
token = identity_token_result[1].token
expires_on = identity_token_result[1].expires_on
print("\nCreated an identity with ID: " + identity.properties['id'])
print("\nIssued an access token with 'voip' scope that expires at " + expires_on + ":")
print(token)

アクセス トークンを更新する

アクセス トークンを更新するには、CommunicationUserIdentifier オブジェクトを使用し、既存の ID を渡してトークンを再発行します。

# The existingIdentity value represents the Communication Services identity that's stored during identity creation
identity = CommunicationUserIdentifier(existingIdentity)
token_result = client.get_token(identity, ["voip"])

アクセス トークンの取り消し

アクセス トークンを明示的に取り消すことが必要な場合があります。 たとえば、アプリケーションのユーザーがサービスへの認証に使うパスワードを変更するときなどです。 revoke_tokens メソッドを使用すると、ID に対して発行されたすべてのアクティブなアクセス トークンを無効にできます。

client.revoke_tokens(identity)
print("\nSuccessfully revoked all access tokens for identity with ID: " + identity.properties['id'])

ID の削除

ID を削除すると、有効なアクセス トークンがすべて取り消され、その ID に対するアクセス トークンが今後発行されなくなります。 そうすると、その ID に関連付けられているすべての永続コンテンツも削除されます。

client.delete_user(identity)
print("\nDeleted the identity with ID: " + identity.properties['id'])

コードの実行

コンソール プロンプトから、issue-access-tokens.py ファイルを含むディレクトリに移動し、次の python コマンドを実行してアプリを実行します。

python ./issue-access-tokens.py

生成される出力では、完了した各アクションが説明されています。

Azure Communication Services - Access Tokens Quickstart

Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.9028648+00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw

Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-1ce9-31b4-54b7-a43a0d006a52

Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.9028648+00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw

Successfully revoked all access tokens for identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

Deleted the identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

前提条件

最終的なコード

最終的なコードは GitHub にあります。

環境を設定する

新しい Java アプリケーションを作成する

ターミナルまたはコマンド プロンプト ウィンドウで、Java アプリケーションを作成するディレクトリに移動します。 maven-archetype-quickstart テンプレートから Java プロジェクトを生成するには、以下のコードを実行します。

mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

generate タスクによって artifactId と同じ名前のディレクトリが作成されることに注意してください。 このディレクトリの下の src/main/java ディレクトリにはプロジェクトのソース コードが含まれ、src/test/java ディレクトリにはテスト ソースが含まれ、pom.xml ファイルはプロジェクトのプロジェクト オブジェクト モデル (POM) です。 このファイルは、プロジェクトの構成パラメーターに使用されます。

Communication Services パッケージをインストールする

テキスト エディターで pom.xml ファイルを開きます。 依存関係のグループに、次の dependency 要素を追加します。

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-identity</artifactId>
    <version>[1.4.0,)</version>
</dependency>

このコードでは、Maven に、後に使う必要がある Communication Services Identity SDK のインストールを指示しています。

アプリのフレームワークを設定する

プロジェクト ディレクトリで、次の手順を行います。

  1. /src/main/java/com/communication/quickstart ディレクトリに移動します。
  2. エディターで App.java ファイルを開きます。
  3. System.out.println("Hello world!"); ステートメントを置き換えます
  4. import ディレクティブを追加します。

次のコードを使用して開始します。

package com.communication.quickstart;

import com.azure.communication.common.*;
import com.azure.communication.identity.*;
import com.azure.communication.identity.models.*;
import com.azure.core.credential.*;

import java.io.IOException;
import java.time.*;
import java.util.*;

public class App
{
    public static void main( String[] args ) throws IOException
    {
        System.out.println("Azure Communication Services - Access Tokens Quickstart");
        // Quickstart code goes here
    }
}

クライアントを認証する

リソースのアクセス キーとエンドポイントを使用して、CommunicationIdentityClient をインスタンス化します。 詳しくは、「Communication Services のリソースを作成して管理する」 > 「接続文字列を格納する」をご覧ください。

クライアントは、com.azure.core.http.HttpClient インターフェイスを実装する任意のカスタム HTTP クライアントを使用して初期化することもできます。

App.java ファイルで、main メソッドに次のコードを追加します。

// You can find your endpoint and access key from your resource in the Azure portal
String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";
String accessKey = "SECRET";

CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
        .endpoint(endpoint)
        .credential(new AzureKeyCredential(accessKey))
        .buildClient();

エンドポイントとアクセス キーを指定する代わりに、connectionString() メソッドを使って接続文字列全体を指定することができます。

// You can find your connection string from your Communication Services resource in the Azure portal
String connectionString = "<connection_string>";

CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
    .connectionString(connectionString)
    .buildClient();

Microsoft Entra アプリケーションを既に設定してある場合は、Microsoft Entra ID を使って認証を行うことができます。

String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";
TokenCredential credential = new DefaultAzureCredentialBuilder().build();

CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
        .endpoint(endpoint)
        .credential(credential)
        .buildClient();

ID の作成

アクセス トークンを作成するには、ID が必要です。 Azure Communication Services では、軽量の ID ディレクトリが保持されます。 createUser メソッドを使用して、一意の Id を持つディレクトリに新しいエントリを作成します。

CommunicationUserIdentifier user = communicationIdentityClient.createUser();
System.out.println("\nCreated an identity with ID: " + user.getId());

作成された ID は、後でアクセス トークンを発行するために必要になります。 受信した ID をアプリケーションのユーザーにマッピングして保存します (例えば、アプリケーション サーバーのデータベースに保存します)。

アクセス トークンを発行する

getToken メソッドを使用して、Communication Services の ID のアクセストークンを発行します。 scopes パラメーターは、アクセス トークンのアクセス許可とロールのセットを定義します。 詳細については、「ID モデル」のサポートされるアクションの一覧を参照してください。

次のコードでは、前のステップで作成したユーザー変数を使って、トークンを取得します。

// Issue an access token with a validity of 24 hours and the "voip" scope for a user identity
List<CommunicationTokenScope> scopes = new ArrayList<>(Arrays.asList(CommunicationTokenScope.VOIP));
AccessToken accessToken = communicationIdentityClient.getToken(user, scopes);
OffsetDateTime expiresAt = accessToken.getExpiresAt();
String token = accessToken.getToken();
System.out.println("\nIssued an access token with 'voip' scope that expires at: " + expiresAt + ": " + token);

アクセス トークンは有効期間の短い資格情報であるため、再発行が必要になります。 そうしないと、アプリケーションのユーザー エクスペリエンスが損なわれる可能性があります。 expiresAt プロパティは、アクセス トークンの有効期間を示します。

カスタム トークンの有効期限を設定する

既定のトークンの有効期限は 24 時間ですが、省略可能なパラメーター tokenExpiresIn に 1 時間から 24 時間の値を指定することで有効期限を構成できます。 新しいトークンを要求するときは、トークンの有効期限に対して通信セッションの予想される一般的な長さを指定します。

// Issue an access token with a validity of an hour and the "voip" scope for a user identity
List<CommunicationTokenScope> scopes = new ArrayList<>(Arrays.asList(CommunicationTokenScope.VOIP));
Duration tokenExpiresIn = Duration.ofHours(1);
AccessToken accessToken = communicationIdentityClient.getToken(user, scopes, tokenExpiresIn);

1 つの要求で ID を作成し、トークンを発行する

また、'createUserAndToken' メソッドを使って、ディレクトリに一意の Id で新しいエントリを作成し、同時にアクセストークンを発行することもできます。

//Create an identity and issue token with a validity of 24 hours in one call
List<CommunicationTokenScope> scopes = Arrays.asList(CommunicationTokenScope.CHAT);
CommunicationUserIdentifierAndToken result = communicationIdentityClient.createUserAndToken(scopes);
CommunicationUserIdentifier user = result.getUser();
System.out.println("\nCreated a user identity with ID: " + user.getId());
AccessToken accessToken = result.getUserToken();
OffsetDateTime expiresAt = accessToken.getExpiresAt();
String token = accessToken.getToken();
System.out.println("\nIssued an access token with 'chat' scope that expires at: " + expiresAt + ": " + token);

アクセス トークンを更新する

アクセス トークンを更新するには、CommunicationUserIdentifier オブジェクトを使用して再発行します。

// existingIdentity represents the Communication Services identity that's stored during identity creation
CommunicationUserIdentifier identity = new CommunicationUserIdentifier(existingIdentity.getId());
AccessToken response = communicationIdentityClient.getToken(identity, scopes);

アクセス トークンを取り消す

アクセス トークンを明示的に取り消すことが必要な場合があります。 例えば、アプリケーションのユーザーがサービスの認証に使用するパスワードを変更した場合などに行います。 revokeTokens メソッドを使用すると、特定のユーザーのすべてのアクティブなアクセス トークンを無効にできます。 以下のコードでは、以前に作成したユーザーを使用しています。

communicationIdentityClient.revokeTokens(user);
System.out.println("\nSuccessfully revoked all access tokens for user identity with ID: " + user.getId());

ID の削除

ID を削除すると、有効なアクセス トークンがすべて取り消され、その ID に対するアクセス トークンが今後発行されなくなります。 そうすると、その ID に関連付けられているすべての永続コンテンツも削除されます。

communicationIdentityClient.deleteUser(user);
System.out.println("\nDeleted the user identity with ID: " + user.getId());

コードの実行

  1. pom.xml ファイルが含まれるディレクトリに移動します。

  2. 次の mvn コマンドを使ってプロジェクトをコンパイルします:

    mvn compile
    
  3. パッケージをビルドします。

    mvn package
    
  4. 次の mvn コマンドを実行して、アプリを実行します。

    mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
    

出力では、完了した各アクションが説明されています。

Azure Communication Services - Access Tokens Quickstart

Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.902864800Z:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw

Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-1ce9-31b4-54b7-a43a0d006a52

Issued an access token with 'chat' scope that expires at 2022-10-11T07:34:29.902864800Z:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw

Successfully revoked all access tokens for identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

Deleted the identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502

前提条件

アクセス トークンの作成

  1. Azure portal で、Communication Services リソースの [ID とユーザー アクセス トークン] ブレードに移動します。

  2. アクセス トークンのスコープを選択します。 なし、1 つ、または複数のサービスを選択できます。

  3. [Generate] \(生成) を選択します。

    [生成] を選んだときの ID とアクセス トークンのスコープを示すスクリーンショット。

    システムにより、ID と対応するユーザー アクセス トークンが生成されます。

  4. これらの文字列をコピーし、サンプル アプリや他のテスト シナリオで使います。

    ID とアクセス トークンおよび有効期限を示すスクリーンショット

前提条件

ユーザーの作成

Azure Communication Services Identity コネクタを使って、ワークフローに新しいステップを追加します。 Power Automate フローを "編集" モードで開き、Power Automate で以下の手順を行います。

  1. デザイナーを開きます。 新しいアクションを追加するステップで、[新しいステップ] を選びます。 または、ステップとステップの間に新しいアクションを追加するには、それらのステップ間の矢印をポイントして、プラス記号 (+) を選び、[アクションの追加] を選びます。

  2. [操作を選択してください] 検索ボックスに、「Communication Services Identity」と入力します。 アクションの一覧から [ユーザーの作成] を選びます。

    Azure Communication Services Identity コネクタのユーザー作成アクションを示すスクリーンショット。

  3. 接続文字列を指定します。 それは、Microsoft Azure portal の Azure Communication Services リソース内にあります。 左側のパネルのメニューで [キー] オプションを選んで、接続文字列を表示します。

    Azure Communication Services リソース内の [キー] ページを示すスクリーンショット。

  4. 接続名を指定します。

  5. [作成] をクリックします。

    このアクションにより、Communication Services ユーザー ID であるユーザー ID が生成されます。 さらに、[詳細オプションの表示] をクリックして [トークン スコープ] を選ぶと、アクションにより、指定したスコープでアクセス トークンとその有効期限も生成されます。

    Azure Communication Services コネクタのユーザー作成アクションを示すスクリーンショット。

    Azure Communication Services コネクタのユーザー作成アクションの詳細オプションを示すスクリーンショット。

ユーザー アクセス トークンを発行する

Communication Services の ID を生成したら、アクセス トークンを発行できます。 次の手順を完了します。

  1. 新しいアクションを追加し、検索ボックスに「Communication Services Identity」と入力します。 アクションの一覧から [ユーザー アクセス トークンを発行する] を選びます。

    Azure Communication Services Identity コネクタのアクセス トークン発行アクションを示すスクリーンショット。

  2. これで、前の「ユーザーを作成する」ステップで出力されたユーザー ID を使用できます。

  3. トークン スコープを指定します (VoIP またはチャット)。 トークンと認証の詳細については、こちらをご覧ください。

    Azure Communication Services Identity コネクタのアクセス トークン発行アクションでトークン スコープが指定されているところを示すスクリーンショット。

システムによって、指定したスコープでアクセス トークンとその有効期限が生成されます。

ユーザー アクセス トークンを取り消す

Communication Services の ID を取得したら、[Revoke a user access token](ユーザー アクセス トークンの取り消し) アクションを使用してアクセス トークンを取り消すことができます。 次の手順を行います。

  1. 新しいアクションを追加し、検索ボックスに「Communication Services Identity」と入力します。 アクションの一覧から [ユーザー アクセス トークンを取り消す] を選びます。

    Azure Communication Services Identity コネクタのアクセス トークン取り消しアクションを示すスクリーンショット。

  2. ユーザー ID を指定します。

    Azure Communication Services Identity コネクタのユーザー アクセス トークン取り消しアクションの入力を示すスクリーンショット。

システムによって、指定したユーザーのユーザー アクセス トークンがすべて取り消されます。このアクションには出力はありません。

ユーザーの削除

Communication Services の ID を取得したら、[Delete a user](ユーザーの削除) アクションを使用してユーザーを削除することができます。 次の手順を完了します。

  1. 新しいアクションを追加し、検索ボックスに「Communication Services Identity」と入力します。 アクションの一覧から [ユーザーを削除する] を選びます。

    Azure Communication Services Identity コネクタのユーザー削除アクションを示すスクリーンショット。

  2. ユーザー ID を指定します。

    Azure Communication Services Identity コネクタのユーザー削除アクションの入力を示すスクリーンショット。

システムによって、指定したユーザーが削除され、そのユーザーのすべてのユーザー アクセス トークンが取り消されます。このアクションには出力はありません。

ロジック アプリをテストする

ワークフローを手動で開始するには、デザイナーのツール バーの [実行] を選びます。 ワークフローによって、ユーザーが作成され、そのユーザーのアクセス トークンが発行された後、それが削除されて、ユーザーが削除されます。

詳しくは、ワークフローの実行方法に関する記事をご覧ください。 ワークフローが正常に実行された後で、これらのアクションの出力を確認できます。

監視とメトリックに ID を使用する

このユーザー ID は、Azure Monitor によって収集されるログとメトリックの主キーとして機能します。 たとえば、あるユーザーのすべての呼び出しを表示するには、特定の Azure Communication Services ID (または複数の ID) を 1 人のユーザーにマップするように、認証を設定できます。

詳細については、以下を参照してください:

リソースをクリーンアップする

Communication Services サブスクリプションをクリーンアップして削除するには、リソースまたはリソース グループを削除します。 リソース グループを削除すると、それに関連付けられている他のリソースもすべて削除されます。 詳しくは、「Communication Services のリソースを作成して管理する」 > 「リソースをクリーンアップする」をご覧ください。

ロジック アプリ ワークフローと関連リソースのクリーンアップについては、「Azure portal を使って従量課金ロジック アプリのワークフローの例を作成する」 > 「リソースをクリーンアップする」をご覧ください。

次のステップ

この記事では、ユーザーを作成してユーザーを削除する方法について説明しました。 また、Azure Communication Services Identity コネクタを使ってユーザーにアクセス トークンを発行し、ユーザー アクセス トークンを削除する方法についても説明しました。 詳しくは、Azure Communication Services Identity コネクタに関する記事をご覧ください。

他のコネクタでトークンがどのように使用されるかを確認するには、Azure Communication Services を使用して Power Automate からチャット メッセージを送信する方法を参照してください。

Azure Communication Services Email コネクタを使用して電子メールを送信する方法については、「Azure Communication Services を使用して Power Automate で電子メール メッセージを送信する」を参照してください。