Compartilhar via


Adicionar o início de sessão único à sua aplicação Teams

O Microsoft Teams fornece uma função de início de sessão único (SSO) para uma aplicação obter o token de utilizador com sessão iniciada no Teams para aceder ao Microsoft Graph e a outras APIs. O Teams Toolkit facilita a interação ao abstrair alguns dos fluxos e integrações do Microsoft Entra ID por trás de algumas APIs simples. Isto permite-lhe adicionar facilmente funcionalidades de SSO à sua aplicação Teams.

Ativar o Início de Sessão Único no Teams Toolkit para Visual Studio

O Teams fornece a função SSO para uma aplicação com o Microsoft Teams Toolkit para Microsoft Visual Studio.

  1. Abra o Visual Studio.

  2. Selecione Project>Teams Toolkit>Adicionar Código de Autenticação.

    Captura de ecrã a mostrar a opção para adicionar código de autenticação.

O Teams Toolkit ajuda-o a gerar os ficheiros de autenticação na pasta TeamsFx-Auth , incluindo o ficheiro de modelo de manifesto de aplicação (anteriormente denominado manifesto de aplicação do Teams) para a aplicação Microsoft Entra e páginas de redirecionamento de autenticação. Ligue os ficheiros à sua aplicação do Teams ao atualizar as configurações de autenticação para garantir que o SSO funciona para a sua aplicação.

  • No ficheiro de manifesto da aplicação Microsoft Entra, especifique os URIs (Uniform Resource Identifier), como, por exemplo, o URI para identificar a aplicação de autenticação Microsoft Entra e o URI de redirecionamento para devolver o token.
  • No ficheiro de manifesto da aplicação, adicione a aplicação SSO para a associar à aplicação Teams.
  • Adicione informações da aplicação SSO nos ficheiros de configuração do Teams Toolkit para garantir que a aplicação de autenticação pode ser registada no serviço de back-end e iniciar o Teams Toolkit quando estiver a depurar ou pré-visualizar a aplicação Teams.

