Microsoft Teamsは、アプリがサインインしている Teams ユーザー トークンを取得して Microsoft Graph やその他の API にアクセスするためのシングル サインオン (SSO) 機能を提供します。 Microsoft 365 Agents Toolkit (以前は Teams Toolkit) は、いくつかの単純な API の背後にあるMicrosoft Entra IDフローと統合の一部を抽象化することで、対話を容易にします。 これにより、Teams アプリに SSO 機能を簡単に追加できます。
エージェント ツールキット for Visual Studio で SSO を有効にする
Teams は、エージェント ツールキット for Microsoft Visual Studio を使用してアプリの SSO 機能を提供します。
Visual Studio を開きます。
[ Project>Microsoft 365 Agents Toolkit>[認証コードの追加] を選択します。
Agents Toolkit は、アプリケーションと認証リダイレクト ページ用のアプリ マニフェスト (以前は Teams アプリ マニフェスト) テンプレート ファイルを含む、TeamsFx-Auth フォルダー内の認証ファイルMicrosoft Entra生成するのに役立ちます。 認証構成を更新して、SSO がアプリケーションに対して機能するようにすることで、ファイルを Teams アプリケーションにリンクします。
- Microsoft Entra アプリ マニフェスト ファイルで、URI (Uniform Resource Identifier) (URI) を指定して、Microsoft Entra認証アプリを識別する URI と、トークンを返すリダイレクト URI を指定します。
- アプリ マニフェスト ファイルで、SSO アプリケーションを追加して Teams アプリケーションとリンクします。
- Teams アプリケーションをデバッグまたはプレビューするときに、認証アプリをバックエンド サービスに登録し、エージェント ツールキットを起動できるように、エージェント ツールキット構成ファイルに SSO アプリケーション情報を追加します。
Microsoft Teams のタブによる Web アプリケーション
アプリ マニフェストMicrosoft Entra更新する:
TeamsFx-Auth/aad.manifest.template.json
ファイルはMicrosoft Entra アプリ マニフェスト テンプレートです。 このファイルをコピーしてプロジェクトの任意のフォルダーに貼り付け、aad.manifest.json
として名前を変更し、このファイルへのパスを書き留めることができます。 SSO 用のMicrosoft Entra アプリを作成または更新するためのテンプレートの次の更新プログラム。identifierUris
: リソースを一意に識別してアクセスするために使用されます。 適切なリダイレクト URI をidentifierUris
に設定して、このアプリを正常に識別します。 詳細については、「 identifierUris 属性」を参照してください。"identifierUris":[ "api://${{TAB_DOMAIN}}/${{AAD_APP_CLIENT_ID}}" ]
redirectUris
: トークンを返すときMicrosoft Entra ID宛先として受け入れる登録済みのredirect_uri値が一覧表示されます。 トークンを正常に返すために必要なリダイレクト URI をredirectUris
に設定します。 詳細については、「 redirectUris 属性」を参照してください。"web": { "redirectUris": [ "${{TAB_ENDPOINT}}/auth-end.html" ] }
注:
${{ENV_NAME}}
を使用して、env/.env.{TEAMSFX_ENV}
内の変数を参照します。"web": { "redirectUris": [ "${{TAB_ENDPOINT}}/auth-end.html" ] }, "spa": { "redirectUris": [ "${{TAB_ENDPOINT}}/auth-end.html?clientId=${{AAD_APP_CLIENT_ID}}", "${{TAB_ENDPOINT}}/blank-auth-end.html" ] }
"name": この値は、予期されるMicrosoft Entraアプリ名に置き換えられます。
アプリ マニフェスト ファイルを開き、SSO アプリの値
WebApplicationInfo
プロパティを追加します。 詳細については、「webApplicationInfo」を参照してください。"webApplicationInfo": { "id": "${{AAD_APP_CLIENT_ID}}", "resource": "SAME_AS_YOUR_IDENTIFIERURIS" }
注:
手順 1 で構成した
identifierUris
にリソースの値を更新し、${{ENV_NAME}}
を使用してenv/.env.{TEAMSFX_ENV}
の envs を参照します。appPackage/manifest.json
ファイルを開き、次のコードを追加します。"webApplicationInfo": { "id": "${{AAD_APP_CLIENT_ID}}", "resource": "api://${{TAB_DOMAIN}}/${{AAD_APP_CLIENT_ID}}" }
m365agents.yml
ファイルとm365agents.local.yml
ファイルを更新します。yml
ファイルMicrosoft Entra関連する変更と構成を追加します。[
provision
: SSO に使用する新しいMicrosoft Entra アプリを作成する] の下にaadApp/create
を追加します。 詳細については、「 aadApp/create」を参照してください。注:
不足しているパラメーターは、.yml ファイル内の
writeToEnvironmentFile
に直接追加できます。[
provision
] にaadApp/update
を追加する: 手順 1 でアプリ マニフェストを使用してMicrosoft Entra アプリMicrosoft Entra更新します。 詳細については、「 aadApp/update」を参照してください。file/createOrUpdateJsonFile
の更新: ローカルでデバッグするときに、次の環境変数を追加します。- ClientId: アプリ クライアント ID をMicrosoft Entraします。
- ClientSecret: アプリ クライアント シークレットMicrosoft Entra。
- OAuthAuthority: アプリの oauth 機関Microsoft Entra。
詳細については、「 file/updateJson」を参照してください。
m365agents.yml
ファイルとm365agents.local.yml
ファイルの両方で、provision
の下に次のコードを追加してMicrosoft Entraアプリを作成します。- uses: aadApp/create with: name: "YOUR_AAD_APP_NAME" generateClientSecret: true signInAudience: "AzureADMyOrg" writeToEnvironmentFile: clientId: AAD_APP_CLIENT_ID clientSecret: SECRET_AAD_APP_CLIENT_SECRET objectId: AAD_APP_OBJECT_ID tenantId: AAD_APP_TENANT_ID authority: AAD_APP_OAUTH_AUTHORITY authorityHost: AAD_APP_OAUTH_AUTHORITY_HOST
注:
"name" の値を、想定されるMicrosoft Entraアプリ名に置き換えます。
provision
の下に次の行を追加して、手順 1 でアプリ テンプレートを使用Microsoft EntraアプリMicrosoft Entra構成します。- uses: aadApp/update with: manifestPath: "YOUR_PATH_TO_AAD_APP_MANIFEST" outputFilePath : ./build/aad.manifest.${{TEAMSFX_ENV}}.json
注:
manifestPath
の値を、手順 1 で示Microsoft Entraアプリ マニフェストの相対パスに置き換えます。 例:./aad.manifest.json
m365agents.local.yml
ファイルで、次の手順を実行します。provision
の下に次のコードを追加して、関連する構成Microsoft Entraローカル デバッグ サービスに追加します。注:
file/createOrUpdateJsonFile
セクションがm365agents.local.yml
で構成されている場合は、次の手順をスキップできます。- uses: file/createOrUpdateJsonFile with: target: ./appsettings.Development.json appsettings: TeamsFx: Authentication: ClientId: ${{AAD_APP_CLIENT_ID}} ClientSecret: ${{SECRET_AAD_APP_CLIENT_SECRET}} InitiateLoginEndpoint: ${{TAB_ENDPOINT}}/auth-start.html OAuthAuthority: ${{AAD_APP_OAUTH_AUTHORITY}}
Infra Microsoft Entra関連する構成をリモート サービスで構成する必要があります。 次の例は、Azure Webapp 上の構成を示しています。
- TeamsFx__Authentication__ClientId: アプリ クライアント ID をMicrosoft Entraします。
- TeamsFx__Authentication__ClientSecret: アプリ クライアント シークレットをMicrosoft Entraします。
- TeamsFx__Authentication__OAuthAuthority: アプリの oauth 機関をMicrosoft Entraします。
TeamsFx タブ テンプレートの例。
infra/azure.parameters.json
を開き、次の行をparameters
に追加します。"tabAadAppClientId": { "value": "${{AAD_APP_CLIENT_ID}}" }, "tabAadAppClientSecret": { "value": "${{SECRET_AAD_APP_CLIENT_SECRET}}" }, "tabAadAppOauthAuthorityHost": { "value": "${{AAD_APP_OAUTH_AUTHORITY_HOST}}" }, "tabAadAppTenantId": { "value": "${{AAD_APP_TENANT_ID}}" }
infra/azure.bicep
ファイルを開き、次のコードを見つけます。param ___location string = resourceGroup().___location
コードを次のように更新します。
param tabAadAppClientId string param tabAadAppOauthAuthorityHost string param tabAadAppTenantId string @secure() param tabAadAppClientSecret string
infra/azure.bicep
ファイルで、次のコードを見つけます。resource webApp 'Microsoft.Web/sites@2021-02-01' = { kind: 'app' ___location: ___location name: webAppName properties: { serverFarmId: serverfarm.id httpsOnly: true siteConfig: { appSettings: [ { name: 'WEBSITE_RUN_FROM_PACKAGE' value: '1' } ] ftpsState: 'FtpsOnly' } } }
コードを次のように更新します。
resource webApp 'Microsoft.Web/sites@2021-02-01' = { kind: 'app' ___location: ___location name: webAppName properties: { serverFarmId: serverfarm.id httpsOnly: true siteConfig: { ftpsState: 'FtpsOnly' } } } resource webAppConfig 'Microsoft.Web/sites/config@2021-02-01' = { name: '${webAppName}/appsettings' properties: { WEBSITE_RUN_FROM_PACKAGE: '1' TeamsFx__Authentication__ClientId: tabAadAppClientId TeamsFx__Authentication__ClientSecret: tabAadAppClientSecret TeamsFx__Authentication__InitiateLoginEndpoint: 'https://${webApp.properties.defaultHostName}/auth-start.html' TeamsFx__Authentication__OAuthAuthority: uri(tabAadAppOauthAuthorityHost, tabAadAppTenantId) } }
Microsoft Entra関連する構成の
appsettings.json
ファイルとappsettings.Development.json
ファイルを.NET プロジェクト設定に構成する必要があります。TeamsFx: { Authentication: { ClientId: AAD app client id ClientSecret: AAD app client secret, InitiateLoginEndpoint: Login Endpoint, OAuthAuthority: AAD app oauth authority } }
注:
$ENV_NAME$
を使用して、ローカル/リモート サービスの envs を参照できます。TeamsFx タブ テンプレートの例。
appsettings.json
ファイルとappsettings.Development.json
ファイルを開き、コードを更新します。"TeamsFx": { "Authentication": { "ClientId": "$clientId$", "ClientSecret": "$client-secret$", "InitiateLoginEndpoint": "$TAB_ENDPOINT$/auth-start.html", "OAuthAuthority": "$oauthAuthority$" } }
環境の準備が整い、コードを更新して Teams アプリに SSO を追加できます。 サンプルは次のとおりです。
- TeamsFx SDK: https://www.nuget.org/packages/Microsoft.TeamsFx/
- サンプル コード: の下
TeamsFx-Auth/Tab
TeamsFx タブ テンプレートの例。
Config.cs
を作成し、コードを次のように更新します。using Microsoft.TeamsFx.Configuration; namespace {{YOUR_NAMESPACE}} { public class ConfigOptions { public TeamsFxOptions TeamsFx { get; set; } } public class TeamsFxOptions { public AuthenticationOptions Authentication { get; set; } } }
注:
{{YOUR_NAMESPACE}}
を名前空間名に置き換える必要があります。TeamsFx-Auth/Tab/GetUserProfile.razor
ファイルをComponents/
に移動します。次のように、
GetUserProfile
コンポーネントを Razor ページに追加します。<h1>Hello, World</h1> <GetUserProfile />
Program.cs
ファイルを開き、次のコードを見つけます。builder.Services.AddScoped<MicrosoftTeams>();
コードを次のように更新します。
var config = builder.Configuration.Get<ConfigOptions>(); builder.Services.AddTeamsFx(config.TeamsFx.Authentication); ```
注:
.csproj
ファイルに次のコードを追加してビルドエラーを回避するには、TeamsFx-Auth
ファイルの下にあるサンプル コードを除外する必要があります。<ItemGroup> <Compile Remove="TeamsFx-Auth/**/*" /> <None Include="TeamsFx-Auth/**/*" /> <Content Remove="TeamsFx-Auth/Tab/GetUserProfile.razor"/> </ItemGroup> ``` * Download `auth-start.html` and `auth-end.html` files from [GitHub Repo](https://github.com/OfficeDev/TeamsFx/tree/dev/templates/csharp/sso-tab/wwwroot) to `{ProjectDirectory}/wwwroot`.
SSO アプリが期待どおりに動作チェックするには、Visual Studio で
Local Debug
を実行します。Provision in the cloud
を選択してDeploy to the cloud
することで、クラウドでアプリを実行することもできます。
Teams ボット アプリケーション
TeamsFx-Auth/aad.manifest.template.json
ファイルMicrosoft Entraアプリ マニフェストを更新します。ファイルをプロジェクトの任意のフォルダーにコピーし、
aad.manifest.json
ファイルとして名前を変更し、後で参照できるようにこのファイルへのパスを書き留めることができます。 SSO 用のMicrosoft Entra アプリを作成または更新するには、テンプレートで次の更新を行います。-
identifierUris
: リソースを一意に識別してアクセスするために使用されます。 このアプリを正常に識別するには、正しいリダイレクト URI を "identifierUris" に設定する必要があります。 詳細については、「 identifierUris 属性」を参照してください。
TeamsFx Bot Template の例:
"identifierUris":[ "api://botid-${{BOT_ID}}" ]
注:
${{ENV_NAME}}
を使用して、env/.env.{TEAMSFX_ENV}
ファイル内の変数を参照できます。-
redirectUris
: トークンを返すときMicrosoft Entra ID宛先として受け入れる登録済みのredirect_uri値が一覧表示されます。 トークンを正常に返すには、必要なリダイレクト URI を "redirectUris" に設定する必要があります。 詳細については、「 redirectUris 属性」を参照してください。
例:
"web": { "redirectUris": [ "https://${{BOT_DOMAIN}}/bot-auth-end.html" ] }
- "name": 値を、想定されるMicrosoft Entraアプリ名に置き換えます。
-
アプリ マニフェストを更新します。
- Teams アプリで SSO を有効にするには、
WebApplicationInfo
オブジェクトをアプリ マニフェストに追加する必要があります。 詳細については、「webApplicationInfo」を参照してください。
たとえば、アプリ マニフェスト テンプレートを開き、アプリ マニフェストに次のオブジェクトを追加します。
"webApplicationInfo": { "id": "${{AAD_APP_CLIENT_ID}}", "resource": "SAME_AS_YOUR_IDENTIFIERURIS" }
注:
手順 1.i で構成した
identifierUris
にリソースの値を更新し、${{ENV_NAME}}
を使用してenv/.env.{TEAMSFX_ENV}
の envs を参照する必要があります。TeamsFx ボット テンプレートの例:
appPackage/manifest.json
ファイルを開き、アプリ マニフェスト ファイルに次のプロパティを追加します。"webApplicationInfo": { "id": "${{AAD_APP_CLIENT_ID}}", "resource": "api://botid-${{BOT_ID}}" }
- コマンドは、ボットの
commandLists
のcommands
で登録できます。
{ "title": "YOUR_COMMAND_TITLE", "description": "YOUR_COMMAND_DESCRIPTION" }
TeamsFx ボット テンプレートの例:
{ "title": "show", "description": "Show user profile using Single Sign On feature" }
以前の 'helloWorld' コマンドは使用されていないため、必ず削除してください。
- また、
validDomain
にボット ドメインを追加します。
"validDomains": [ "${{BOT_DOMAIN}}" ]
- Teams アプリで SSO を有効にするには、
m365agents.yml
ファイルとm365agents.local.yml
ファイルを更新する: Microsoft Entra関連する変更と構成をyml
ファイルに追加する必要があります。SSO に使用される新しいMicrosoft Entra アプリを作成するための
provision
の下にaadApp/create
を追加します。 詳細については、「 エージェント ツールキットで使用可能なアクション」を参照してください。注:
不足しているパラメーターは、.yml ファイル内の
writeToEnvironmentFile
に直接追加できます。手順 1 のMicrosoft Entra アプリをMicrosoft Entraアプリ マニフェストで更新するための
provision
の下にaadApp/update
を追加します。 詳細については、「 aadApp/update」を参照してください。ローカル デバッグ中に次の環境変数を追加するために、
file/createOrUpdateJson
ファイルを更新します。- ClientId: アプリ クライアント ID をMicrosoft Entraします。
- ClientSecret: アプリ クライアント シークレットMicrosoft Entra。
- OAuthAuthority: アプリの oauth 機関Microsoft Entra。 詳細については、「 file/updateJson」を参照してください。
TeamsFx ボット テンプレートの例
m365agents.yml
ファイルとm365agents.local.yml
ファイルの両方で、次の手順を実行します。[
provision
] にコードを追加して、アプリMicrosoft Entra作成します。注:
.yml ファイルの
provision
の下にaadApp/create
セクションがない場合は、必要なセクションをコピーして貼り付けることができます。
- uses: aadApp/create with: name: "YOUR_AAD_APP_NAME" generateClientSecret: true signInAudience: "AzureADMyOrg" writeToEnvironmentFile: clientId: AAD_APP_CLIENT_ID clientSecret: SECRET_AAD_APP_CLIENT_SECRET objectId: AAD_APP_OBJECT_ID tenantId: AAD_APP_TENANT_ID authority: AAD_APP_OAUTH_AUTHORITY authorityHost: AAD_APP_OAUTH_AUTHORITY_HOST
注:
"name" の値を、想定されるMicrosoft Entraアプリ名に置き換えます。
手順 1 でアプリ テンプレートを使用Microsoft EntraアプリMicrosoft Entra構成するには、[
provision
] の下にコードを追加します。- uses: aadApp/update with: manifestPath: "./aad.manifest.json" outputFilePath : ./build/aad.manifest.${{TEAMSFX_ENV}}.json
注:
"manifestPath" の値を、手順 1 で説明Microsoft Entraアプリ マニフェストの相対パスに置き換えます。 たとえば、'./aad.manifest.json' などです。
m365agents.local.yml
ファイルで、次の手順を実行します。provision
の下のfile/createOrUpdateJsonFile
を更新して、関連する構成Microsoft Entraローカル デバッグ サービスに追加します。注:
file/createOrUpdateJsonFile
セクションがm365agents.local.yml
で構成されている場合は、次の手順をスキップできます。- uses: file/createOrUpdateJsonFile with: target: ../ProjecName/appsettings.Development.json appsettings: BOT_ID: ${{BOT_ID}} BOT_PASSWORD: ${{SECRET_BOT_PASSWORD}} TeamsFx: Authentication: ClientId: ${{AAD_APP_CLIENT_ID}} ClientSecret: ${{SECRET_AAD_APP_CLIENT_SECRET}} OAuthAuthority: ${{AAD_APP_OAUTH_AUTHORITY}}/${{AAD_APP_TENANT_ID}} ApplicationIdUri: api://botid-${{BOT_ID}} Bot: InitiateLoginEndpoint: https://${{BOT_DOMAIN}}/bot-auth-start
Infra Microsoft Entra関連する構成を更新して、リモート サービスを構成します。 次の例は、Azure Webapp 上の構成を示しています。
- TeamsFx__Authentication__ClientId: アプリ クライアント ID をMicrosoft Entraします。
- TeamsFx__Authentication__ClientSecret: アプリ クライアント シークレットをMicrosoft Entraします。
- TeamsFx__Authentication__OAuthAuthority: アプリの oauth 機関をMicrosoft Entraします。
- TeamsFx__Authentication__Bot__InitiateLoginEndpoint: Bot の認証の開始ページ。
- TeamsFx__Authentication__ApplicationIdUri: アプリMicrosoft Entra URI を識別します。
TeamsFx ボット テンプレートの例:
infra/azure.parameters.json
ファイルを開き、コードをparameters
に追加します。"m365ClientId": { "value": "${{AAD_APP_CLIENT_ID}}" }, "m365ClientSecret": { "value": "${{SECRET_AAD_APP_CLIENT_SECRET}}" }, "m365TenantId": { "value": "${{AAD_APP_TENANT_ID}}" }, "m365OauthAuthorityHost": { "value": "${{AAD_APP_OAUTH_AUTHORITY_HOST}}" }
infra/azure.bicep
ファイルを開き、次のコードを見つけます。param ___location string = resourceGroup().___location
コードを次のように更新します。
param ___location string = resourceGroup().___location param m365ClientId string param m365TenantId string param m365OauthAuthorityHost string param m365ApplicationIdUri string = 'api://botid-${botAadAppClientId}' @secure() param m365ClientSecret string
出力の前にコードを追加します。
resource webAppSettings 'Microsoft.Web/sites/config@2021-02-01' = { name: '${webAppName}/appsettings' properties: { TeamsFx__Authentication__ClientId: m365ClientId TeamsFx__Authentication__ClientSecret: m365ClientSecret TeamsFx__Authentication__Bot__InitiateLoginEndpoint: uri('https://${webApp.properties.defaultHostName}', 'bot-auth-start') TeamsFx__Authentication__OAuthAuthority: uri(m365OauthAuthorityHost, m365TenantId) TeamsFx__Authentication__ApplicationIdUri: m365ApplicationIdUri BOT_ID: botAadAppClientId BOT_PASSWORD: botAadAppClientSecret RUNNING_ON_AZURE: '1' } }
注:
Azure Webapp に追加の構成を追加する場合は、webAppSettings に構成を追加します。
.NET プロジェクト設定に構成する必要があるMicrosoft Entra関連する構成の
appsettings.json
ファイルとappsettings.Development.json
ファイルを更新します。TeamsFx: { Authentication: { ClientId: AAD app client id ClientSecret: AAD app client secret, OAuthAuthority: AAD app oauth authority, ApplicationIdUri: AAD app identify uri, Bot: { InitiateLoginEndpoint: Auth start page for Bot } } }
注:
$ENV_NAME$
を使用して、ローカル/リモート サービスの envs を参照できます。TeamsFx ボット テンプレートの例:
appsettings.json
ファイルとappsettings.Development.json
ファイルを開き、コードを追加します。"TeamsFx": { "Authentication": { "ClientId": "$clientId$", "ClientSecret": "$client-secret$", "OAuthAuthority": "$oauthAuthority$", "ApplicationIdUri": "$applicationIdUri$", "Bot": { "InitiateLoginEndpoint": "$initiateLoginEndpoint$" } } }
コードを更新して、Teams アプリに SSO を追加します。
サンプル コードを見つけることができます。
- TeamsFx SDK: https://www.nuget.org/packages/Microsoft.TeamsFx/
- サンプル コード: の下
TeamsFx-Auth/Bot
TeamsFx ボット テンプレートの例:
-
Config.cs
を開き、次のクラスを名前空間に追加します。
using Microsoft.TeamsFx.Configuration; namespace {{YOUR_NAMESPACE}} { public class TeamsFxOptions { public AuthenticationOptions Authentication { get; set; } } public class ConfigOptions { public string BOT_ID { get; set; } public string BOT_PASSWORD { get; set; } public TeamsFxOptions TeamsFx { get; set; } } }
注:
{{YOUR_NAMESPACE}}
プロパティを名前空間名に置き換えます。TeamsFx-Auth/Bot/SSO
ファイルとTeamsFx-Auth/Bot/Pages
ファイルを/
に移動します。注:
{{YOUR_NAMESPACE}}
をプロジェクトの名前空間に置き換えてください。Program.cs
ファイルを開き、次のコードを見つけます。
builder.Services.AddSingleton<BotFrameworkAuthentication, ConfigurationBotFrameworkAuthentication>();
コードを次のように更新します。
builder.Services.AddRazorPages(); // Create the Bot Framework Adapter with error handling enabled. builder.Services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>(); builder.Services.AddSingleton<IStorage, MemoryStorage>(); // Create the Conversation state. (Used by the Dialog system itself.) builder.Services.AddSingleton<ConversationState>(); // The Dialog that will be run by the bot. builder.Services.AddSingleton<SsoDialog>(); // Create the bot as a transient. In this case the ASP Controller is expecting an IBot. builder.Services.AddTransient<IBot, TeamsSsoBot<SsoDialog>>(); builder.Services.AddOptions<BotAuthenticationOptions>().Configure(options => { options.ClientId = config.TeamsFx.Authentication.ClientId; options.ClientSecret = config.TeamsFx.Authentication.ClientSecret; options.OAuthAuthority = config.TeamsFx.Authentication.OAuthAuthority; options.ApplicationIdUri = config.TeamsFx.Authentication.ApplicationIdUri; options.InitiateLoginEndpoint = config.TeamsFx.Authentication.Bot.InitiateLoginEndpoint; });
コードを見つけます。
builder.Services.AddSingleton<HelloWorldCommandHandler>(); builder.Services.AddSingleton(sp => { var options = new ConversationOptions() { Adapter = sp.GetService<CloudAdapter>(), Command = new CommandOptions() { Commands = new List<ITeamsCommandHandler> { sp.GetService<HelloWorldCommandHandler>() } } }; return new ConversationBot(options); });
コードを次のように更新します。
builder.Services.AddSingleton(sp => { var options = new ConversationOptions() { Adapter = sp.GetService<CloudAdapter>(), Command = new CommandOptions() { Commands = new List<ITeamsCommandHandler> { } } }; return new ConversationBot(options); });
コードを見つけて削除します。
// Create the bot as a transient. In this case the ASP Controller is expecting an IBot. builder.Services.AddTransient<IBot, TeamsBot>();
コードを見つけます。
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
コードを次のように更新します。
app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapRazorPages(); });
注:
次のコードをファイルに追加してビルドエラーを回避するには、
TeamsFx-Auth
のサンプル コード.csproj
除外する必要があります。<ItemGroup> <Compile Remove="TeamsFx-Auth/**/*" /> <None Include="TeamsFx-Auth/**/*" /> <Content Remove="TeamsFx-Auth/Tab/GetUserProfile.razor"/> </ItemGroup>
SSO アプリが期待どおりに動作するかどうかをチェックするには、Visual Studio で
Local Debug
を実行します。[
Provision in the cloud
] を選択し、[Deploy to the cloud
] を選択してアプリを更新することで、クラウドでアプリを実行することもできます。
関連項目
Platform Docs