ID モデル

Azure Communication Services は ID に依存しないサービスであり、複数の利点があります。

  • ID 管理システムから既存の ID を再利用し、単に Azure Communication Services ID にマップします。
  • ID に依存しないモデルが既存の ID システムと適切に連携するため、統合の柔軟性が提供されます。
  • Azure Communication Services でユーザーのデータを複製する必要はないので、ユーザーの名前などのデータはプライベートのままにしておくことができます。

Azure Communication Services ID モデルは、2 つの主要な概念で機能します。

ユーザー ID/マッピング

ユーザー ID を使用してユーザーを一意に識別します。ユーザーの作成時に Azure Communication Services によって生成されます。 電話番号、ユーザー、デバイス、アプリケーション、GUID などの外部識別子を Azure Communication Services の ID として使用することはできません。 Azure Communication Service ユーザー ID は無料で作成できます。 料金は、ユーザーがチャットや通話などの通信モダリティを使用する場合にのみ発生します。 ユーザー ID は、1:1、1:N、N:1、N:N の構成で Azure Communication Services ユーザー ID にマップできます。 ユーザーは、複数のデバイスを使用して複数の通信セッションに同時に参加できます。 Azure Communication Services ユーザー ID と顧客のプライベート ユーザー ID の間のマッピングは、顧客によって保持メイン保持されます。 たとえば、顧客はユーザー テーブルに列を CommunicationServicesId 追加して、関連付けられている Azure Communication Services ID を格納できます。

アクセス トークン

ユーザー ID が作成されると、アクセス トークンを使用して、チャットまたは通話を使用して通信に参加する機能がユーザーに付与されます。 たとえば、チャット トークンを持つユーザーのみがチャットに参加でき、VoIP トークンを持つユーザーは VoIP 呼び出しに参加できます。 ユーザーは複数のトークンを同時に持つことができます。 Azure Communication Services では、フル アクセスと制限付きアクセスを必要とするユーザーを考慮する複数の種類のトークンがサポートされています。 アクセス トークンには、次のプロパティがあります。

プロパティ 説明
ID トークンを一意に識別する
[有効期限] アクセス トークンは、1 時間から 24 時間の間有効です。 有効期限が切れると、アクセス トークンは無効になり、どのプリミティブへのアクセスにも使用できなくなります。 カスタムの有効期間を持つトークンを生成するには、トークンを生成するときに必要な有効期間を指定します。 カスタムの有効期間が指定されていない場合、トークンは 24 時間有効になります。 1 回限りの会議には短い有効期間トークンを使用し、アプリケーションを長期間使用するエージェントには有効期間が長いトークンを使用することをお勧めします
範囲 スコープ パラメーターは、使用できるプリミティブの空でないセット (Chat/VoIP) を定義します。

アクセス トークンは JSON Web トークン (JWT) であり、整合性保護を備えています。 つまり、発行後にそのクレームを変更することはできません。 したがって、ID、有効期限、またはスコープなどのプロパティを手動で変更すると、アクセス トークンは無効になります。 無効になったトークンでプリミティブを使用すると、プリミティブへのアクセスが拒否されます。 Azure Communication Services により、アクセス トークンに対して次のスコープがサポートされます。

チャット トークンスコープ

3 種類のチャット トークン スコープがサポートされています。 各トークンのアクセス許可については、以下で説明します。

  • chat
  • chat.join
  • chat.join.limited
機能/トークン スコープ chat chat.join chat.join.limited
チャット スレッドを作成する N N
ID を使用してチャット スレッドを更新する N N
ID を使用してチャット スレッドを削除する N N
チャット スレッドに参加者を追加する N
チャット スレッドから参加者を削除する N
チャット スレッドを取得する Y
ID を使用してチャット スレッドを取得する Y
Get ReadReceipt Y
ReadReceipt の作成 Y
ID を持つチャット スレッドのメッセージを作成する Y
メッセージ ID を含むメッセージを取得する Y
メッセージ ID を使用して独自のメッセージを更新する Y
メッセージ ID を使用して独自のメッセージを削除する Y
入力インジケーターの送信 Y
スレッド ID の参加者を取得する Y

VoIP トークン スコープ

2 種類の VoIP トークン スコープがサポートされています。 各トークンのアクセス許可については、以下で説明します。

  • Voip
  • voip.join
機能/トークン スコープ Voip voip.join
VoIP 呼び出しを開始する N
ユーザーが既に会議室に招待されているときに、Virtual Rooms で VoIP 通話を開始する Y
InProgress VoIP 呼び出しに参加する Y
ユーザーが既にルームに招待されている場合に、Virtual Rooms で InProgress VoIP 呼び出しに参加する Y
ミュート/ミュート解除、画面共有など、他のすべての通話中操作。 Y
Virtual Rooms のミュート/ミュート解除、画面共有など、他のすべての通話中操作 ユーザー ロールによって決定されます ユーザー ロールによって決定されます

アクセス トークンの取り消しまたは更新

  • Azure Communication Services ID ライブラリを使用して、有効期限前にアクセス トークンを取り消すことができます。 トークンの失効はすぐにはできません。 伝達には最大 15 分かかる場合があります。
  • ID、リソース、またはサブスクリプションを削除すると、すべてのアクセス トークンが取り消されます。
  • 特定の機能にアクセスするユーザーの権限を削除する場合は、すべてのアクセス トークンを取り消します。 次に、スコープ セットがより制限された新しいアクセス トークンを発行します。
  • アクセス キーのローテーションでは、以前のアクセス キーを使用して作成されたすべてのアクティブなアクセス トークンが取り消されます。 この場合、すべての ID は Azure Communication Services へのアクセスを失い、新しいアクセス トークンを発行する必要があります。

考慮事項

  • クライアントのアプリケーションではなくサーバー側のサービスでアクセス トークンを発行することをお勧めします。 その理由は、発行にはアクセス キーまたは Microsoft Entra 認証が必要だからです。 クライアントのアプリケーションと秘密を共有することは、セキュリティ上の理由から推奨されません。
  • クライアント アプリケーションでは、クライアントを認証できる信頼されたサービス エンドポイントを使用する必要があります。 エンドポイントは、ユーザーの代わりにアクセス トークンを発行する必要があります。 詳細については、「クライアントとサーバーのアーキテクチャ」を参照してください。
  • アクセス トークンをバッキング ストアにキャッシュする場合、暗号化を使用することをお勧めします。 アクセス トークンは、機密データです。 保護されていない場合、悪意のあるアクティビティに使用される可能性があります。 アクセス トークンを持つ人物は、SDK を起動して API にアクセスできます。 アクセス可能な API は、アクセス トークンに含まれるスコープに基づいてのみ制限されます。
  • 必要なスコープのみを含むアクセス トークンを発行することをお勧めします。

次のステップ