タブとメッセージ拡張機能の AAD SSO
Azure Active Directory シングル サインオン (AAD SSO) は、Teams でユーザーを認証するのに役立ちます。
タブとメッセージ拡張機能の AAD SSO のステップ バイ ステップ ガイドの主な側面:
- 最初のサインイン後、AAD SSO を使用すると、ユーザーは自動的にサインインできます。
- ユーザーがサインイン資格情報を再入力せずに他のデバイスにサインインできるようにします。
- ログインしているユーザーのトークンを取得します。
このステップ バイ ステップ ガイドは、AAD SSO 認証を有効にするタブとメッセージ拡張機能を作成するのに役立ちます。 次の出力が表示されます。

前提条件
次のツールをインストールし、開発環境を設定してください。
有効なアカウントを持つ Microsoft Teams
.NET Core SDK バージョン 3.1
ngrok の最新バージョン (devbox テスト用のみ) または同等のトンネリング ソリューション
Microsoft 365 開発者アカウント またはアプリをインストールするための適切なアクセス許可を持つ Teams アカウントへのアクセス
注意
ngrok をダウンロードしたら、サインアップして authtoken をインストールします。
ローカル環境を設定する
リポジトリをローカル GitHub に複製 Microsoft-Teams-Samples します。
[ コード] を選択します。
ドロップダウン メニューから[ **Open with GitHub Desktop](GitHub Desktop で開く**) を選択します。

[ 複製] を選択します。
Azure AD portal でボットを作成して登録する
次の手順に従います。
- Azure bot リソースを作成して、Azure Bot Serviceにボットを登録します。
- ボットの SSO 認証を有効にするクライアント シークレットを作成します。
- Microsoft Teams チャネルを追加して、ボットを Teams チャネルにデプロイします。
- ngrok を使用して、Web サーバーのエンドポイントへのトンネルを作成します。
- 作成した ngrok トンネルにメッセージング エンドポイントを追加します。
Azure Bot リソースを作成するには
Microsoft Azure portalに移動します。
[リソースの作成] を選択します。
検索ボックスに「 Azure Bot」と入力します。
Enter キーを押します。
Azure Bot を選択します。
[作成] を選択します。
ボット ハンドルに必要な ボット ハンドル 名を入力します。
ドロップダウン リストから [サブスクリプション] を選択します。
[リソース グループ] ドロップダウン リストから、既存のリソース グループを選択します。 新しいリソース グループを作成することもできます ([新しいリソースの 作成 ] を選択>、リソース名を入力> [OK] を選択します)。

[Microsoft アプリ ID] セクションでは、既定で [新しい Microsoft アプリ ID の作成] が選択されています。
[ 既存のアプリの登録を使用 する] を選択し、 既存のアプリケーションの既存のアプリ ID と 既存のアプリ パスワード を入力します。 新しいアプリケーションの [新しい Microsoft アプリ ID の作成] を 選択します。
注意
同じ Microsoft アプリ ID を持つ複数のボットを作成することはできません。
[アプリの種類] を選択します
Multi Tenant。[確認 + 作成] を選びます。

検証に合格した場合は、[作成] を選択します。
ボット サービスがプロビジョニングされるまで少し時間がかかります。
[リソースに移動] を選びます。

Azure ボットが作成されます。

クライアント シークレットを作成するには
新しい Microsoft アプリ ID を作成した場合は、次の手順を実行します。
左側のパネルで、[構成] を選択 します。
ヒント
今後参照できるように 、Microsoft アプリ ID または クライアント ID を 保存します。
Microsoft アプリ ID の横にある [管理] を選択します。

[ クライアント シークレット ] セクションで、[ 新しいクライアント シークレット] を選択します。

[ クライアント シークレットの追加] ウィンドウが表示されます。
「説明」と入力します。
[追加] を選択します。

[ 値 ] 列で、[ クリップボードにコピー] を選択します。

ヒント
今後参照できるように 、クライアント シークレットの 値またはアプリ パスワードを保存します。
Microsoft Teams チャネルを追加するには
[ホーム] を選択します。

最近使用したリソース からボットを選択します。
左側のウィンドウで [チャネル ] を選択します。
Microsoft Teams を選択する
.[ 利用規約] に同意するには、チェック ボックスをオンにします。
[同意する] を選択します。

