SSO 認証を使用してボットを構築する
Teams ボットは、カスタマー サービスなど、ユーザーが繰り返し行う自動化されたタスクを実行する会話型ボットです。 ユーザーは、シングル サインオン (SSO) 認証なしで複数回サインインする必要があります。 SSO 認証方法を使用すると、ユーザーはボットに複数回サインインする必要はありません。
ボットの動作は、ボットが関係する会話によって異なります。
- チャネルとグループチャットの会話のボットでは、ユーザーがボットを@mentionする必要があります。
- 1 対 1 の会話の場合、ボットを @メンションする必要はありません。 ユーザーによって送信されたすべてのメッセージは、ボットにルーティングされます。
このステップ バイ ステップ ガイドは、SSO 認証を使用してボットを構築するのに役立ちます。 次の出力が表示されます。
前提条件
次のツールをインストールし、開発環境を設定してください。
最新バージョンの ngrok または同等のトンネリング ソリューション
注意
ngrok をダウンロードしたら、サインアップして authtoken をインストールします。
次のアカウントがあることを確認し、開発環境を設定します。
Microsoft アカウント
ヒント
Microsoft Teams アカウントがゲスト アカウントではないことを確認します。
Microsoft 365 開発者アカウント またはアプリをインストールするための適切なアクセス許可を持つ Teams アカウントへのアクセス
Teams 開発テナントを設定する
テナント は、Teams でチャット、ファイルの共有、組織の会議の実行を行うスペースやコンテナーのようなものです。 アプリをサイドロードしてテストすることもできます。
サイドローディング オプションを確認する
アプリを作成したら、アプリを配布せずに Teams に読み込む必要があります。 これはサイドローディングと呼ばれます。 このオプションを表示するには、Microsoft 365 アカウントにサインインします。
注意
サイドローディングは、Teams のローカル環境でアプリをプレビューおよびテストするために必要です。 サイドローディングを有効にして、Teams でアプリをローカルでプレビューしてテストします。
既にテナントがあり、管理者アクセス権がありますか? 実際にあるかどうかを確認しましょう。
Teams でサイドロード アプリを確認するには:
Teams クライアントで、[ストア] を選択 します。
[アプリの管理] を選択します。
[アプリ の発行] を選択します。
[カスタム アプリのアップロード] オプションを探します。 オプションが表示された場合は、アプリのサイドローディングが有効です。
注意
カスタム アプリをアップロードするオプションがない場合は、Teams 管理者に問い合わせてください。
無料の Teams 開発者テナントを作成する (省略可能)
Teams 開発者アカウントをお持ちでない場合は、無料で取得できます。 Microsoft 365 開発者プログラムに参加します。
Microsoft 365 開発者プログラムに移動します。
[今すぐ参加] を選択し、画面の指示に従います。
ようこそ画面で [E5 サブスクリプションのセットアップ ] を選択します。
管理者アカウントを設定します。 完了すると、次の画面が表示されます。
新しい管理者アカウントを使用して Teams にサインインします。 これで、[ カスタム アプリのアップロード] オプションが表示 されます。
ボットを作成して登録する
次の手順は、ボットを作成してAzure portalに登録するのに役立ちます。
- Azure bot リソースを作成して、Azure Bot Serviceにボットを登録します。
- ボットの SSO 認証を有効にするクライアント シークレットを作成します。
- ボットをデプロイする Teams チャネルを追加します。
- ngrok を使用して、Web サーバーのエンドポイントへのトンネルを作成します。
- 作成した ngrok トンネルにメッセージング エンドポイントを追加します。
Azure Bot リソースを作成するには
Azure portal にアクセスします。 Microsoft アカウントの資格情報を使用してサインインするように求める場合があります。
[リソースの作成] を選択します。
検索ボックスに「 Azure bot」と入力します。
Enter キーを押します。
Azure Bot を選択します。
[作成] を選択します。
[Azure Bot の作成] ページが表示されます。
Azure ボットを作成するには、次の詳細を入力します。
ボット ハンドルに必要なボット ハンドル名を入力します。ボットの一意の識別子です。
ドロップダウン リストから [サブスクリプション] を選択します。
ボット アプリ用にプロビジョニングする リソース グループ をドロップダウン リストから選択します。
次の手順で新しいリソース グループを作成することもできます。
新しいリソース グループを作成するには、[ 新しい リソース グループの作成] を選択>リソース名を入力> [OK] を選択します。
新しいリソース グループを作成した場合は、[新しいリソース グループの場所] ドロップダウン リストから必要な 場所を 選択します。
[マルチテナント としての アプリの種類] を選択します。
[Microsoft アプリ ID] セクションでは、既定で [新しい Microsoft アプリ ID の作成] が選択されています。
[ 既存のアプリの登録を使用 する] を選択し、 既存のアプリ ID と 既存のアプリ パスワード を入力するか、[ 新しい Microsoft アプリ ID の作成] を選択します。
注意
同じ Microsoft アプリ ID を持つ複数のボットを作成することはできません。
[確認 + 作成] を選びます。
検証が渡されたら、[作成] を選択 します。
ボット サービスがプロビジョニングされるまでしばらく時間がかかり、次のページが表示されます。
[リソースに移動] を選びます。
Azure ボットが作成され、Azure ボットで リソース グループ と サブスクリプション ID を 確認できます。
クライアント シークレットを作成するには
クライアント シークレットを作成するには、次の手順を実行します。
左側のパネルで、[構成] を選択 します。
重要
今後参照できるように 、Microsoft アプリ ID または クライアント ID を 保存します。
Microsoft アプリ ID の横にある [管理] を選択します。
[ クライアント シークレット ] セクションで、[ 新しいクライアント シークレット] を選択します。
[ クライアント シークレットの追加] ウィンドウが表示されます。
「説明」と入力します。
[追加] を選択します。
[ 値 ] 列で、[ クリップボードにコピー] を選択します。
重要
今後参照できるように 、クライアント シークレットの 値またはアプリ パスワードを保存します。
Teams チャネルにボットを追加する
[ホーム] を選択します。
最近使用したリソース からボットを選択します。
左側のウィンドウで [チャネル] を選択し、[Teams] を選択 します。
.
Microsoft Teams を選択する
.
[ 利用規約] に同意するには、チェック ボックスをオンにします。
[同意する] を選択します。
[適用] を選択します。
ローカル Web サーバーのトンネルを作成するには
ngrok を使用して、ローカルで実行されている Web サーバーのパブリックに利用可能な HTTPS エンドポイントへのトンネルを作成します。 ngrok で次のコマンドを実行します。
ngrok http -host-header=localhost 3978
ヒント
ERR_NGROK_4018 が発生した場合は、コマンド プロンプトに表示されている手順に従って、サインアップして ngrok を認証します。 ngrok http -host-header=localhost 3978 コマンドを実行します。
メッセージング エンドポイントを追加するには
ngrok から HTTPS URL をコピーします。
注意
ngrok の HTTPS URL は、完全修飾ドメイン名です。 は
WebAppDomain、完全修飾ドメイン名であり、ドメイン名には含https://まれません。Azure portalに戻るします。
作成した Azure ボットの 設定 で、[構成] を選択 します。
メッセージング エンドポイント で、ngrok から入手できる HTTPS URL を使用し、URL の最後に /api/messages を追加します。
[適用] を選択します。
Azure Bot Serviceでボットが正常に設定されました。
ボットの SSO を構成する
Azure ボット リソースにリダイレクト URI を追加するには
[管理] を選択します。
左側のウィンドウで、[ 認証] を選択します。
プラットフォーム構成 で、[プラットフォームの追加] を選択して、ボット アプリをホストするプラットフォームを選択します。
このチュートリアルでは、Web を選択 します。
リダイレクト URI を
https://token.botframework.com/.auth/web/redirect入力します。これは、Azure AD がユーザー認証の応答を送信する URI です。
次のチェック ボックスをオンにして 、暗黙的な許可フローとハイブリッド フロー を有効にします。
- ID トークン
- アクセス トークン
[構成] を選択します。
リダイレクト URI が Azure ボット リソースに追加されます。
API エンドポイントを公開するには
左側のウィンドウで、[ API の公開] を選択します。
[ 設定] を選択します。
URI の先頭に表示されているアプリケーション ID URI を使用し 、api://botid 追加 します。
[保存] を選択します。
重要
今後の参照用に アプリケーション ID URI を 保存します。
[スコープの追加] を選択します。
[スコープの追加] パネルが表示されます。
スコープを構成するための詳細を入力します。
スコープ名 として入力
access_as_userします。注意
スコープ名 は、最後に追加された アプリケーション ID URI と
/access_as_user一致する必要があります。[同意できるユーザー] を
Admins and users[ .スコープの適切な値を使用して管理者とユーザーの同意プロンプトを
access_as_user構成するには、フィールドに次の情報を入力します。同意表示名管理 入力
Teams can access the user’s profileします。同意の説明管理 入力
Allows Teams to call the app’s web APIs as the current userします。ユーザー同意表示名 として入力
Teams can access the user profile and make requests on the user’s behalfします。ユーザーの同意の説明 として入力
Enable Teams to call this app’s APIs with the same rights as you haveします。
[状態] が [有効] に設定されていることを確認してください。
[保存 するスコープの追加] を選択します。
アプリケーション ID URI は 、スコープ名 を使用して作成されます。
[承認済みのクライアント アプリケーション] セクションで、アプリの Web アプリケーションに対して承認するアプリケーションを特定します。
[クライアント アプリケーションの追加] を選択します。
[クライアント アプリケーションの追加] パネルが表示されます。
承認するデスクトップ アプリケーションと Web アプリケーションのクライアント ID を個別に入力します。 承認するクライアント アプリケーションのアプリケーション ID です。
クライアント ID 承認する場合 1fec8e78-bce4-4aaf-ab1b-5451cc387264Teams デスクトップまたはモバイル アプリケーション 5e3ce6c0-2b1f-4285-8d4b-75ee78787346Teams Web アプリケーション [ 承認されたスコープ ] を選択して、サービスによって返されるトークンの種類を決定します。
[アプリケーションの追加] を選択します。
次の図は、クライアント ID を表示します。
Graph のアクセス許可を構成する
左側のパネルで、[ API アクセス許可] を選択します。
注意
ユーザーは、ボット アプリが別のテナントに登録されている場合にのみ、API アクセス許可に同意する必要があります。
[アクセス許可を追加] を選択します。
[要求 API のアクセス許可] ページが表示されます。
[Microsoft Graph] を選択します。
[委任されたアクセス許可] を選択します。
[ユーザー] ドロップダウンから [ユーザー.読み取り アクセス許可 ] を 選択します。
[アクセス許可の追加] を選択します。
マニフェストを更新するには
左側のウィンドウで、[ マニフェスト] を選択します。
構成項目が次に設定されていることを確認します "accessTokenAcceptedVersion": 2。 そうでない場合は、その値を 2 に変更し、[ 保存] を選択します。
注意
Teams でボットを既にテストしている場合は、このアプリと Teams からサインアウトする必要があります。 その後、もう一度サインインして、この変更を確認します。
Bot サービス接続を設定するには
[ 構成] ページ で、[ OAuth 接続設定の追加] を選択します。
[ 新しい接続設定] ページで、次の詳細を入力します。
フィールド 値または説明 名前 新しい接続設定の名前を入力します。 この名前は、ボット サービス コードの設定で使用できます。 Service Provider Azure Active Directory V2 を選択します。 クライアント ID 以前に Microsoft アプリ ID として保存しました。 クライアント シークレット 以前にクライアント シークレット ID の 値 として保存しました。 トークン交換 URL API エンドポイントを公開するときに、以前に取得した アプリケーション ID URL を 使用します。 テナント ID common と入力 します。 Scopes User.Read と入力し、ダウンストリーム API へのアクセス許可を指定するときに必要なすべての スコープ を追加します。 [保存] を選択します。
[適用] を選択します。
これで、ボットの SSO が構成されました。
ボット サンプルを構成して実行する
Visual Studio を開きます。
[リポジトリの複製] を選択します。
リポジトリの 場所に「.」と入力します
https://github.com/OfficeDev/Microsoft-Teams-Samples.git。 リポジトリが複製される パス に注意してください。ファイル > を開く > プロジェクト/ソリューション に移動します。
フォルダーから BotSSOCSharp.csproj ファイル csharp_dotnetcore 選択します。
appsettings.json ファイルを 開きます。
とを使用するように、ボットの appsettings.json 構成を
MicrosoftAppId``MicrosoftAppPassword更新します。 OAuth 接続名を 接続名 として使用します。注意
ボットの
MicrosoftAppId[構成] ページから取得できます。 これはMicrosoftAppPassword、以前に Azure に保存したクライアント シークレット ID の値です。
F5 を選択してプロジェクトを実行します。
以下のダイアログが表示されたら、[はい] を選択します:
Web ページが開き、 Bot が準備完了というメッセージが 表示されます。
トラブルシューティング
パッケージが見つからない というエラーが発生した場合は、次の手順に従います。
- ツール > NuGet パッケージ マネージャー パッケージ マネージャー > の設定 に移動します。
- 表示される [オプション] ウィンドウで、[ NuGet パッケージ マネージャー > パッケージ ソース] を選択します。
- [追加] を選択します。
- [名前] に「ソース」 と入力
nuget.orgし、次のように入力しますhttps://api.nuget.org/v3/index.json。 - [ 更新] と [OK] を選択します。
- プロジェクトをリビルドします。
Teams アプリを構成して実行する
Visual Studio で appPackage フォルダーを 開きます。
manifest.json ファイルを開きます。
{TODO: MicrosoftAppId} のすべての発生をボットの Microsoft アプリ ID に 置き換えます。
複製されたリポジトリで、 bot-conversation-sso-quickstart > csharp_dotnetcore > appPackage フォルダーに移動します。
マニフェスト フォルダーに存在する次のファイルを含む.zipを作成します。
- manifest.json
- icon-outline.png
- icon-color.png
Teams クライアントに移動します。
[ ストア] を選択します。
[アプリの管理] を選択します。
[カスタム アプリをアップロードする] を選択します。
[ 開く] を選択して、 マニフェスト フォルダーに作成した.zip ファイルをアップロードします。
[ 追加] を選択して、会話ボットをチャットに追加します。
ボットを操作するには、メッセージを送信します。 ボットは SSO トークンを交換し、ユーザーに代わってGraph APIを呼び出します。 サインアウト するメッセージを送信しない限り、サインインは維持されます。
ボットにメッセージを送信します。 会話ボットは初めて同意を求めます。
[ 続行] を選択して、ボットにアクセスするためのアクセス許可を Teams クライアントに付与します。
注意
これで、ボット アプリで SSO を構成し、同意を得る必要がある唯一の時間です。
モバイル デバイスの場合は、[要求されたアクセス許可****に同意 する] を選択します。
注意
これで、モバイルでボット アプリで SSO を構成し、同意を得る必要がある唯一の時間です。
チャレンジを完了する
このようなことを思い付いたのですか?
おめでとうございます。
SSO 認証を使用したボットの構築を開始するためのチュートリアルを完了しました。
このセクションに問題がある場合 このセクションを改善できるよう、フィードバックをお送りください。