SSO 認証を使用してボットを構築する
Microsoft Teams の会話型ボットは、ユーザーによって開始された繰り返し自動化されたタスク (カスタマー サービスなど) を実行します。 ユーザーは、シングル サインオン (SSO) 認証なしで複数回サインインする必要があります。 SSO 認証方法では、ユーザーはボットに複数回サインインする必要はありません。
ボットは、関係する会話に応じて動作が異なります。
- チャネルおよびグループ チャットの会話内のボットには、ボットへの @mention ユーザーが必要です。
- 1 対 1 の会話の場合、ボットを @mention する必要はありません。 ユーザーによって送信されたすべてのメッセージは、ボットにルーティングされます。
このステップ バイ ステップ ガイドは、SSO 認証を使用してボットを構築するのに役立ちます。 次の出力が表示されます。
前提条件
次のツールをインストールし、開発環境を設定していることを確認します。
インストール | 使用するには... | |
---|---|---|
Microsoft Teams | Microsoft Teams は、チャット、会議、通話のアプリを通じて作業するすべてのユーザーと 1 か所で共同作業を行います。 | |
Visual Studio 2022 | Visual Studio 2022 でエンタープライズ バージョンをインストールし、ASP.NET および Web 開発ワークロードをインストールできます。 最新バージョンを使用します。 | |
Microsoft 365 開発者アカウント | アプリをインストールするための適切なアクセス許可を持つ Teams アカウントにアクセスします。 | |
開発トンネル | Teams アプリの機能 (会話型ボット、メッセージ拡張機能、受信 Webhook) には、受信接続が必要です。 トンネルは、開発システムを Teams に接続します。 開発トンネルは、localhost をインターネットに安全に開き、アクセス権を持つユーザーを制御するための強力なツールです。 開発トンネルは、Visual Studio 2022 バージョン 17.7.0 以降で使用できます。 または 、 ngrok をトンネルとして使用して、開発システムを Teams に接続することもできます。 タブのみを含むアプリには必要ありません。 このパッケージはプロジェクト ディレクトリ内にインストールされます (npm devDependencies を使用)。 |
注:
ngrok をダウンロードしたら、サインアップして authtoken をインストールします。
Teams 開発テナントを設定する
テナントは、Teams でorganizationのチャット、ファイルの共有、会議の実行を行うスペースやコンテナーのようなものです。 カスタム アプリをアップロードしてテストすることもできます。
カスタム アプリのアップロード オプションを確認する
アプリを作成したら、アプリを配布せずに Teams に読み込む必要があります。 このプロセスは、カスタム アプリのアップロードと呼ばれます。 このオプションを表示するには、Microsoft 365 アカウントにサインインします。
注:
Teams ローカル環境でアプリをプレビューおよびテストするために、カスタム アプリのアップロードが必要です。 アプリのアップロードを有効にして、Teams でアプリをローカルでプレビューしてテストします。
既にテナントがあり、管理者アクセス権がありますか? 実際にあるかどうかを確認しましょう。
Teams でカスタム アップロード アプリを確認するには:
Teams クライアントで、[ アプリ ] アイコンを選択します。
[アプリの管理] を選択します。
[ アプリのアップロード] を選択します
[ カスタム アプリのアップロード] オプションを探します。 オプションが表示された場合は、カスタム アプリのアップロードが有効になります。
注:
カスタム アプリをアップロードするオプションがない場合は、Teams 管理者に問い合わせてください。
無料の Teams 開発者テナントを作成する (省略可能)
Teams 開発者アカウントをお持ちでない場合は、無料で入手できます。 Microsoft 365 開発者プログラムに参加します。
Microsoft 365 開発者プログラムに移動します。
[今すぐ参加] を選択し、画面の指示に従います。
ようこそ画面で、[ セットアップ E5 サブスクリプション] を選択します。
管理者アカウントを設定します。 完了すると、次の画面が表示されます。
設定した新しい管理者アカウントを使用して Teams にサインインします。 Teams で [カスタム アプリのアップロード] オプションがあることを確認します。
ローカル環境を設定する
[ コード] を選択します。
ドロップダウン メニューから、[ GitHub Desktop で開く] を選択します。
[ 複製] を選択します。
アプリMicrosoft Entra登録する
次の手順は、Azure portalでボットを作成して登録するのに役立ちます。
- Azure アプリをCreateして登録します。
- クライアント シークレットをCreateして、ボットの SSO 認証を有効にします。
- Teams チャネルを追加してボットをデプロイします。
- 開発トンネル (推奨) または ngrok を使用して、Web サーバーのエンドポイントにトンネルをCreateします。
- 作成した開発トンネルにメッセージング エンドポイントを追加します。
アプリの登録を追加する
Azure ポータルに移動します。
[アプリの登録] を選択します。
[ + 新規登録] を選択します。
アプリの名前を入力します。
任意の組織ディレクトリ (Any Microsoft Entra ID tenant - Multitenant) の [アカウント] を選択します。
[登録] を選択します。
アプリはMicrosoft Entra IDに登録されています。 アプリの概要ページが表示されます。
注:
さらに使用するために 、アプリケーション (クライアント) ID と ディレクトリ (テナント) ID からアプリ ID を 保存します。
トンネルをCreateする
Visual Studio を開きます。
新しいプロジェクトCreate選択します。
検索ボックスに「ASP.NET」 と入力します。 検索結果から [ASP.NET Core Web アプリ] を選択します。
[次へ] を選択します。
「プロジェクト名」と入力し、[次へ] を選択します。
[作成] を選択します。
概要ウィンドウが表示されます。
[デバッグ] ドロップダウン リストで、[Dev Tunnel (アクティブ トンネルなし)]>Create [Tunnel...] を選択します。
ポップアップ ウィンドウが表示されます。
ポップアップ ウィンドウで次の詳細を更新します。
- アカウント: Microsoft または GitHub アカウントを入力します。
- [名前]: トンネルの名前を入力します。
- トンネルの種類: ドロップダウン リストから [ 一時] を選択します。
- アクセス: ドロップダウン リストから [パブリック] を選択 します。
[OK] を選択します。
開発トンネルが正常に作成されたことを示すポップアップ ウィンドウが表示されます。
[OK] を選択します。
作成したトンネルは、次のようにデバッグ ドロップダウン リストにあります。
F5 キーを押して、デバッグ モードでアプリケーションを実行します。
[セキュリティ警告] ダイアログが表示されたら、[はい] を選択します。
ポップアップ ウィンドウが表示されます。
[続行] を選択します。
開発トンネルのホーム ページが新しいブラウザー ウィンドウで開き、開発トンネルがアクティブになりました。
Visual Studio に移動し、[出力の表示] を選択します>。
[出力コンソール] ドロップダウン メニューで、[Dev Tunnels]\(開発トンネル\) を選択します。
出力コンソールには、開発トンネル URL が表示されます。
Web 認証を追加する
左側のウィンドウの [ 管理] で、[ 認証] を選択します。
[プラットフォーム>Web の追加] を選択します。
完全修飾ドメイン名に追加
auth-end
して、アプリのリダイレクト URI を入力します。 たとえば、https://your-devtunnel-domain/auth-end
およびhttps://your-ngrok-domain/auth-end
が禁止となります。[ 暗黙的な許可とハイブリッド フロー] で、[ アクセス トークン と ID トークン ] チェック ボックスをオンにします。
[構成] を選択します。
[ Web] で、[ URI の追加] を選択します。
https://token.botframework.com/.auth/web/redirect
を入力します。[保存] を選択します。
クライアント シークレットを作成する
左側のウィンドウの [ 管理] で、[ 証明書 & シークレット] を選択します。
[ クライアント シークレット] で、[ + 新しいクライアント シークレット] を選択します。
[ クライアント シークレットの追加] ウィンドウが表示されます。
「説明」と入力します。
[追加] を選択します。
[ 値] で、[ クリップボードにコピー ] を選択して、クライアント シークレットの値を保存して、さらに使用します。
API アクセス許可を追加する
左側のウィンドウで、[ API アクセス許可] を選択します。
[ + アクセス許可の追加] を選択します。
[Microsoft Graph] を選択します。
[委任されたアクセス許可] を選択します。
[UserUser.Read] を選択します>。
[アクセス許可の追加] を選択します。
注:
アプリに IT 管理者の同意が付与されていない場合、ユーザーは初めてアプリを使用する際に同意を提供する必要があります。 ユーザーは、Microsoft Entra アプリが別のテナントに登録されている場合にのみ、API のアクセス許可に同意する必要があります。
アプリケーション ID
左側のウィンドウの [ 管理] で、[ API の公開] を選択します。
[アプリケーション ID URI] の横にある [追加] を選択します。
アプリケーション ID URI の形式を
api://botid-{AppID}
更新し、[保存] を選択します。
スコープを追加する
左側のウィンドウの [ 管理] で、[ API の公開] を選択します。
[ + スコープの追加] を選択します。
スコープ名として「access_as_user」と入力します。
[ 同意できるユーザー] で、[ 管理者とユーザー] を選択します。
残りのフィールドの値を次のように更新します。
「Teams は同意の表示名としてユーザーのプロファイル管理アクセスできます」と入力します。
「Teams が同意の説明として現在のユーザーとしてアプリの Web API を呼び出管理許可する」と入力します。
「Teams」と入力すると、ユーザー プロファイルにアクセスし、ユーザーの代わりにユーザーの同意表示名として要求を行うことができます。
ユーザーの同意の説明と同じ権限を持つこのアプリの API を呼び出すには、「Teams を有効にする」と入力します。
[状態] が [有効] に設定されていることを確認してください。
[スコープの追加] を選択します。
次の図は、フィールドと値を示しています。
注:
スコープ名は、最後に追加されたアプリケーション ID URI と
/access_as_user
一致する必要があります。
クライアント アプリケーションを追加する
左側のウィンドウの [ 管理] で、[ API の公開] を選択します。
[ 承認されたクライアント アプリケーション] で、アプリの Web アプリケーションに対して承認するアプリケーションを特定します。
[ + クライアント アプリケーションの追加] を選択します。
Teams モバイルまたはデスクトップと Teams Web アプリケーションを追加します。
Teams モバイルまたはデスクトップの場合: クライアント ID を として
1fec8e78-bce4-4aaf-ab1b-5451cc387264
入力します。Teams Web の場合: クライアント ID を として
5e3ce6c0-2b1f-4285-8d4b-75ee78787346
入力します。
[ 承認されたスコープ ] チェック ボックスをオンにします。
[アプリケーションの追加] を選択します。
次の図は、 クライアント ID を表示します。
マニフェストを更新する
左側のウィンドウで、[マニフェスト] を選択 します。
の値
accessTokenAcceptedVersion
を に2
設定し、[保存] を選択 します。
ボットをCreateする
Azure ボット リソースをCreateする
注:
Teams でボットを既にテストしている場合は、このアプリと Teams からサインアウトします。 この変更を確認するには、もう一度サインインします。
[ホーム] に移動します。
[+ リソースのCreate] を選択します。
検索ボックスに「 Azure Bot」と入力します。
Enter キーを押します。
[ Azure Bot] を選択します。
[作成] を選択します。
ボット ハンドルにボット名を入力します。
ドロップダウン リストから [サブスクリプション] を選択します。
ドロップダウン リストから [リソース グループ] を選択します。
既存のリソース グループがない場合は、新しいリソース グループを作成できます。 新しいリソース グループを作成するには、次の手順に従います。
- [Create新規] を選択します。
- リソース名を入力し、[ OK] を選択します。
- [ 新しいリソース グループの場所 ] ドロップダウン リストから場所を選択します。
[ 価格] で、[ プランの変更] を選択します。
[ FO Free>Select] を選択します。
[Microsoft アプリ ID] で、[マルチテナントとしてのアプリの種類] を選択します。
[ 作成の種類] で、[ 既存のアプリの登録を使用する] を選択します。
アプリ ID を入力します。
注:
同じ Microsoft アプリ ID を持つ複数のボットを作成することはできません。
[確認 + 作成] を選びます。
検証に合格したら、[Create] を選択します。
ボットのプロビジョニングには数分かかります。
[リソースに移動] を選びます。
Azure ボットが正常に作成されました。
Teams チャネルを追加する
左側のウィンドウで、[チャネル] を選択 します。
[ 使用可能なチャネル] で、[ Microsoft Teams] を選択します。
チェックボックスをオンにして 、利用規約に同意します。
[ 同意する] を選択します。
[適用] を選択します。
メッセージング エンドポイントを追加するには
出力コンソールの開発トンネル URL をメッセージング エンドポイントとして使用します。
左側のウィンドウの [ 設定] で、[ 構成] を選択します。
メッセージング エンドポイントを の形式
https://your-devtunnel-domain/api/messages
で更新します。[適用] を選択します。
Azure Bot サービスでボットが正常に設定されました。
注:
Application Insights Instrumentation キーにエラーが表示される場合は、アプリ ID で更新します。
OAuth 接続設定を追加する
左側のウィンドウで、[構成] を選択 します。
[OAuth 接続設定の追加] を選択します。
[ 新しい接続設定] で、次の詳細を更新します。
- [名前]: 新しい接続設定の名前を入力します。 名前は、ボット サービス コードの設定で使用できます。
- サービス プロバイダー: ドロップダウン リストから [ Azure Active Directory v2] を選択します。
- クライアント ID: Microsoft アプリ ID を更新します。
- クライアント シークレット: クライアント シークレットの値を更新 します。
- トークン交換 URL: アプリケーション ID URI を更新します。
- テナント ID: 「Common」と入力します。
- スコープ: User.Read と入力します。
[保存] を選択します。
アプリ設定とマニフェスト ファイルを設定する
複製されたリポジトリ内の appsettings.json ファイルに移動します。
appsettings.json ファイルを開き、次の情報を更新します。
- ボットの Microsoft アプリ ID に設定
"MicrosoftAppId"
します。 - ボットのクライアント シークレット ID 値に設定
"MicrosoftAppPassword"
します。 - OAuth 接続名として設定
ConnectionName
します。 - MultiTenant に設定
"MicrosoftAppType"
します。 - 共通に設定
"MicrosoftAppTenantId"
します。
- ボットの Microsoft アプリ ID に設定
複製されたリポジトリ内の manifest.json ファイルに移動します。
manifest.json ファイルを開き、次の変更を更新します。
- のすべての出現箇所を
"{TODO: MicrosoftAppId}"
Microsoft アプリ ID に置き換えます。 - ngrok または開発トンネル ドメインに設定
"<<domain-name>>"
します。
- のすべての出現箇所を
サービスをビルドして実行する
Visual Studio を開きます。
[ファイル>を開く>] プロジェクト/ソリューション...に移動します。
bot-conversation-sso-quickstart>csharp_dotnetcore フォルダーから、ファイルBotConversationSsoQuickstart.sln選択します。
F5 キーを押してプロジェクトを実行します。
[セキュリティ警告] ダイアログが表示されたら、[はい] を選択します。
Web ページが開き、 ボットの準備ができました! というメッセージが表示されます。
トラブルシューティング
パッケージを見つけられないエラーが発生した場合は、次の手順に従います。
- [ツール]>[NuGet パッケージ マネージャー パッケージ マネージャー>の設定] の順に移動します。
- 表示される [オプション] ウィンドウで、[ NuGet パッケージ マネージャー>パッケージ ソース] を選択します。
- [追加] を選択します。
- [ 名前] に「」と入力
nuget.org
し、[ ソース] に「」と入力しますhttps://api.nuget.org/v3/index.json
。 - [ 更新] を選択し 、[OK] を選択します。
- プロジェクトをリビルドします。
Teams でボットをアップロードする
複製したリポジトリで、BotConversationSsoQuickstartcsharp_dotnetcore>Microsoft-Teams-Samples>samples>bot-conversation-sso-quickstart> に移動します。
appPackage フォルダーに存在する次のファイルを含む .zip ファイルをCreateします。
- manifest.json
- outline.png
- color.png
Microsoft Teams に移動します。
Teams クライアントで、[アプリ] を選択 します。
[アプリの管理] を選択します。
[ アプリのアップロード] を選択します。
[カスタム アプリのアップロード] オプションを探します。
[ 開く ] を選択して、 マニフェスト フォルダーに作成した .zip ファイルをアップロードします。
[ 追加] を選択して、ボットをチャットに追加します。
ボットを操作する場合は、メッセージを送信します。 ボットは SSO トークンを交換し、代わりにGraph APIを呼び出します。 サインアウトするメッセージを送信しない限り、サインインしたままになります。
ボットにメッセージを送信します。 会話ボットは初めて同意を求めます。
デスクトップの場合: [ 続行] を選択して、ボットにアクセスするためのアクセス許可を Teams クライアントに付与します。
注:
これで、ボット アプリで SSO を構成したので、同意する必要があるのは唯一の時間です。
モバイルの場合: [ 同意する] を選択します。
注:
これで、モバイルでボット アプリに対する SSO を構成したので、同意する必要があるのは唯一の時間です。
課題の完了
このようなものを思いついたのですか?
おめでとうございます。
SSO 認証を使用したボットの構築を開始するためのチュートリアルを完了しました。
このセクションに問題がある場合 このセクションを改善できるよう、フィードバックをお送りください。
Platform Docs
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示