[保存] を選択します。
![[Teams] を選択します](assets/images/meeting-token-generator/meeting-token-generator-config-teams.png)
ローカル Web サーバーのトンネルを作成するには
ngrok を使用して、ローカルで実行されている Web サーバーのパブリックに利用可能な HTTPS エンドポイントへのトンネルを作成します。 ngrok で次のコマンドを実行します。
ngrok http -host-header=localhost 3978
メッセージング エンドポイントを追加するには
ngrok から HTTPS URL (https から io) をコピーします。

注意
ngrok の HTTPS URL は、完全修飾ドメイン名です。 は
WebAppDomain、完全修飾ドメイン名であり、ドメイン名には含https://まれません。作成した Azure ボットの 設定 で、[構成] を選択 します。
メッセージング エンドポイント で、ngrok から入手できる HTTPS URL を使用し、URL の最後に /api/messages を追加します。

[適用] を選択します。
Azure Bot Serviceでボットが正常に設定されました。
タブの SSO を構成する
Azure portal にアクセスします。
Azure Active Directory を選択します。
左側のウィンドウを形成し、[ アプリの登録] を選択します。
ボットを選択します。
[ API の公開] を選択します。
[ 設定] を選択します。

アプリケーション ID URI を 次の
api://your ngrok/botid-{your AppID}形式で設定します。
[スコープの追加] を選択します。
表示されるパネルで、スコープ名 として入力
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 the userします。
[状態] が [有効] に設定されていることを確認してください。
[保存 するスコープの追加] を選択します。

注意
スコープ名 は、最後に追加された アプリケーション ID URI と
/access_as_user一致する必要があります。api://your ngrok/botid-00000000-0000-0000-0000-000000000000/access_as_user
[承認済みのクライアント アプリケーション] セクションで、アプリの Web アプリケーションに対して承認するアプリケーションを特定します。
[クライアント アプリケーションの追加] を選択します。
次の各クライアント ID を入力し、承認されたスコープを選択します。
1fec8e78-bce4-4aaf-ab1b-5451cc387264(Teams モバイルまたはデスクトップ アプリケーション)
5e3ce6c0-2b1f-4285-8d4b-75ee78787346(Teams Web アプリケーション)
次の図は 、クライアント ID を 表示します。

左側のパネルで、[ API アクセス許可] を選択します。
注意
ユーザーは、Azure AD アプリが別のテナントに登録されている場合にのみ、これらのアクセス許可に同意する必要があります。
[アクセス許可を追加] を選択します。
[Microsoft Graph] を選択します。

[委任されたアクセス許可] を選択します。
以下のアクセス許可を追加します。
- offline_access
- Openid
- profile
- User.Read
[アクセス許可の追加] を選択します。
左側のパネルで [ 認証 ] を選択してリダイレクト URI を設定します。
注意
アプリに IT 管理者の同意が付与されていない場合、ユーザーはアプリを初めて使用する際に同意を提供する必要があります。
[プラットフォームの追加] を選択します。
[Web] を選びます。

リダイレクト URI を 次のように
https://token.botframework.com/.auth/web/redirect入力します。次のチェック ボックスをオンにして 、暗黙的な許可フローとハイブリッド フロー を有効にします。
- ID トークン
- アクセス トークン
[構成] を選択します。

マニフェストを更新するには
左側のウィンドウで [マニフェスト] を選択します。
構成項目が次に設定されていることを確認します "accessTokenAcceptedVersion": 2。 そうでない場合は、その値を 2 に変更し、[ 保存] を選択します。
ヒント
Teams でボットを既にテストしている場合は、ボットからサインアウトし、Teams からサインアウトする必要があります。 その後、もう一度サインインして、この変更を確認します。

