Autenticação do utilizador
APLICA-SE A: SDK v4
Às vezes, um bot deve acessar recursos on-line seguros em nome do usuário, como verificar e-mails, verificar o status do voo ou fazer um pedido. O usuário deve autorizar o bot a fazê-lo em seu nome e, para autorizar o bot, o usuário deve autenticar sua identidade. O OAuth é usado para autenticar o usuário e autorizar o bot. Consulte também Tipos de autenticação.
Se você quiser atualizar seu conhecimento de OAuth, consulte o seguinte:
- Boa visão geral do OAuth mais fácil de seguir do que a especificação formal
- Especificação OAuth
Autenticação do usuário em uma conversa
Para executar determinadas operações em nome de um usuário, como verificar e-mails, fazer referência a um calendário, verificar o status do voo ou fazer um pedido, o bot precisará chamar um serviço externo, como o Microsoft Graph, o GitHub ou o serviço REST de uma empresa. Cada serviço externo tem uma forma de proteger essas chamadas. Uma maneira comum de emitir essas solicitações é usar um token de usuário que identifique exclusivamente o usuário nesse serviço externo (às vezes chamado de JSON Web Token (JWT)).
Para proteger a chamada para um serviço externo, o bot deve pedir ao usuário para entrar, para que ele possa adquirir o token do usuário para esse serviço. Muitos serviços suportam a recuperação de tokens através do protocolo OAuth ou OAuth2 .
O Serviço de Bot do Azure AI fornece cartões de entrada especializados e serviços que funcionam com o protocolo OAuth e gerenciam o ciclo de vida do token. Um bot pode usar esses recursos para adquirir um token de usuário.
Como parte da configuração do bot, uma conexão OAuth é registrada no recurso do Serviço de Bot do Azure AI no Azure.
A conexão contém informações sobre o provedor de identidade a ser usado, juntamente com um ID de cliente OAuth válido e segredo, os escopos OAuth a serem habilitados e quaisquer outros metadados de conexão exigidos por esse provedor de identidade.
No código do bot, a conexão OAuth é usada para ajudar a entrar o usuário e obter o token de usuário.
A imagem a seguir mostra os elementos envolvidos no processo de autenticação.
Sobre o Serviço de Token do Bot Framework
O Bot Framework Token Service é responsável por:
- Facilitar a utilização do protocolo OAuth com uma grande variedade de serviços externos.
- Armazenamento seguro de tokens para um bot, canal, conversa e usuário específicos.
- Aquisição de tokens de usuário.
Gorjeta
Se o bot tiver um token de usuário expirado, o bot deverá:
- Terminar sessão do utilizador
- Iniciar o fluxo de entrada novamente
Por exemplo, um bot que pode verificar os e-mails recentes de um usuário, usando a API do Microsoft Graph, requer um token de usuário de um provedor de identidade, neste caso o Microsoft Entra ID. No momento do design, o desenvolvedor do bot executa estas duas etapas importantes:
- Registra um aplicativo Microsoft Entra ID, um Provedor de Identidade, com o Serviço de Token do Bot Framework, por meio do portal do Azure.
- Configura uma conexão OAuth (nomeada, por exemplo
GraphConnection
) para o bot.
A imagem a seguir mostra a sequência de tempo da interação do usuário com um bot quando uma solicitação de email é feita usando o serviço Microsoft Graph.
O usuário faz uma solicitação por e-mail para o bot.
Uma atividade com essa mensagem é enviada do usuário para o serviço de canal do Bot Framework. O serviço de canal garante que o campo dentro da atividade foi definido e a mensagem é enviada para o
userid
bot.Nota
Os IDs de usuário são específicos do canal, como o ID do Facebook do usuário ou seu número de telefone SMS.
O bot faz uma solicitação ao Serviço de Token do Bot Framework perguntando se ele já tem um token para o UserId para a conexão
GraphConnection
OAuth.Como esta é a primeira vez que esse usuário interage com o bot, o Bot Framework Token Service ainda não tem um token para esse usuário e retorna um resultado NotFound para o bot.
Nota
Se o token for encontrado, as etapas de autenticação serão ignoradas e o bot poderá fazer a solicitação de e-mail usando o token armazenado.
O bot cria um OAuthCard com um nome de conexão e
GraphConnection
responde ao usuário que pede para entrar usando esse cartão.A atividade passa pelo Serviço de Canal do Bot Framework, que chama o Serviço de Token do Bot Framework para criar uma URL de entrada OAuth válida para essa solicitação. Este URL de início de sessão é adicionado ao OAuthCard e o cartão é devolvido ao utilizador.
É apresentada ao utilizador uma mensagem para iniciar sessão clicando no botão de início de sessão do OAuthCard.
Quando o usuário clica no botão de entrada, o serviço de canal abre um navegador da Web e chama o serviço externo para carregar sua página de entrada.
O utilizador inicia sessão nesta página para o serviço externo. Em seguida, o serviço externo conclui a troca do protocolo OAuth com o Bot Framework Token Service, resultando no serviço externo enviando o token de usuário ao Bot Framework Token Service. O Serviço de Token do Bot Framework armazena esse token com segurança e envia uma atividade para o bot com esse token.
O bot recebe a atividade com o token e é capaz de usá-lo para fazer chamadas contra a API do MS Graph.
Proteger o URL de início de sessão
Uma consideração importante quando o Bot Framework facilita um login de usuário é como proteger a URL de login. Quando um usuário é apresentado a uma URL de entrada, essa URL é associada a uma ID de conversa e ID de usuário específicos para esse bot. Não compartilhe esse URL — isso faria com que o login errado ocorresse para uma conversa de bot específica. Para atenuar os ataques de segurança que utilizam um URL de início de sessão partilhado, certifique-se de que a máquina e a pessoa que clica no URL de início de sessão é a pessoa proprietária da janela de conversação.
Alguns canais como Microsoft Teams, Direct Line e WebChat são capazes de fazer isso sem que o usuário perceba. Por exemplo, o WebChat usa cookies de sessão para garantir que o fluxo de entrada ocorra no mesmo navegador que a conversa do WebChat. No entanto, para outros canais, o usuário é frequentemente apresentado com um código mágico de 6 dígitos. Isso é semelhante a uma autenticação multifator integrada, já que o Bot Framework Token Service não liberará o token para o bot a menos que o usuário termine a autenticação final, provando que a pessoa que entrou tem acesso à experiência de bate-papo inserindo o código de 6 dígitos.
Importante
Por favor, tenha em mente estas importantes considerações de segurança. Você pode encontrar informações adicionais nesta postagem de blog: Usando o WebChat com a Autenticação do Serviço de Bot do Azure AI.
Próximos passos
Agora que você já sabe sobre a autenticação do usuário, vamos dar uma olhada em como aplicá-la ao seu bot.