Adicionar código para ativar o SSO para Ações Universais de Cartões Ajustáveis
Os passos de autenticação para o início de sessão único (SSO) são semelhantes aos de um bot no Teams. Seguem-se os passos para alcançar o SSO na Ação Universal de Cartões Ajustáveis.
Observação
Para implementar o fluxo de SSO, tem de ter uma conversa individual declarada para o bot no manifesto da aplicação. Quando um utilizador da aplicação invoca o fluxo de SSO através do protocolo Cartão Action.Execute
Ajustável, é apresentado um pedido para permitir que o utilizador da aplicação instale a aplicação num âmbito pessoal, caso não a tenha instalado.
Adicionar código para processar um token de acesso
Certifique-se de que configurou o bot no Microsoft Entra ID para obter o token de acesso. Pode atualizar o código para processar o token de acesso das Ações Universais de Cartões Ajustáveis no bot.
Se existir um token em cache, o bot utiliza o mesmo token. Se não existir nenhum token disponível, o Cartão Ajustável envia uma resposta de invocação para o serviço de bot, que envia um card OAuth com os seguintes valores que incluem um tokenExchangeResource
para designar uma operação de SSO:
{
"statusCode": 401,
"type": "application/vnd.microsoft.activity.loginRequest",
"value": {
"text": "Please sign-in",
"connectionName": "<configured-connection-name>",
"tokenExchangeResource": {
"id": "<unique-indentifier>",
"uri": "<application-or-resource-identifier>",
"providerId": "<optional-provider-identifier>"
},
"buttons": [
{
"title": "Sign-In",
"text": "Sign-In",
"type": "signin",
"value": "<sign-in-URL>"
}
]
}
}
O serviço de bot fornece a resposta de invocação ao cliente do Teams, que utiliza o tokenExchangeResource
valor e o token de cliente do Teams para obter um token em nome ou token permutável de Microsoft Entra ID.
O SSO falha quando o cliente do Teams ignora o tokenExchangeResource
valor por qualquer motivo, incluindo valores inválidos, erros ao obter tokens permutáveis ou se Microsoft Entra ID não suportar o valor. Em seguida, o cliente do Teams aciona o início de sessão nominal ou o fluxo OAuth. Recomendamos que forneça um URL de início de sessão na resposta para que o fluxo OAuth funcione.
Caixa de diálogo de consentimento para obter o token de acesso
Se o utilizador da aplicação estiver a utilizar um Cartão Ajustável pela primeira vez, terá de dar consentimento para que a aplicação utilize a respetiva identidade. É apresentada a seguinte caixa de diálogo:
Quando o utilizador da aplicação seleciona Ver e aceita, a vista de consentimento de permissão de Microsoft Entra existente é apresentada para mostrar todas as permissões. O utilizador da aplicação pode continuar com o fluxo de autenticação.
Adicionar código para receber o token
O cliente do Teams envia o original
adaptiveCard/action
novamente para o bot juntamente com o token da seguinte forma:{ "type": "invoke", "name": "adaptiveCard/action" "value": { "action": { "id": "abc123", "type": "Action.Execute", "verb": "saveCommand", "data": { "firstName": "Jeff", "lastName": "Derstadt" } }, "authentication": { "id": "8769-xyz", "connectionName": "oauthConnection", "token": "...single sign-on token..." } } }
O fragmento de código seguinte mostra como receber a atividade de invocação no serviço de bot:
protected override async Task<InvokeResponse> OnInvokeActivityAsync(ITurnContext<IInvokeActivity> turnContext, CancellationToken cancellationToken) { JObject value = JsonConvert.DeserializeObject<JObject> (turnContext.Activity.Value.ToString()); JObject authentication = null; if (value["authentication"] != null) { authentication = JsonConvert.DeserializeObject<JObject>(value["authentication"].ToString()); } }
O cliente do Teams envia um pedido de invocação para o bot. O bot recebe o consentimento dos utilizadores da aplicação e utiliza a respetiva identidade para ajudar o processo de troca de tokens com o serviço de tokens do bot framework e Microsoft Entra ID. O serviço de tokens do bot framework fornece aos utilizadores da aplicação o token de acesso ao bot.
O serviço de bot ignora o token de acesso se o valor estiver incorreto.
O serviço de bot que apresenta um erro ao realizar a troca de tokens tem de responder com um erro ou um segundo pedido de início de sessão que não inclua informações de SSO. Se o serviço de bot responder com um erro, o erro tem de ser:
{ "statusCode" = 412, "type" = "application/vnd.microsoft.error.preconditionFailed", "value" = { "code" = "412", "message" = "authentication token expired" } }
Quando o SSO falha, o cliente do Teams mostra um botão de início de sessão no rodapé card para iniciar o fluxo de início de sessão nominal.
O bot utiliza o token de acesso em nome do utilizador da aplicação para realizar as ações.
O bot devolve uma resposta sem erros ao cliente do Teams através de uma card ou mensagem.
Observação
Para processar o token de acesso caso o utilizador da aplicação termine sessão, veja Processar o início de sessão do utilizador da aplicação.
Exemplo de código
Nome de exemplo | Descrição | .NET | Node.js | Manifesto |
---|---|---|---|---|
SSO para as Suas Ações Universais de Cartões Ajustáveis | Este código de exemplo demonstra como ativar a autenticação SSO para as Suas Ações Universais de Cartões Ajustáveis no bot. | View | View | Exibir |