Bot Service接続を設定するには
[構成] ページ > の [OAuth 接続設定の追加] に移動します。
[OAuth 接続設定の追加] を選択します。
[新しい接続設定] で、次の詳細を入力します。
フィールド 値または説明 名前 新しい接続設定の名前を入力します。 この名前は、ボット サービス コードの設定で使用できます。 サービス プロバイダー Azure Active Directory V2 を選択します。 クライアント ID 以前に Microsoft アプリ ID として保存しました。 クライアント シークレット 以前にクライアント シークレット ID の 値 として保存しました。 トークン交換 URL API エンドポイントの公開中に以前に取得した アプリケーション ID URI を 使用します。 テナント ID common と入力 します。 Scope User.Read と入力し、選択したすべてのスコープを追加し 、 ダウンストリーム API へのアクセス許可を指定します。 [保存] を選択します。
アプリの設定を設定する
複製されたリポジトリで appsettings.json に移動します。

Visual Studio Code で appsettings.json を 開き、次の情報を更新します。
- ボットの Microsoft アプリ ID に 設定
"MicrosoftAppId"します。 - ボットのクライアント シークレット ID 値に設定
"MicrosoftAppPassword"します。 - ngrok URL に設定
"DOMAIN-NAME"します。 - OAuth 接続設定の名前に設定
"ConnectionName"します。 - ボットの Microsoft アプリ ID に 設定
"ClientId"します。 - ボットのクライアント シークレット ID 値に設定
"AppSecret"します。 - の形式
api://584f****.ngrok.io/botid-{AppID}で設定"ApplicationIdURI"します。

- ボットの Microsoft アプリ ID に 設定
マニフェスト ファイルを設定する
複製されたリポジトリ内に
manifest.json移動します。
Visual Studio Code で開
manifest.jsonき、次の変更を加えます。すべての出現箇所を
[DOMAIN-NAME]ngrok ドメイン名に置き換えます。すべての出現箇所をボットの
[YOUR-MICROSOFT-APP-ID]Microsoft アプリ ID に 置き換えます。注意
シナリオ
[YOUR-MICROSOFT-APP-ID]に応じて、[DOMAIN-NAME]複数回発生する可能性があります。として設定
"resource"しますapi://584f****.ngrok.io/botid-{AppID}。

サービスをビルドして実行する
Visual Studio 2019 またはコマンド ラインを使用してサービスをビルドして実行するには
Visual Studio 2019 を起動します。
ファイル > を開く > プロジェクト/ソリューション に移動します。

csharp フォルダーから App SSO Sample.csproj ファイルを選択します。

次の出力が表示されます。

F5 キーを押してプロジェクトを実行します。
以下のダイアログが表示されたら、[はい] を選択します:

Web ページが開き、 ボットの準備が完了しました。

TEAMS に SSO アプリをアップロードする
複製されたリポジトリで、 csharp > App SSO サンプル > TeamsAppManifest に移動します。
マニフェスト フォルダーに存在する次のファイルを含む.zipを作成します。
- manifest.json
- icon-outline.png
- icon-color.png

Microsoft Teams に移動します。
[ ストア] を選択します。
[アプリの管理] を選択します。
[アプリ の発行] を選択します。

[カスタム アプリをアップロードする] を選択します。

[開く] を選択して、マニフェスト フォルダーに作成した.zip ファイルをアップロードします。

[追加] を選択します。

ボットにメッセージを送信します。
ボットはシングル サインオンを実行し、トークンを表示するオプション プロンプトと共にプロファイル カードを表示します。

[ はい ] を選択してトークンを表示するか 、[いいえ] を 選択してチャットを続行します。

SSO が実行されていない場合、ボットはタブの既定の認証方法を実行します。

省略記号 ... を選択して、メッセージ拡張子を開きます。

新しい SSO アプリケーションを選択します。

[ サインイン] を選択します。

[サインイン] ボックスに資格情報を入力し、[ 次へ] を選択します。
![[サインイン] ボックス](assets/images/tab-me-sso/sign-in-box.png)
[同意する] を選択します。

メッセージ拡張機能を開き、アプリケーションを選択します。
検索ボックスでプロファイルを選択します。 次のような内容が表示されます。

アプリケーションに送信
https://profile.botframework.comして、プロファイル カードを取得します。
チャレンジを完了する
このようなことを思い付いたのですか?

おめでとうございます。
タブとメッセージ拡張機能アプリの SSO の使用を開始するためのチュートリアルを完了しました。
このセクションに問題がある場合 このセクションを改善できるよう、フィードバックをお送りください。
