Partilhar via


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:

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.

Diagram illustrating the relationship between authentication components in Azure AI Bot Service.

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:

  1. 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.
  2. 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.

Sequence diagram outlining the steps for a bot to send an email on behalf of a user.

  1. O usuário faz uma solicitação por e-mail para o bot.

  2. 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.

  3. 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 GraphConnectionOAuth.

  4. 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.

  5. 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.

  6. 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.

  7. É apresentada ao utilizador uma mensagem para iniciar sessão clicando no botão de início de sessão do OAuthCard.

  8. 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.

  9. 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.

  10. 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.

Consulte também