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 identificador de Microsoft Entra 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.jsonel 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.jsony 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 enidentifierUrispara 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 enredirectUrispara 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
WebApplicationInfola 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
identifierUrisla configuración del paso 1 y úsela para hacer${{ENV_NAME}}referencia a envs enenv/.env.{TEAMSFX_ENV}.Abra el
appPackage/manifest.jsonarchivo y agregue el código siguiente:"webApplicationInfo": { "id": "${{AAD_APP_CLIENT_ID}}", "resource": "api://${{TAB_DOMAIN}}/${{AAD_APP_CLIENT_ID}}" }Actualice el
m365agents.ymlarchivo y elm365agents.local.ymlarchivo.Agregue Microsoft Entra cambios y configuraciones relacionados en
ymllos archivos:Agregue
aadApp/createenprovision: 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
writeToEnvironmentFiledirectamente en el archivo .yml.Agregue
aadApp/updateenprovision: 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.ymlarchivo y en elm365agents.local.ymlarchivo, agregue el código siguiente enprovisionpara 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_HOSTNota:
Reemplace el valor de "name" por el nombre de la aplicación Microsoft Entra esperada.
Agregue las líneas siguientes en
provisionpara 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}}.jsonNota:
Reemplace el valor de
manifestPathpor 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.ymlarchivo:Agregue el código siguiente en
provisionpara agregar Microsoft Entra configuraciones relacionadas al servicio de depuración local.Nota:
Si la
file/createOrUpdateJsonFilesecció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.jsony 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.biceparchivo y busque el código:param location string = resourceGroup().locationActualice el código como:
param tabAadAppClientId string param tabAadAppOauthAuthorityHost string param tabAadAppTenantId string @secure() param tabAadAppClientSecret stringEn el
infra/azure.biceparchivo, 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.jsonyappsettings.Development.jsonlos 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.jsonyappsettings.Development.jsonlos 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.csy 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.razorarchivo aComponents/.Agregue el componente a la
GetUserProfilepágina de Razor, por ejemplo:<h1>Hello, World</h1> <GetUserProfile />Abra el
Program.csarchivo 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-Autharchivo para evitar errores de compilación agregando el.csprojcó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 DebugVisual Studio.También puede ejecutar la aplicación en la nube seleccionando
Provision in the cloudy, 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.jsonarchivo.Puede copiar el archivo en cualquier carpeta del proyecto y cambiar el
aad.manifest.jsonnombre 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
WebApplicationInfoagregarse 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
identifierUrisconfigurado 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.jsonarchivo 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
commandsen encommandListsel 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.ymlym365agents.local.ymlarchivos: Microsoft Entra cambios y configuraciones relacionados deben agregarse aymllos archivos:Agregue
aadApp/createenprovisionpara 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
writeToEnvironmentFiledirectamente en el archivo .yml.Agregue
aadApp/updateenprovisionpara 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/createOrUpdateJsonArchivo 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.ymlym365agents.local.yml:Agregue el código en
provisionpara crear Microsoft Entra aplicación.Nota:
Si falta la
aadApp/createsección enprovisionel 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_HOSTNota:
Reemplace el valor de "name" por el nombre de la aplicación Microsoft Entra esperada.
Agregue el código de
provisionpara 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}}.jsonNota:
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.ymlarchivo:Actualice
file/createOrUpdateJsonFileenprovisionpara agregar Microsoft Entra configuraciones relacionadas al servicio de depuración local.Nota:
Si la
file/createOrUpdateJsonFilesecció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.jsonarchivo 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.biceparchivo y busque el código:param location string = resourceGroup().locationActualice 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 stringAgregue 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.jsonarchivo y elappsettings.Development.jsonarchivo 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.jsonyappsettings.Development.jsonlos 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.csy 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/SSOyTeamsFx-Auth/Bot/Pageslos archivos a/.Nota:
No olvide reemplazar por
{{YOUR_NAMESPACE}}el espacio de nombres del proyecto.Abra el
Program.csarchivo 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-Authpara evitar errores de compilación agregando el código siguiente al.csprojarchivo:<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 DebugVisual Studio.También puede ejecutar la aplicación en la nube seleccionando
Provision in the cloudy, a continuación, seleccionandoDeploy to the cloudactualizar 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