Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Microsoft Teams proporciona una función de inicio de sesión único (SSO) para que una aplicación obtenga el token de usuario de Teams que ha iniciado sesión para acceder a Microsoft Graph y a otras API. Microsoft 365 Agents Toolkit (anteriormente conocido como Kit de herramientas de Teams) facilita la interacción mediante la abstracción de algunos de los flujos de Microsoft Entra ID e integraciones detrás de algunas API sencillas. Esto le permite agregar fácilmente características de SSO a la aplicación de Teams.
Habilitación del inicio de sesión único en Agents Toolkit para Visual Studio
Teams proporciona la función sso para una aplicación mediante Agents Toolkit para Microsoft Visual Studio.
Abra Visual Studio.
Seleccione ProjectMicrosoft 365 Agents Toolkit Add Authentication Code(Project > Microsoft 365 Agents Toolkit >Agregar código de autenticación).
Agents Toolkit le ayuda a generar los archivos de autenticación en la carpeta TeamsFx-Auth, incluido el archivo de plantilla de manifiesto de aplicación (anteriormente denominado manifiesto de aplicación de Teams) para Microsoft Entra páginas de redirección de la aplicación y la autenticación. Vincule los archivos a la aplicación de Teams actualizando las configuraciones de autenticación para asegurarse de que el inicio de sesión único funciona para la aplicación.
- En el archivo de manifiesto de Microsoft Entra aplicación, especifique los URI (identificador uniforme de recursos), como el URI para identificar la aplicación de autenticación de Microsoft Entra y el URI de redirección para devolver el token.
- En el archivo de manifiesto de la aplicación, agregue la aplicación sso para vincularla a la aplicación de Teams.
- Agregue información de la aplicación sso en los archivos de configuración del Kit de herramientas de agentes para asegurarse de que la aplicación de autenticación se puede registrar en el servicio back-end e iniciar agents Toolkit al depurar o obtener una vista previa de la aplicación de Teams.
Aplicación de pestaña de Teams
Actualizar Microsoft Entra manifiesto de aplicación:
TeamsFx-Auth/aad.manifest.template.json
el archivo es una plantilla de manifiesto de aplicación Microsoft Entra. Puede copiar y pegar este archivo en cualquier carpeta del proyecto y cambiar el nombre comoaad.manifest.json
y tomar nota de la ruta de acceso a este archivo. Las siguientes actualizaciones de la plantilla para crear o actualizar una aplicación de Microsoft Entra para SSO:identifierUris
: se usa para identificar y acceder de forma única al recurso. Establezca los URI de redireccionamiento correctos enidentifierUris
para identificar correctamente esta aplicación. Para obtener más información, vea atributo identifierUris."identifierUris":[ "api://${{TAB_DOMAIN}}/${{AAD_APP_CLIENT_ID}}" ]
redirectUris
: muestra los valores de redirect_uri registrados que Microsoft Entra ID acepta como destinos al devolver tokens. Establezca los URI de redireccionamiento necesarios enredirectUris
para devolver correctamente el token. Para obtener más información, vea atributo redirectUris."web": { "redirectUris": [ "${{TAB_ENDPOINT}}/auth-end.html" ] }
Nota:
Use
${{ENV_NAME}}
para hacer referencia a variables enenv/.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": reemplaza el valor por el nombre de la aplicación de Microsoft Entra esperado.
Abra el archivo de manifiesto de la aplicación y agregue
WebApplicationInfo
la propiedad con el valor de la aplicación sso. Para obtener más información, consulte webApplicationInfo."webApplicationInfo": { "id": "${{AAD_APP_CLIENT_ID}}", "resource": "SAME_AS_YOUR_IDENTIFIERURIS" }
Nota:
Actualice el valor del recurso a
identifierUris
la configuración del paso 1 y úsela para hacer${{ENV_NAME}}
referencia a envs enenv/.env.{TEAMSFX_ENV}
.Abra el
appPackage/manifest.json
archivo y agregue el código siguiente:"webApplicationInfo": { "id": "${{AAD_APP_CLIENT_ID}}", "resource": "api://${{TAB_DOMAIN}}/${{AAD_APP_CLIENT_ID}}" }
Actualice el
m365agents.yml
archivo y elm365agents.local.yml
archivo.Agregue Microsoft Entra cambios y configuraciones relacionados en
yml
los archivos:Agregue
aadApp/create
enprovision
: Cree nuevas aplicaciones de Microsoft Entra que se usan para el inicio de sesión único. Para obtener más información, vea aadApp/create.Nota:
Puede agregar los parámetros que faltan en
writeToEnvironmentFile
directamente en el archivo .yml.Agregue
aadApp/update
enprovision
: actualice la aplicación de Microsoft Entra con Microsoft Entra manifiesto de aplicación en el paso 1. Para obtener más información, vea aadApp/update.Actualizar
file/createOrUpdateJsonFile
: agregue las siguientes variables de entorno al depurar localmente:- ClientId: Microsoft Entra identificador de cliente de la aplicación.
- ClientSecret: Microsoft Entra secreto de cliente de la aplicación.
- OAuthAuthority: Microsoft Entra entidad de oauth de la aplicación.
Para obtener más información, consulte file/updateJson.
En el
m365agents.yml
archivo y en elm365agents.local.yml
archivo, agregue el código siguiente enprovision
para crear Microsoft Entra aplicación.- 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
Nota:
Reemplace el valor de "name" por el nombre de la aplicación Microsoft Entra esperada.
Agregue las líneas siguientes en
provision
para configurar Microsoft Entra aplicación con Microsoft Entra plantilla de aplicación en el paso 1.- uses: aadApp/update with: manifestPath: "YOUR_PATH_TO_AAD_APP_MANIFEST" outputFilePath : ./build/aad.manifest.${{TEAMSFX_ENV}}.json
Nota:
Reemplace el valor de
manifestPath
por la ruta de acceso relativa de Microsoft Entra manifiesto de aplicación que se indica en el paso 1. Por ejemplo:./aad.manifest.json
En el
m365agents.local.yml
archivo:Agregue el código siguiente en
provision
para agregar Microsoft Entra configuraciones relacionadas al servicio de depuración local.Nota:
Si la
file/createOrUpdateJsonFile
sección está configurada enm365agents.local.yml
, puede omitir el paso siguiente.- 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}}
Actualice Infra Microsoft Entra las configuraciones relacionadas deben configurarse en el servicio remoto. En el ejemplo siguiente se muestran las configuraciones en Azure Webapp.
- TeamsFx__Authentication__ClientId: Microsoft Entra identificador de cliente de la aplicación.
- TeamsFx__Authentication__ClientSecret: Microsoft Entra secreto de cliente de la aplicación.
- TeamsFx__Authentication__OAuthAuthority: Microsoft Entra entidad de oauth de la aplicación.
Ejemplo de plantilla de la pestaña TeamsFx.
Abra
infra/azure.parameters.json
y agregue las siguientes líneas enparameters
:"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}}" }
Abra el
infra/azure.bicep
archivo y busque el código:param location string = resourceGroup().location
Actualice el código como:
param tabAadAppClientId string param tabAadAppOauthAuthorityHost string param tabAadAppTenantId string @secure() param tabAadAppClientSecret string
En el
infra/azure.bicep
archivo, busque el código: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' } } }
Actualice el código como:
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) } }
La actualización
appsettings.json
yappsettings.Development.json
los archivos de Microsoft Entra configuraciones relacionadas deben configurarse en la configuración del proyecto de .NET:TeamsFx: { Authentication: { ClientId: AAD app client id ClientSecret: AAD app client secret, InitiateLoginEndpoint: Login Endpoint, OAuthAuthority: AAD app oauth authority } }
Nota:
Puede usar para hacer
$ENV_NAME$
referencia a las envs en el servicio local o remoto.Ejemplo de plantilla de la pestaña TeamsFx.
Abra
appsettings.json
yappsettings.Development.json
los archivos y actualice el código:"TeamsFx": { "Authentication": { "ClientId": "$clientId$", "ClientSecret": "$client-secret$", "InitiateLoginEndpoint": "$TAB_ENDPOINT$/auth-start.html", "OAuthAuthority": "$oauthAuthority$" } }
El entorno está listo y puede actualizar el código para agregar sso a la aplicación de Teams. Puede encontrar ejemplos:
- SDK de TeamsFx: https://www.nuget.org/packages/Microsoft.TeamsFx/
- Código de ejemplo: en
TeamsFx-Auth/Tab
Ejemplo de plantilla de la pestaña TeamsFx.
Cree
Config.cs
y actualice el código como:using Microsoft.TeamsFx.Configuration; namespace {{YOUR_NAMESPACE}} { public class ConfigOptions { public TeamsFxOptions TeamsFx { get; set; } } public class TeamsFxOptions { public AuthenticationOptions Authentication { get; set; } } }
Nota:
Debe reemplazar por
{{YOUR_NAMESPACE}}
el nombre del espacio de nombres.Mueva el
TeamsFx-Auth/Tab/GetUserProfile.razor
archivo aComponents/
.Agregue el componente a la
GetUserProfile
página de Razor, por ejemplo:<h1>Hello, World</h1> <GetUserProfile />
Abra el
Program.cs
archivo y busque el código:builder.Services.AddScoped<MicrosoftTeams>();
y actualice el código como:
var config = builder.Configuration.Get<ConfigOptions>(); builder.Services.AddTeamsFx(config.TeamsFx.Authentication); ```
Nota:
Debe excluir el código de ejemplo en el
TeamsFx-Auth
archivo para evitar errores de compilación agregando el.csproj
código siguiente al archivo:<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`.
Para comprobar que la aplicación sso funciona según lo esperado, ejecute en
Local Debug
Visual Studio.También puede ejecutar la aplicación en la nube seleccionando
Provision in the cloud
y, a continuación,Deploy to the cloud
.
Aplicación de bot de Teams
Actualice Microsoft Entra manifiesto de aplicación en el
TeamsFx-Auth/aad.manifest.template.json
archivo.Puede copiar el archivo en cualquier carpeta del proyecto y cambiar el
aad.manifest.json
nombre como archivo y anotar la ruta de acceso a este archivo para referencia posterior. Realice las siguientes actualizaciones en la plantilla para crear o actualizar una aplicación de Microsoft Entra para sso.-
identifierUris
: se usa para identificar y acceder al recurso de forma única. Debe establecer los URI de redireccionamiento correctos en "identifierUris" para identificar correctamente esta aplicación. Para obtener más información, vea atributo identifierUris.
Ejemplo de plantilla de bot de TeamsFx:
"identifierUris":[ "api://botid-${{BOT_ID}}" ]
Nota:
Puede usar para hacer
${{ENV_NAME}}
referencia a variables en elenv/.env.{TEAMSFX_ENV}
archivo.-
redirectUris
: muestra los valores de redirect_uri registrados que Microsoft Entra ID acepta como destinos al devolver tokens. Debe establecer los URI de redireccionamiento necesarios en "redirectUris" para devolver correctamente el token. Para obtener más información, vea atributo redirectUris.
Ejemplo:
"web": { "redirectUris": [ "https://${{BOT_DOMAIN}}/bot-auth-end.html" ] }
- "name": reemplace el valor por el nombre de la aplicación de Microsoft Entra esperado.
-
Actualizar manifiesto de aplicación.
- Debe
WebApplicationInfo
agregarse un objeto al manifiesto de la aplicación para habilitar el inicio de sesión único en la aplicación de Teams. Para obtener más información, consulte webApplicationInfo.
Por ejemplo: abra la plantilla de manifiesto de aplicación y anexe el siguiente objeto en el manifiesto de la aplicación:
"webApplicationInfo": { "id": "${{AAD_APP_CLIENT_ID}}", "resource": "SAME_AS_YOUR_IDENTIFIERURIS" }
Nota:
Debe actualizar el valor del recurso a su
identifierUris
configurado en el paso 1.i y usar para hacer${{ENV_NAME}}
referencia a los envs enenv/.env.{TEAMSFX_ENV}
.Ejemplo de plantilla de bot de TeamsFx:
Abra el
appPackage/manifest.json
archivo y agregue la siguiente propiedad en el archivo de manifiesto de la aplicación:"webApplicationInfo": { "id": "${{AAD_APP_CLIENT_ID}}", "resource": "api://botid-${{BOT_ID}}" }
- Puede registrar el comando en
commands
en encommandLists
el bot:
{ "title": "YOUR_COMMAND_TITLE", "description": "YOUR_COMMAND_DESCRIPTION" }
Ejemplo de plantilla de bot de TeamsFx:
{ "title": "show", "description": "Show user profile using Single Sign On feature" }
No olvide eliminar el comando "helloWorld" anterior, ya que no se usa.
- Agregue también un dominio de bot a
validDomain
:
"validDomains": [ "${{BOT_DOMAIN}}" ]
- Debe
Actualización
m365agents.yml
ym365agents.local.yml
archivos: Microsoft Entra cambios y configuraciones relacionados deben agregarse ayml
los archivos:Agregue
aadApp/create
enprovision
para crear nuevas aplicaciones de Microsoft Entra que se usan para el inicio de sesión único. Para obtener más información, consulte acciones disponibles en Agents Toolkit.Nota:
Puede agregar los parámetros que faltan en
writeToEnvironmentFile
directamente en el archivo .yml.Agregue
aadApp/update
enprovision
para actualizar la aplicación de Microsoft Entra con Microsoft Entra manifiesto de aplicación en el paso 1. Para obtener más información, vea aadApp/update.Actualice
file/createOrUpdateJson
Archivo para agregar las siguientes variables de entorno durante la depuración local:- ClientId: Microsoft Entra identificador de cliente de la aplicación.
- ClientSecret: Microsoft Entra secreto de cliente de la aplicación.
- OAuthAuthority: Microsoft Entra entidad de oauth de la aplicación. Para obtener más información, consulte file/updateJson.
Ejemplo de plantilla de bot de TeamsFx
En archivos
m365agents.yml
ym365agents.local.yml
:Agregue el código en
provision
para crear Microsoft Entra aplicación.Nota:
Si falta la
aadApp/create
sección enprovision
el archivo .yml, puede copiar y pegar la sección necesaria en él.
- 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
Nota:
Reemplace el valor de "name" por el nombre de la aplicación Microsoft Entra esperada.
Agregue el código de
provision
para configurar Microsoft Entra aplicación con Microsoft Entra plantilla de aplicación en el paso 1.- uses: aadApp/update with: manifestPath: "./aad.manifest.json" outputFilePath : ./build/aad.manifest.${{TEAMSFX_ENV}}.json
Nota:
Reemplace el valor de "manifestPath" por la ruta de acceso relativa de Microsoft Entra manifiesto de aplicación que se indica en el paso 1. Por ejemplo, "./aad.manifest.json"
En el
m365agents.local.yml
archivo:Actualice
file/createOrUpdateJsonFile
enprovision
para agregar Microsoft Entra configuraciones relacionadas al servicio de depuración local.Nota:
Si la
file/createOrUpdateJsonFile
sección está configurada enm365agents.local.yml
, puede omitir el paso siguiente.- 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
Actualice Infra Microsoft Entra configuraciones relacionadas para configurar el servicio remoto. En el ejemplo siguiente se muestran las configuraciones en Azure Webapp.
- TeamsFx__Authentication__ClientId: Microsoft Entra identificador de cliente de la aplicación.
- TeamsFx__Authentication__ClientSecret: Microsoft Entra secreto de cliente de la aplicación.
- TeamsFx__Authentication__OAuthAuthority: Microsoft Entra entidad de oauth de la aplicación.
- TeamsFx__Authentication__Bot__InitiateLoginEndpoint: página de inicio de autenticación del bot.
- TeamsFx__Authentication__ApplicationIdUri: Microsoft Entra aplicación identifica los URI.
Ejemplo de plantilla de bot de TeamsFx:
Abra el
infra/azure.parameters.json
archivo y agregue el código aparameters
:"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}}" }
Abra el
infra/azure.bicep
archivo y busque el código:param location string = resourceGroup().location
Actualice el código como:
param location string = resourceGroup().location param m365ClientId string param m365TenantId string param m365OauthAuthorityHost string param m365ApplicationIdUri string = 'api://botid-${botAadAppClientId}' @secure() param m365ClientSecret string
Agregue el código antes de la salida:
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' } }
Nota:
Si desea agregar configuraciones adicionales a la aplicación web de Azure, agregue las configuraciones en webAppSettings.
Actualice el
appsettings.json
archivo y elappsettings.Development.json
archivo para Microsoft Entra configuraciones relacionadas que deben configurarse en la configuración del proyecto de .NET: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 } } }
Nota:
Puede usar para hacer
$ENV_NAME$
referencia a las envs en el servicio local o remoto.Ejemplo de plantilla de bot de TeamsFx:
Abra
appsettings.json
yappsettings.Development.json
los archivos y agregue el código:"TeamsFx": { "Authentication": { "ClientId": "$clientId$", "ClientSecret": "$client-secret$", "OAuthAuthority": "$oauthAuthority$", "ApplicationIdUri": "$applicationIdUri$", "Bot": { "InitiateLoginEndpoint": "$initiateLoginEndpoint$" } } }
Actualice el código para agregar el inicio de sesión único a la aplicación de Teams.
Puede encontrar código de ejemplo:
- SDK de TeamsFx: https://www.nuget.org/packages/Microsoft.TeamsFx/
- Código de ejemplo: en
TeamsFx-Auth/Bot
Ejemplo de plantilla de bot de TeamsFx:
- Abra
Config.cs
y agregue las siguientes clases al espacio de nombres:
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; } } }
Nota:
Reemplace la propiedad por el
{{YOUR_NAMESPACE}}
nombre del espacio de nombres.Mueva
TeamsFx-Auth/Bot/SSO
yTeamsFx-Auth/Bot/Pages
los archivos a/
.Nota:
No olvide reemplazar por
{{YOUR_NAMESPACE}}
el espacio de nombres del proyecto.Abra el
Program.cs
archivo y busque el código:
builder.Services.AddSingleton<BotFrameworkAuthentication, ConfigurationBotFrameworkAuthentication>();
Actualice el código como:
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; });
Busque el código:
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); });
Actualice el código como:
builder.Services.AddSingleton(sp => { var options = new ConversationOptions() { Adapter = sp.GetService<CloudAdapter>(), Command = new CommandOptions() { Commands = new List<ITeamsCommandHandler> { } } }; return new ConversationBot(options); });
Busque y elimine el código:
// Create the bot as a transient. In this case the ASP Controller is expecting an IBot. builder.Services.AddTransient<IBot, TeamsBot>();
Busque el código:
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
Actualice el código como:
app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapRazorPages(); });
Nota:
Debe excluir el código de ejemplo de
TeamsFx-Auth
para evitar errores de compilación agregando el código siguiente al.csproj
archivo:<ItemGroup> <Compile Remove="TeamsFx-Auth/**/*" /> <None Include="TeamsFx-Auth/**/*" /> <Content Remove="TeamsFx-Auth/Tab/GetUserProfile.razor"/> </ItemGroup>
Para comprobar si la aplicación sso funciona según lo esperado, ejecute en
Local Debug
Visual Studio.También puede ejecutar la aplicación en la nube seleccionando
Provision in the cloud
y, a continuación, seleccionandoDeploy to the cloud
actualizar la aplicación.
Vea también
- Introducción al kit de herramientas de agentes de Microsoft 365
- Requisitos previos para crear la aplicación de Teams
- Habilitación del inicio de sesión único para la aplicación de pestañas
- Habilitación del inicio de sesión único para el bot y la extensión de mensaje
- Preparación de cuentas para compilar la aplicación de Teams