Microsoft 365 ユーザーのシングルテナント認証とマルチテナント認証
この記事では、シングルテナントおよびマルチテナントの Microsoft Entra ID (Microsoft Entra ID) アプリケーションの認証プロセスに関する分析情報を提供します。 Azure Communication Services で利用できる Calling SDK (ソフトウェア開発キット) を使用して、Microsoft 365 ユーザー向けに通話エクスペリエンスをビルドする際には、認証を使用できます。 この記事のユース ケースでは、個々の認証成果物について詳しく説明します。
ケース 1: シングルテナント アプリケーションの例
Fabrikam 社は、社内での使用向けにアプリケーションを構築しました。 このアプリケーションのすべてのユーザーは、Microsoft Entra ID を持っています。 Azure Communication Services へのアクセスは、Azure ロールベースのアクセス制御 (Azure RBAC) により制御されます。
次のシーケンス図では、シングルテナント認証について詳しく説明します。
開始する前に:
- Alice または彼女の Microsoft Entra 管理者は、最初にサインインを試みる前に、カスタム Teams アプリケーションに同意する必要があります。 同意フローの詳細をご覧ください。
- Azure Communication Services リソース管理者が、Alice に彼女のロールを実行する許可を与える必要があります。 Azure RBAC のロールの割り当ての詳細について説明します。
手順:
- Microsoft Entra を使用して Alice を認証する: Alice は、Microsoft Authentication Library (MSAL) を使用した標準の OAuth フローを使用して認証されます。 認証が成功した場合、クライアント アプリケーションは、値が
A1
の Microsoft Entra アクセス トークンと、値がA2
の Microsoft Entra ユーザーのオブジェクト ID を受け取ります。 トークンについては、この記事の後半で説明します。 開発者の観点からの認証については、このクイック スタートをご覧ください。 - Alice のアクセス トークンの取得: Fabrikam アプリケーションでは、値
B
のカスタム認証成果物を使用して、Alice が Microsoft Entra アクセス トークンを Azure Communication Services アクセス トークンと交換するアクセス許可を持っているかどうかを判断するための認可ロジックを実行します。 認可の成功後、Fabrikam アプリケーションでは、成果物A1
、A2
、A3
を使用してコントロール プレーン ロジックが実行されます。 Fabrikam アプリケーション内に、Alice 用の Azure Communication Services アクセス トークンD
が生成されます。 このアクセス トークンは、Azure Communication Services における呼び出しなどのデータ プレーン アクションに使用できます。 検証のため、成果物A1
と共に、成果物A2
およびA3
が渡されます。 検証により、Microsoft Entra トークンが想定されるユーザーに発行されたことが保証されます。 このアプリケーションは、他のアプリケーションや他のユーザーに発行された Microsoft Entra アクセス トークンが、攻撃者により使用されるのを防ぎます。A
成果物を取得する方法の詳細については、「MSAL ライブラリを使って Microsoft Entra ユーザー トークンとオブジェクト ID を受け取る」、および「アプリケーション ID の取得」を参照してください。 - Bob を呼び出す: Alice は、Fabrikam のアプリを使用して、Microsoft 365 ユーザーである Bob に対して呼び出しを行います。 呼び出しは、Azure Communication Servicesアクセス トークンを使用して Calling SDK を介して行われます。 Microsoft 365 ユーザー向けのアプリケーション開発の詳細について説明します。
アーティファクト:
- 成果物
A1
- 種類: Microsoft Entra アクセス トークン
- 対象ユーザー:
Azure Communication Services
、コントロール プレーン - ソース: Fabrikam の Microsoft Entra テナント
- アクセス許可:
https://auth.msft.communication.azure.com/Teams.ManageCalls
、https://auth.msft.communication.azure.com/Teams.ManageChats
- 成果物
A2
- 種類: Microsoft Entra ユーザーのオブジェクト ID
- ソース: Fabrikam の Microsoft Entra テナント
- 機関:
https://login.microsoftonline.com/<tenant>/
- 成果物
A3
- 種類: Microsoft Entra アプリケーション ID
- ソース: Fabrikam の Microsoft Entra テナント
- 成果物
B
- 種類: カスタム Fabrikam 認可成果物 (Microsoft Entra ID または別の認可サービスによって発行)
- 成果物
C
- 種類: Azure Communication Services リソース認可成果物。
- ソース: Microsoft Entra 認証用のベアラー トークンまたはハッシュ ベースのメッセージ認証コード (HMAC) ペイロードとアクセス キーベースの認証用のシグネチャを含む "Authorization" HTTP ヘッダー。
- 成果物
D
- 種類: Azure Communication Services のアクセストークン
- 対象ユーザー:
Azure Communication Services
、データ プレーン - Azure Communication Services リソースID: Fabrikam の
Azure Communication Services Resource ID
ケース 2: マルチテナント アプリケーションの例
Contoso 社は、外部顧客向けにアプリケーションを構築しました。 このアプリケーションは、Contoso 独自のインフラストラクチャ内でカスタム認証を使用します。 Contoso では、接続文字列を使用して、Fabrikam のアプリケーションからトークンを取得します。
次のシーケンス図では、マルチテナント認証の詳細を示しています。
開始する前に:
- Alice または彼女の Microsoft Entra 管理者は、初回サインインの前に Contoso の Microsoft Entra アプリケーションに同意する必要があります。 同意フローの詳細をご覧ください。
手順:
- Fabrikam アプリケーションを使用して Alice を認証する: Alice は、Fabrikam のアプリケーションを介して認証されます。 Microsoft Authentication Library (MSAL) を使用した標準の OAuth フローが使用されます。 正しい機関を使用して MSAL を構成してください。 認証が成功した場合、Contoso のクライアント アプリケーションは、値が
A1
の Microsoft Entra アクセス トークンと、値がA2
の Microsoft Entra ユーザーのオブジェクト ID を受け取ります。 トークンの詳細について、以下で説明します。 開発者の観点からの認証については、このクイック スタートをご覧ください。 - Alice のアクセス トークンの取得: Contoso アプリケーションでは、値
B
のカスタム認証成果物を使用して、Alice が Microsoft Entra アクセス トークンを Azure Communication Services アクセス トークンと交換するアクセス許可を持っているかどうかを判断するための認可ロジックを実行します。 認可の成功後、Contoso のアプリケーションでは、成果物A1
、A2
、A3
を使用してコントロール プレーン ロジックが実行されます。 Contoso アプリケーション内に Alice 用の Azure Communication Services アクセス トークンD
が生成されます。 このアクセス トークンは、Azure Communication Services における呼び出しなどのデータ プレーン アクションに使用できます。 成果物A1
と共に、成果物A2
およびA3
が渡されます。 検証により、Microsoft Entra トークンが想定されるユーザーに発行されたことが保証されます。 このアプリケーションは、他のアプリケーションや他のユーザーに発行された Microsoft Entra アクセス トークンが、攻撃者により使用されるのを防ぎます。A
成果物を取得する方法の詳細については、「MSAL ライブラリを使って Microsoft Entra ユーザー トークンとオブジェクト ID を受け取る」、および「アプリケーション ID の取得」を参照してください。 - Bob を呼び出す: Alice は、Fabrikam のアプリケーションを使用して、Microsoft 365 ユーザーである Bob に対して呼び出しを行います。 呼び出しは、Azure Communication Servicesアクセス トークンを使用して Calling SDK を介して行われます。 このクイック スタートでは、Microsoft 365 ユーザー向けのアプリ開発の詳細について説明します。
アーティファクト:
- 成果物
A1
- 種類: Microsoft Entra アクセス トークン
- 対象ユーザー:
Azure Communication Services
、コントロール プレーン - ソース: Contoso アプリケーション登録の Microsoft Entra テナント
- アクセス許可:
https://auth.msft.communication.azure.com/Teams.ManageCalls
、https://auth.msft.communication.azure.com/Teams.ManageChats
- 成果物
A2
- 種類: Microsoft Entra ユーザーのオブジェクト ID
- ソース: Fabrikam の Microsoft Entra テナント
- 機関:
https://login.microsoftonline.com/<tenant>/
またはhttps://login.microsoftonline.com/organizations/
(シナリオに基づく)
- 成果物
A3
- 種類: Microsoft Entra アプリケーション ID
- ソース: Contoso アプリケーション登録の Microsoft Entra テナント
- 成果物
B
- 種類: カスタム Contoso 認可成果物 (Microsoft Entra ID または別の認可サービスによって発行)
- 成果物
C
- 種類: Azure Communication Services リソース認可成果物。
- ソース: Microsoft Entra 認証用のベアラー トークンまたはハッシュ ベースのメッセージ認証コード (HMAC) ペイロードとアクセス キーベースの認証用のシグネチャを含む "Authorization" HTTP ヘッダー
- 成果物
D
- 種類: Azure Communication Services のアクセストークン
- 対象ユーザー:
Azure Communication Services
、データ プレーン - Azure Communication Services リソース ID: Contoso の
Azure Communication Services Resource ID
次のステップ
- 認証についてはこちらをご覧ください。
- Microsoft 365 ユーザー の認証には、このクイック スタートをお試しください。
- Microsoft 365 ユーザーの呼び出しには、このクイック スタートをお試しください。
次のようなサンプル アプリもあります。
モバイル アプリケーションとデスクトップ アプリケーション内で、Microsoft 365 ユーザー の Azure Communication Services アクセス トークンを取得するプロセスを紹介する、このサンプル アプリをお試しください。
シングルページ アプリケーションの中で、Microsoft 365 ユーザーの Azure Communication Services アクセス トークンがどのように取得されるのかは、SPA サンプル アプリでご確認ください。
Azure Communication Services の認証サービスのサーバー実装の詳細については、「認証サービスのヒーロー サンプル」を参照してください。