Ativar o início de sessão único para a aplicação Teams
Artigo
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 Microsoft Teams Toolkit simplifica o processo ao incorporar determinados fluxos de trabalho Microsoft Entra e integrações em APIs simples e de alto nível. Como resultado, pode incorporar facilmente capacidades de SSO na sua aplicação Teams. Para obter mais informações, consulte Autenticar utilizadores no Microsoft Teams.
Configurações de chaves
Para ativar o SSO, configure a aplicação Teams da seguinte forma:
Microsoft Entra manifesto da aplicação: certifique-se de que define URIs, incluindo o URI que identifica a aplicação de autenticação Microsoft Entra e o URI de redirecionamento que devolve o token.
Manifesto da aplicação Teams: ligue a sua aplicação SSO à sua aplicação Teams ao incorporar a configuração correta.
Configuração e ficheiros de infraestrutura do Teams Toolkit: certifique-se de que as configurações necessárias estão implementadas para ativar o SSO para a sua aplicação Teams.
Informações da aplicação SSO nos ficheiros de configuração do Teams Toolkit: certifique-se de que a aplicação de autenticação se regista no serviço de back-end e o Teams Toolkit inicia-o durante a depuração ou pré-visualização da aplicação Teams.
Transfira o modelo de manifesto da aplicação Microsoft Entra.
Adicione o código do modelo de manifesto de aplicação transferido ao ./aad.manifest.json ficheiro. Isto permite-lhe personalizar diferentes aspetos do registo de aplicações e atualizar o manifesto conforme necessário. Para obter mais informações, consulte o manifesto do aplicativo.
Atualizar manifesto da aplicação Teams
./appPackages/manifest.json No ficheiro, adicione o seguinte código:
webApplicationInfofornece a sua Microsoft Entra ID da Aplicação e informações do Microsoft Graph para ajudar os utilizadores a iniciar sessão na sua aplicação.
Observação
Pode utilizar para referenciar {{ENV_NAME}} variáveis no env/.env.{TEAMSFX_ENV} ficheiro.
Atualizar ficheiros de configuração do Teams Toolkit
Localize os seus ficheiros de configuração do Teams Toolkit, tais como ./teamsapp.yml e ./teamsapp.local.yml. Atualize as configurações necessárias relacionadas com Microsoft Entra nestes ficheiros.
Adicione a ação aadApp/createprovision em e ./teamsapp.local.yml./teamsapp.yml para criar uma nova aplicação Microsoft Entra utilizada para SSO:
Atualize o manifestPath valor para o caminho relativo do modelo aad.manifest.jsonde manifesto da aplicação Microsoft Entra , se tiver alterado o caminho do ficheiro.
Numa configuração local, posicione o aad/update após a ação file/createOrUpdateEnvironmentFile . Isto é necessário porque aad/update utiliza o resultado de file/createOrUpdateEnvironmentFile.
Para um projeto React, atualize cli/runNpmCommand em deploy.
Se estiver a criar uma aplicação de separador com a estrutura de React na CLI, localize a ação cli/runNpmCommand com build app no teamsapp.yml ficheiro e adicione as seguintes variáveis de ambiente:
Se estiver a criar uma aplicação de separador com React arquitetura, localize a ação file/createOrUpdateEnvironmentFile de implementação no teamsapp.local.yml ficheiro e adicione as seguintes variáveis de ambiente:
Mova os auth-start.html ficheiros e auth-end.html da auth/public pasta para a public/ pasta . Estes ficheiros HTML servem o objetivo de processar redirecionamentos de autenticação.
Mover sso a pasta para baixo auth/ para src/sso/.
InitTeamsFx: este ficheiro executa uma função que inicializa o SDK do TeamsFx. Após a inicialização do SDK, abre o GetUserProfile componente.
GetUserProfile: este ficheiro executa uma função para obter as informações do utilizador ao invocar o microsoft API do Graph.
Transfira o modelo de manifesto da aplicação Microsoft Entra.
Adicione o código do modelo de manifesto de aplicação transferido ao ./aad.manifest.json ficheiro. Isto permite-lhe personalizar diferentes aspetos do registo de aplicações e atualizar o manifesto conforme necessário. Para obter mais informações, consulte o manifesto do aplicativo.
Atualizar manifesto da aplicação Teams
./appPackages/manifest.json No ficheiro, adicione o seguinte código:
webApplicationInfofornece a sua Microsoft Entra ID da Aplicação e informações do Microsoft Graph para ajudar os utilizadores a iniciar sessão na sua aplicação.
Observação
Pode utilizar para referenciar {{ENV_NAME}} variáveis no env/.env.{TEAMSFX_ENV} ficheiro.
Registe um ou mais comandos no commandLists.
Inclui commandLists comandos que o bot pode sugerir aos utilizadores. Se estiver a utilizar o teamsFx modelo de bot, defina os seguintes valores:
{
"title": "profile",
"description": "Show user profile using Single Sign On feature"
}
O validDomains campo inclui os domínios dos sites que a aplicação carrega no cliente do Teams. Atualize o seguinte valor:
"validDomains": [
"${{BOT_DOMAIN}}"
]
Atualizar ficheiros de configuração do Teams Toolkit
Localize os seus ficheiros de configuração do Teams Toolkit, tais como ./teamsapp.yml e ./teamsapp.local.yml. Atualize as configurações necessárias relacionadas com Microsoft Entra nestes ficheiros.
Adicione o seguinte código aadApp/createprovision em e ./teamsapp.yml./teamsapp.local.yml para criar novas aplicações Microsoft Entra utilizadas para o SSO:
Atualize o manifestPath valor para o caminho relativo do modelo aad.manifest.jsonde manifesto da aplicação Microsoft Entra , se tiver alterado o caminho do ficheiro.
Atualize as configurações relacionadas com Microsoft Entra no seu serviço remoto. O exemplo seguinte mostra as definições de configuração numa Aplicação Web do Azure:
M365_CLIENT_ID: Microsoft Entra ID de cliente da aplicação
M365_CLIENT_SECRET: segredo do cliente da aplicação Microsoft Entra
M365_TENANT_ID: ID de inquilino da aplicação Microsoft Entra
INITIATE_LOGIN_ENDPOINT: página inicial de início de sessão para autenticação
M365_AUTHORITY_HOST: Microsoft Entra anfitrião da autoridade OAuth da aplicação
M365_APPLICATION_ID_URI: URI do identificador para Microsoft Entra aplicação
Para utilizar o teamsFx modelo de separador ou bot, siga estes passos:
Abra o infra/azure.parameters.json ficheiro e adicione o seguinte código:
Mova os ficheiros localizados na auth/sso pasta para src. A ProfileSsoCommandHandler classe funciona como um processador de comandos SSO, concebido para obter informações de utilizador com um token de SSO. Pode adotar este método para desenvolver o seu próprio processador de comandos SSO.
Mova a auth/public pasta para src/public. Esta pasta contém páginas HTML para a aplicação de bot. Ao iniciar fluxos de SSO com Microsoft Entra, o utilizador é redirecionado para estas páginas.
Execute o seguinte comando na ./ pasta:
npm install copyfiles --save-dev
Atualize o seguinte comando no package.json ficheiro:
Atualize commandApp.requestHandler para garantir que a autenticação funciona com o seguinte código:
await commandApp.requestHandler(req, res).catch((err) => {
// Error message including "412" means it is waiting for user's consent, which is a normal process of SSO, sholdn't throw this error.
if (!err.message.includes("412")) {
throw err;
}
});
Adicionar ssoConfig e ssoCommands em ConversationBotsrc/internal/initialize:
import { ProfileSsoCommandHandler } from "../profileSsoCommandHandler";
export const commandBot = new ConversationBot({
...
// To learn more about ssoConfig, please refer teamsfx sdk document: https://docs.microsoft.com/microsoftteams/platform/toolkit/teamsfx-sdk
ssoConfig: {
aad :{
scopes:["User.Read"],
},
},
command: {
enabled: true,
commands: [new HelloWorldCommandHandler() ],
ssoCommands: [new ProfileSsoCommandHandler()],
},
});
Implemente a chave handleMessageExtensionQueryWithSSO de API no TeamsActivityHandler.handleTeamsMessagingExtensionQuery. Para obter mais informações, veja SSO para extensões de mensagens.
Mova a auth/public pasta para src/public. Esta pasta contém páginas HTML para a aplicação de bot. Ao iniciar fluxos de SSO com Microsoft Entra, o utilizador é redirecionado para estas páginas.
Atualize o ficheiro src/index para adicionar o : adequado restify
const path = require("path");
// Listen for incoming requests.
server.post("/api/messages", async (req, res) => {
await adapter.process(req, res, async (context) => {
await bot.run(context);
}).catch((err) => {
// Error message including "412" means it is waiting for user's consent, which is a normal process of SSO, sholdn't throw this error.
if(!err.message.includes("412")) {
throw err;
}
})
});
server.get(
"/auth-:name(start|end).html",
restify.plugins.serveStatic({
directory: path.join(__dirname, "public"),
})
);
Execute os seguintes comandos na ./ pasta:
npm install @microsoft/teamsfx
npm install isomorphic-fetch
Implemente a chave handleMessageExtensionQueryWithSSO de API no TeamsActivityHandler.handleTeamsMessagingExtensionQuery.
Instale copyfiles pacotes npm no projeto de bot TypeScript e atualize o build script no src/package.json ficheiro da seguinte forma:
Para depurar a sua aplicação, selecione a chave F5 . O Teams Toolkit utiliza o manifesto Microsoft Entra para registar uma aplicação com SSO ativado. Para obter mais informações, veja depurar a sua aplicação Teams localmente.
Personalizar aplicações Microsoft Entra
O manifesto de aplicação do Teams permite-lhe personalizar diferentes aspetos do registo de aplicações. Pode atualizar o manifesto conforme necessário.
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.