アプリの SSO を有効にする

Microsoft Teams のシングル サインオン (SSO) を使用すると、アプリ ユーザーは再サインインすることなく、Microsoft または Microsoft 365 アカウントを使用して Teams にサインインし、ボットおよびメッセージ拡張機能アプリを使用できます。 アプリは、Microsoft Entra ID を介して付与されたアクセス権を持つ任意のデバイス上のアプリ ユーザーが使用できます。

注:

Teams でのボット アプリの SSO は、1 対 1 およびグループ チャットの範囲でサポートされていますが、チャネルの範囲ではサポートされていません。

このセクションでは、ボットおよびメッセージング拡張機能アプリに必要な SSO 構成について説明します。

Teams での SSO ユーザー エクスペリエンス

アプリ ユーザーは、個人用の Microsoft アカウントまたは Microsoft 365 アカウントを使用して Teams にサインインします。 これを利用して、SSO を使用してアプリ ユーザーを認証および承認できます。 Microsoft Entra ID を使用すると、個人用スコープでもグループ スコープでも、アプリ ユーザーにボットまたはメッセージ拡張機能アプリへのアクセスが提供されます。

  • Teams は、アプリ ユーザーの ID を認証して保存します。
  • ボットは、Teams によって既に検証されているアプリ ユーザーの保存された ID を使用します。
  • アプリ ユーザーは、ID を使用してボットにアクセスするために Teams に同意する必要があります。
  • アプリ ユーザーは、Web、デスクトップ、またはモバイル クライアントでアプリにアクセスできます。

さまざまなスコープで SSO がどのように機能するかを見てみましょう。

個人用スコープでは、アプリ ユーザーは 1 対 1 のチャットでボットまたはメッセージ拡張機能アプリと対話します。 ユーザーはボットまたはメッセージ拡張機能アプリを使用するために 1 回だけ同意する必要があります。

インフォグラフィックは、個人用スコープでのボットの同意フローを示しています。

リソースにアクセスするためのアクセス許可スコープは、個人用スコープとグループ スコープの両方で同じままです。 詳細については、「 コードを追加して、ボット アプリで SSO を有効にする」を参照してください。

注:

アプリ ユーザーは、テナント内のすべての SharePoint および OneDrive アセットの読み取りと書き込みをアプリ ユーザーが許可する Sites.ReadWrite.All などの一部のアクセス許可スコープにアクセス許可を与えることはできません。 このようなスコープでは、管理者のみがアプリ ユーザーに代わって同意を付与できます。

ここでは、Teams 内で SSO エクスペリエンスを実現するために、実行時にバックエンドで発生することに目を向けてみましょう。

Teams 実行時の SSO

サインインしている Teams アプリ ユーザーのアクセス トークンを取得して、ボットまたはメッセージ拡張機能アプリで SSO を実現します。 このプロセスには、ボット アプリのクライアントとサーバー、Teams クライアント、Bot Framework、Microsoft Entra ID が含まれます。 この対話中に、アプリ ユーザーはマルチテナント環境でアクセス トークンを取得することに同意する必要があります。

次の画像は、Teams アプリのユーザーがボットまたはメッセージ拡張機能アプリにアクセスしようとしたときの SSO のしくみを示しています。

実行時のボットとメッセージ拡張機能の SSO

# 操作 何が起こっているのでしょうか
1 Bot Service → Teams クライアント アプリのユーザーが送信するメッセージは Teams クライアントで受信され、ボットに送信されます。
アプリ ユーザーが以前にサインインしている場合、トークンは Bot Framework トークン ストアに保存されます。 ボットが Bot Framework トークン サービスを呼び出し、Bot Framework トークン ストア内のアプリ ユーザーの既存のトークンを確認します。
• トークンが存在する場合は、アプリ ユーザーにアクセス権が与えられます。
• トークンが使用できない場合、ボットは認証フローをトリガーします。
2 Bot Service → Bot Framework トークン サービス ボットは Bot Framework Token Service を呼び出して、ユーザーのサインイン リンクを取得します。
3 Teams クライアント→ Bot Framework トークン サービス ボット アプリの場合: Bot Framework トークン サービスは、サインイン要求をボット サービスに送信し、OAuth カードで Teams クライアントに転送します。
メッセージ拡張機能アプリの場合: OAuth カードの代わりに、Bot Framework トークン サービスが呼び出し要求を送信します。
4 Teams クライアント → Bot Service → Bot Framework トークン サービス → Microsoft Entra ID Teams クライアントは、SSO が有効な場合、アプリ ユーザーの OAuth カードを受信した後、アプリ ユーザーのトークン交換要求をボットに送り返します。 ボットが Bot Framework Token Service を呼び出し、Microsoft Entra ID から受信したトークンを交換しようとします。
5 Teams クライアントMicrosoft Entra ID → ボット サービスを初めて使用するアプリ ユーザーの場合、トークン交換はアプリ ユーザーが同意した後にのみ行うことができます。 Teams クライアントは、同意を与えるためのメッセージをアプリ ユーザーに表示します。
同意が失敗した場合:
1. 認証はサインイン プロンプトにフォールバックし、アプリ ユーザーはボット アプリを使用するためにサインインする必要があります。 Teams クライアントにサインイン ボタンが表示され、アプリ ユーザーがこれを選択すると、Microsoft Entra サインイン ページが表示されます。
2. アプリ ユーザーがサインインし、ボット サービスへのアクセスを許可します。
6 Bot Service → Bot Framework トークン サービス アプリ ユーザーのトークンは、Bot Framework トークン ストアに格納されます。