Aplicativo de guia do Teams

  1. Atualizar o manifesto da aplicação Microsoft Entra: TeamsFx-Auth/aad.manifest.template.json o ficheiro é um modelo de manifesto da aplicação Microsoft Entra. Pode copiar e colar este ficheiro em qualquer pasta do seu projeto, mudar o nome como aad.manifest.json e tomar nota do caminho para este ficheiro. As seguintes atualizações no modelo para criar/atualizar uma aplicação Microsoft Entra para SSO:

    • identifierUris: é utilizado para identificar e aceder exclusivamente ao recurso. Defina os URIs de redirecionamento corretos para identifierUris para identificar com êxito esta aplicação. Para obter mais informações, veja o atributo identifierUris.

          "identifierUris":[
            "api://${{TAB_DOMAIN}}/${{AAD_APP_CLIENT_ID}}"
          ]
      
    • replyUrlsWithType: lista os valores de redirect_uri registados que o ID do Microsoft Entra aceita como destinos ao devolver tokens. Defina os URIs de redirecionamento necessários para replyUrlsWithType para devolver o token com êxito. Para obter mais informações, veja o atributo replyUrlsWithType.

          "replyUrlsWithType":[
        {
          "url": "${{TAB_ENDPOINT}}/auth-end.html",
          "type": "Web"
        }
      ]    
      

      Observação

      Utilize ${{ENV_NAME}} para referenciar variáveis em env/.env.{TEAMSFX_ENV}.

          "replyUrlsWithType":[
        {
          "url": "${{TAB_ENDPOINT}}/auth-end.html",
          "type": "Web"
        },
        {
          "url": "${{TAB_ENDPOINT}}/auth-end.html?clientId=${{AAD_APP_CLIENT_ID}}",
          "type": "Spa"
        },
        {
          "url": "${{TAB_ENDPOINT}}/blank-auth-end.html",
          "type": "Spa"
        }
      ]
      
    • "name": substitui o valor pelo nome da aplicação Microsoft Entra esperado.

  2. Abra o ficheiro de manifesto da aplicação e adicione WebApplicationInfo a propriedade com o valor da sua aplicação SSO. Para obter mais informações, consulte webApplicationInfo.

        "webApplicationInfo": {
          "id": "${{AAD_APP_CLIENT_ID}}",
          "resource": "SAME_AS_YOUR_IDENTIFIERURIS"
        }
    

    Observação

    Atualize o valor do recurso para o configurado identifierUris no passo 1 e utilize ${{ENV_NAME}} para referenciar envs no env/.env.{TEAMSFX_ENV}.

  3. Abra o appPackage/manifest.json ficheiro e adicione o seguinte código:

    "webApplicationInfo": {
      "id": "${{AAD_APP_CLIENT_ID}}",
      "resource": "api://${{TAB_DOMAIN}}/${{AAD_APP_CLIENT_ID}}"
    }
    
  4. Atualize o teamsapp.yml ficheiro e o teamsapp.local.yml ficheiro.

    Adicione alterações e configurações relacionadas com o Microsoft Entra aos seus yml ficheiros:

    • Adicione aadApp/create em provision: Criar novas aplicações Microsoft Entra utilizadas para SSO. Para obter mais informações, veja aadApp/create.

    • Adicione aadApp/update em provision: Atualize a aplicação Microsoft Entra com o manifesto da aplicação Microsoft Entra no passo 1. Para obter mais informações, veja aadApp/update.

    • Atualização file/createOrUpdateJsonFile: adicione as seguintes variáveis de ambiente ao depurar localmente:

      1. ClientId: ID de cliente da aplicação Microsoft Entra.
      2. ClientSecret: segredo do cliente da aplicação Microsoft Entra.
      3. OAuthAuthority: Autoridade de oauth da aplicação Microsoft Entra.

      Para obter mais informações, veja file/updateJson.

    • teamsapp.yml No ficheiro e no teamsapp.local.yml ficheiro, adicione o seguinte código sob o provision para criar a aplicação 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
      

      Observação

      Substitua o valor de "name" pelo nome da aplicação Microsoft Entra esperado.

    • Adicione as seguintes linhas provision em para configurar a aplicação Microsoft Entra com o modelo da aplicação Microsoft Entra no passo 1.

      - uses: aadApp/update
        with:
          manifestPath: "YOUR_PATH_TO_AAD_APP_MANIFEST"
          outputFilePath : ./build/aad.manifest.${{TEAMSFX_ENV}}.json
      

      Observação

      Substitua o valor de manifestPath pelo caminho relativo do manifesto da aplicação Microsoft Entra indicado no passo 1. Por exemplo: ./aad.manifest.json

    teamsapp.local.yml No ficheiro:

    • Adicione o seguinte código provision em para adicionar configurações relacionadas com o Microsoft Entra ao serviço de depuração local.

         - 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}}
      
  5. Atualização As configurações relacionadas com a Infraestrutura do Microsoft Entra têm de ser configuradas no seu serviço remoto. O exemplo seguinte mostra as configurações na Aplicação Web do Azure.

    1. TeamsFx__Authentication__ClientId: ID de cliente da aplicação Microsoft Entra.
    2. TeamsFx__Authentication__ClientSecret: segredo do cliente da aplicação Microsoft Entra.
    3. TeamsFx__Authentication__OAuthAuthority: Autoridade de autenticação da aplicação Microsoft Entra.

    Exemplo de modelo de Separador TeamsFx.

    Abra infra/azure.parameters.json e adicione as seguintes linhas em 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}}"
    }
    

    Abra o infra/azure.bicep ficheiro e localize o código:

    param location string = resourceGroup().location
    

    Atualize o código como:

    param tabAadAppClientId string
    param tabAadAppOauthAuthorityHost string
    param tabAadAppTenantId string
    @secure()
    param tabAadAppClientSecret string
    

    infra/azure.bicep No ficheiro, localize o 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'
         }
       }
     }
    

    Atualize o 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)
       }
     }
    
  6. A atualização appsettings.json e appsettings.Development.json os ficheiros das configurações relacionadas com o Microsoft Entra têm de ser configurados para as definições do projeto .NET:

    TeamsFx: {
          Authentication: {
            ClientId: AAD app client id
            ClientSecret: AAD app client secret,
            InitiateLoginEndpoint: Login Endpoint,
            OAuthAuthority: AAD app oauth authority
          }
        }
    

    Observação

    Pode utilizar $ENV_NAME$ para referenciar envs no serviço local/remoto.

    Exemplo de modelo de Separador TeamsFx.

    Abra appsettings.json ficheiros e appsettings.Development.json atualize o código:

    "TeamsFx": { 
         "Authentication": { 
           "ClientId": "$clientId$", 
           "ClientSecret": "$client-secret$",
           "InitiateLoginEndpoint": "$TAB_ENDPOINT$/auth-start.html",
           "OAuthAuthority": "$oauthAuthority$"
         } 
       }
    
  7. O seu ambiente está pronto e pode atualizar o seu código para adicionar o SSO à sua aplicação Teams. Pode encontrar exemplos:

    Exemplo de modelo de Separador TeamsFx.

    • Crie Config.cs e atualize o 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; }
               }
           }
      

      Observação

      Tem de substituir {{YOUR_NAMESPACE}} pelo nome do espaço de nomes.

    • Mova o TeamsFx-Auth/Tab/GetUserProfile.razor ficheiro para Components/.

    • Adicione o GetUserProfile componente à sua página do Razor, por exemplo:

      <h1>Hello, World</h1>
      <GetUserProfile />
      
    • Abra o Program.cs ficheiro e localize o código:

      builder.Services.AddScoped<MicrosoftTeams>();
      

      e atualize o código como:

                var config = builder.Configuration.Get<ConfigOptions>();
                builder.Services.AddTeamsFx(config.TeamsFx.Authentication);
          ```
      
      

    Observação

    Tem de excluir o código de exemplo no TeamsFx-Auth ficheiro para evitar falhas de criação ao adicionar o seguinte código ao .csproj ficheiro:

        <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`.
    
    
  8. Para verificar se a aplicação SSO funciona conforme esperado, execute o Local Debug no Visual Studio.

  9. Também pode executar a aplicação na cloud ao selecionar e Provision in the cloud , em seguida, Deploy to the cloud.