ボットまたはメッセージ拡張機能アプリの場合、ボット アプリは OAuth カードを Teams クライアントに送信します。 このカードは、tokenExchangeResource を使用するMicrosoft Entra IDからアクセス トークンを取得するために使用されます。 アプリ ユーザーの同意の後、Teams クライアントは tokenExchange を使用して、Microsoft Entra ID から受け取ったトークンをボット アプリに送信します。 その後、ボット アプリはトークンを解析して、メール アドレスなどのアプリ ユーザーの情報を取得できます。

重要

ボットまたはメッセージ拡張機能アプリには、複数のアクティブなエンドポイントを含めることができます。 アプリ ユーザーが初めて、すべてのアクティブなエンドポイントに対する同意要求を受け取ります。

Teams アプリの SSO を有効にする

ボット アプリとメッセージ拡張機能アプリは、Bot Framework を使用してアプリ ユーザーとの通信を処理します。

  • ボット アプリ: チャットボットまたは会話型ボットとも呼ばれるこのサービスは、アプリ ユーザー向けに単純で反復的なタスクを実行するサービスです。 ボットは、大規模なアプリケーションの一部にすることも、スタンドアロン サービスにすることもできます。

  • メッセージ拡張機能アプリ: Teams クライアント内から呼び出すことができるホストする Web サービスです。 ボットのメッセージング スキーマを利用して、安全な通信を確保します。 メッセージ拡張機能アプリの SSO を有効にするには、Web サービスをボットとして登録する必要があります。

このセクションでは、Teams ボットまたはメッセージ拡張機能アプリの SSO の実装に関連するタスクについて説明します。 Teams ボットまたはメッセージ拡張機能アプリの SSO を有効にするには:

  1. Microsoft Entra ID を使用してアプリを構成する: Microsoft Entra アプリを作成して、アプリ ID とアプリケーション ID URI を生成します。 アクセス トークンを生成するには、スコープを構成し、信頼できるクライアント アプリケーションを承認します。 ボット アプリとメッセージ拡張機能アプリで SSO を有効にするために Microsoft Entra ID で必要な構成は同じです。 ボット リソースを作成し、そのクライアント シークレット、メッセージング エンドポイント、および OAuth 接続を構成して SSO を有効にします。

    重要

    ユーザー割り当てマネージド ID を使用してボットが作成されている場合、アプリの登録は自動的には作成されません。 Microsoft Entra ID で別のアプリ登録を作成し、必要なアクセス許可を割り当て、アプリ マニフェストの webApplicationInfo セクションでそのアプリケーション (クライアント) ID を使用する必要があります。 詳細については、 webApplicationInfo プロパティを参照してください。

  2. コードを追加する: アクセス トークンを処理するコードを追加して、Authorization ヘッダーでこのトークンをアプリのサーバー コードに送信し、アクセス トークンを受信したときに検証します。 ボット アプリで SSO を有効にするために必要なコードは、メッセージ拡張機能アプリに必要なコードとは異なります。

    注:

    このセクションでは、SSO を有効にするコードを追加するアプリを選択できます。

  3. アプリ マニフェスト (以前は Teams アプリ マニフェストと呼ばれていました) の更新: Teams がアプリに代わってアクセス トークンを要求できるように、Microsoft Entra ID で生成されたアプリ ID とアプリケーション ID URI を使用してアプリ マニフェストを更新します。 アプリ マニフェスト ファイルで必要な更新プログラムは、ボット アプリとメッセージ拡張機能アプリで同じです。

  4. Graph のスコープとアクセス許可を構成する: Microsoft Graph のアクセス許可とスコープを使用してアプリを拡張することで、アプリにスコープを追加できます。

次の手順