Aplicação de bot do Teams

  1. Atualize o manifesto da aplicação Microsoft Entra no TeamsFx-Auth/aad.manifest.template.json ficheiro.

  2. Pode copiar o ficheiro para qualquer pasta do seu projeto, mudar o nome como ficheiro aad.manifest.json e anotar o caminho para este ficheiro para referência posterior. Faça as seguintes atualizações no modelo para criar ou atualizar uma aplicação Microsoft Entra para SSO.

    • identifierUris: utilizado para identificar e aceder exclusivamente ao recurso. Tem de definir os URIs de Redirecionamento corretos para "identifierUris" para identificar esta aplicação com êxito. Para obter mais informações, veja o atributo identifierUris.

    Exemplo para o Modelo de Bot do TeamsFx:

    "identifierUris":[
      "api://botid-${{BOT_ID}}"
    ]
    

    Observação

    Pode utilizar ${{ENV_NAME}} para referenciar variáveis no env/.env.{TEAMSFX_ENV} ficheiro.

    • replyUrlsWithType: lista os valores de redirect_uri registados que o ID do Microsoft Entra aceita como destinos ao devolver tokens. Tem de definir os URIs de Redirecionamento necessários para "replyUrlsWithType" para devolver o token com êxito. Para obter mais informações, veja o atributo replyUrlsWithType.

    Exemplo:

    "replyUrlsWithType":[
      {
        "url": "https://${{BOT_DOMAIN}}/bot-auth-end.html",
        "type": "Web"
      }
    ]
    

    Observação

    Pode utilizar ${{ENV_NAME}} para referenciar envs no env/.env.{TEAMSFX_ENV} ficheiro.

    Exemplo:

    "replyUrlsWithType":[
      {
      "url": "https://${{BOT_DOMAIN}}/bot-auth-end.html",
      "type": "Web"
      }
    ]
    
    • "name": substitua o valor pelo nome da aplicação Microsoft Entra esperado.
  3. Atualize o manifesto da aplicação.

    • É WebApplicationInfo necessário adicionar um objeto ao manifesto da aplicação para ativar o SSO na aplicação Teams. Para obter mais informações, consulte webApplicationInfo.

    Por exemplo: abra o modelo de manifesto da aplicação e acrescente o seguinte objeto no manifesto da aplicação:

    "webApplicationInfo": {
      "id": "${{AAD_APP_CLIENT_ID}}",
      "resource": "SAME_AS_YOUR_IDENTIFIERURIS"
    }
    

    Observação

    Tem de atualizar o valor do recurso para o identifierUris configurado no passo 1.i e utilizar ${{ENV_NAME}} para referenciar envs no env/.env.{TEAMSFX_ENV}.

    Exemplo para o modelo bot do TeamsFx:

    Abra o appPackage/manifest.json ficheiro e adicione a seguinte propriedade no ficheiro de manifesto da aplicação:

    "webApplicationInfo": {
      "id": "${{AAD_APP_CLIENT_ID}}",
      "resource": "api://botid-${{BOT_ID}}"
    }
    
    • Pode registar o comando commands em no commandLists bot:
    {
      "title": "YOUR_COMMAND_TITLE",
      "description": "YOUR_COMMAND_DESCRIPTION"
    }
    

    Exemplo para o modelo bot do TeamsFx:

    {
      "title": "show",
      "description": "Show user profile using Single Sign On feature"
    }
    

    Lembre-se de eliminar o comando "helloWorld" anterior, uma vez que não é utilizado.

    • Adicione também o domínio do bot a validDomain:
    "validDomains": [
      "${{BOT_DOMAIN}}"
    ]
    
  4. Atualização teamsapp.yml e teamsapp.local.yml ficheiros: as alterações e configurações relacionadas com o Microsoft Entra têm de ser adicionadas aos seus yml ficheiros:

    • Adicione aadApp/create em provision para criar novas aplicações Microsoft Entra utilizadas para SSO. Para obter mais informações, veja as ações disponíveis no Teams Toolkit.

    • Adicione aadApp/update em provision para atualizar a sua aplicação Microsoft Entra com o manifesto da aplicação Microsoft Entra no passo 1. Para obter mais informações, veja aadApp/update.

    • Atualize file/createOrUpdateJson o Ficheiro para adicionar as seguintes variáveis de ambiente durante a depuração local:

      1. ClientId: ID de cliente da aplicação Microsoft Entra.
      2. ClientSecret: segredo do cliente da aplicação Microsoft Entra.
      3. OAuthAuthority: Autoridade de oauth da aplicação Microsoft Entra. Para obter mais informações, veja file/updateJson.

    Exemplo de modelo de Bot do TeamsFx

    Em ficheiros teamsapp.yml e teamsapp.local.yml :

    • Adicione o código em provision para criar a aplicação 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
    

    Observação

    Substitua o valor de "name" pelo nome da aplicação Microsoft Entra esperado.

    • Adicione o código em provision para configurar a aplicação Microsoft Entra com o modelo da aplicação Microsoft Entra no passo 1.

      - uses: aadApp/update
              with:
                manifestPath: "./aad.manifest.json"
                outputFilePath : ./build/aad.manifest.${{TEAMSFX_ENV}}.json
      

      Observação

      Substitua o valor de "manifestPath" pelo caminho relativo do manifesto da aplicação Microsoft Entra indicado no passo 1. Por exemplo, "./aad.manifest.json"

    teamsapp.local.yml No ficheiro:

    • provision Atualize file/createOrUpdateJsonFile em para adicionar configurações relacionadas com o Microsoft Entra ao serviço de depuração local.

      - uses: file/createOrUpdateJsonFile
              with:
                target: ./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
      
  5. Atualize as configurações relacionadas com o Infra Microsoft Entra para configurar o serviço remoto. O exemplo seguinte mostra as configurações na Aplicação Web do Azure.

    1. TeamsFx__Authentication__ClientId: ID de cliente da aplicação Microsoft Entra.
    2. TeamsFx__Authentication__ClientSecret: segredo do cliente da aplicação Microsoft Entra.
    3. TeamsFx__Authentication__OAuthAuthority: Autoridade de autenticação da aplicação Microsoft Entra.
    4. TeamsFx__Authentication__Bot__InitiateLoginEndpoint: página inicial de autenticação para Bot.
    5. TeamsFx__Authentication__ApplicationIdUri: a aplicação Microsoft Entra identifica OS URIs.

    Exemplo para o modelo bot do TeamsFx:

    Abra o infra/azure.parameters.jsonficheiro, adicione o código a 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}}"
    }
    

    Abra o infra/azure.bicep ficheiro e localize o código:

    param location string = resourceGroup().location
    

    Atualize o código como:

    param m365ClientId string
    param m365TenantId string
    param m365OauthAuthorityHost string
    param m365ApplicationIdUri string = 'api://botid-${botAadAppClientId}'
    @secure()
    param m365ClientSecret string
    

    Adicione o código antes da saída:

    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'
      }
    }
    

    Observação

    Se quiser adicionar configurações adicionais à aplicação Web do Azure, adicione as configurações na webAppSettings.

  6. Atualize o appsettings.json ficheiro e o appsettings.Development.json ficheiro para configurações relacionadas com o Microsoft Entra que têm de ser configuradas para as definições do projeto .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
        }
      }
    }
    

    Observação

    Pode utilizar para referenciar $ENV_NAME$ envs no serviço local/remoto.

    Exemplo para o modelo bot do TeamsFx:

    Abra appsettings.json ficheiros e appsettings.Development.json adicione o código:

    "TeamsFx": {
      "Authentication": {
        "ClientId": "$clientId$",
        "ClientSecret": "$client-secret$",
        "OAuthAuthority": "$oauthAuthority$",
        "ApplicationIdUri": "$applicationIdUri$",
        "Bot": {
          "InitiateLoginEndpoint": "$initiateLoginEndpoint$"
        }
      }
    }
    
  7. Atualize o código para adicionar o SSO à sua aplicação Teams.

    Pode encontrar o código de exemplos:

    Exemplo para o modelo bot do TeamsFx:

    • Abra Config.cs e substitua o código:
    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; }
        }
    }
    

    Observação

    Substitua a {{YOUR_NAMESPACE}} propriedade pelo nome do espaço de nomes.

    • Mover TeamsFx-Auth/Bot/SSO e TeamsFx-Auth/Bot/Pages ficheiros para /.

      Observação

      Lembre-se de substituir {{YOUR_NAMESPACE}} pelo espaço de nomes do projeto.

    • Abra o Program.cs ficheiro e localize o código:

    builder.Services.AddSingleton<BotFrameworkAuthentication, ConfigurationBotFrameworkAuthentication>();
    

    Atualize o 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;
    });
    

    Localize o 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);
    });
    

    Atualize o 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);
    });
    

    Localize e elimine o código:

    // Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
    builder.Services.AddTransient<IBot, TeamsBot>();
    

    Localize o código:

    app.UseEndpoints(endpoints =>
    {
      endpoints.MapControllers();
    });
    

    Atualize o código como:

    app.UseEndpoints(endpoints =>
    {
      endpoints.MapControllers();
      endpoints.MapRazorPages();
    });
    

    Observação

    Tem de excluir o código de exemplo TeamsFx-Auth em para evitar falhas de criação ao adicionar o seguinte código ao .csproj ficheiro:

    <ItemGroup>
      <Compile Remove="TeamsFx-Auth/**/*" />
      <None Include="TeamsFx-Auth/**/*" />
      <Content Remove="TeamsFx-Auth/Tab/GetUserProfile.razor"/>
    </ItemGroup>
    
  8. Para verificar se a aplicação SSO funciona conforme esperado, execute o Local Debug no Visual Studio.

  9. Também pode executar a aplicação na cloud ao selecionar Provision in the cloud e, em seguida, selecionar Deploy to the cloud para atualizar a sua aplicação.

Confira também