Compartilhar via


Tipos de autenticação

APLICA-SE A: SDK v4

No Bot Framework, existem duas categorias amplas de autenticação: a autenticação de bot e a autenticação de usuário. Cada uma das categorias tem um token associado para permitir o acesso a recursos seguros. A imagem a seguir mostra os elementos envolvidos na autenticação de bot e de usuário.

Diagrama que ilustra a diferença entre o token de um bot e o token de um usuário.

Nesta imagem:

  • Plataforma de hospedagem corresponde à plataforma de hospedagem de bots. Pode ser o Azure ou qualquer plataforma de hospedagem de sua escolha.
  • O Serviço do Bot Connector facilita a comunicação entre um bot e um canal. Ele converte as mensagens recebidas de canais em objetos de atividade e as envia para o ponto de extremidade de mensagens do bot. De forma semelhante, ele converte objetos de atividade recebidos do bot em mensagens com reconhecimento por parte do canal e as envia para o canal.
  • Adaptador de bot corresponde ao adaptador do Bot Framework padrão. Ele:
    • Converte o payload JSON em um objeto de atividade.
    • Cria um contexto de turno e adiciona o objeto de atividade a ele.
    • Executa middleware, se houver algum.
    • Encaminha o contexto de turno para o bot.

Observação

Quando um adaptador de canal personalizado é usado, o próprio adaptador executa as tarefas que o serviço do Bot Connector e o Adaptador de Bot padrão executam. Além disso, ele fornece o mecanismo de autenticação para a API de web hook relacionada. Por exemplo, confira Conectar um bot ao Slack usando o adaptador do Slack.

Autenticação do bot

Um bot é identificado por seu MicrosoftAppID e MicrosoftAppPassword, que são mantidos nos arquivos de configurações do bot (appsettings.json (.NET), .env (JavaScript), config.py (Python)) ou em um gerenciador de segredos ou de chaves. Para obter mais informações, confira MicrosoftAppID e MicrosoftAppPassword.

Ao efetuar o registro de um bot no portal do Azure, o Azure cria um aplicativo de registro do Microsoft Entra ID. Se você usar a CLI do Bot Framework, deverá executar especificamente uma etapa para criar o registro do Microsoft Entra ID. Este registro tem um ID de aplicativo (MicrosoftAppID) e um segredo do cliente (MicrosoftAppPassword). O Azure utiliza estes valores para gerar um token com o qual o bot pode obter acesso a recursos seguros.

Quando um canal envia uma solicitação a um bot, por meio do serviço do Bot Connector, ele especifica um token no cabeçalho de autorização da solicitação. O bot autentica chamadas do serviço do Bot Connector ao verificar a autenticidade do token.

Quando o bot envia uma solicitação para um canal por meio do serviço do Bot Connector, ele deve especificar o token no cabeçalho de autorização da solicitação. Todas as solicitações devem incluir o token de acesso, que é verificado pelo serviço do Bot Connector para autorizar a solicitação.

As operações descritas são executadas automaticamente pelo SDK do Bot Framework.

Para obter mais informações, confira a documentação da API REST sobre como autenticar solicitações do serviço do Bot Connector para seu bot e sobre como autenticar solicitações de seu bot para o serviço do Bot Connector.

Canais

Normalmente, a comunicação dos canais com um bot ocorre por meio do serviço do Bot Connector, portanto, os princípios de autenticação anteriores geralmente se aplicam. Alguns canais e recursos têm considerações de autenticação exclusivas.

Direct Line

Além dos canais padrão com suporte, um aplicativo cliente pode se comunicar com um bot usando o canal Direct Line.

O aplicativo cliente autentica solicitações para o canal Direct Line (versão 3.0) ao usar um segredo obtido na página de configuração do canal Direct Line no portal do Azure ou, como opção mais adequada, ao usar um token obtido no runtime. O segredo ou token é especificado no cabeçalho de autorização de cada solicitação.

Importante

Ao usar a autenticação do Serviço de Bot de IA do Azure com o Webchat, há algumas considerações de segurança importantes que precisam ser levadas em consideração. Para obter mais informações, confira a seção considerações sobre segurança no artigo de autenticação REST.

Para obter mais informações, confira Mantenha seu segredo oculto, troque seu segredo por um token e gere a incorporação.

Chat da Web

O Webchat tem duas implementações: o canal e o controle.

  • Quando você efetua o registro de um bot no Azure, o canal Webchat é configurado automaticamente para permitir o teste do bot. Para obter mais informações, confira Conectar um bot ao Webchat.
  • É possível usar um controle do Webchat com o canal Direct Line para fornecer acesso a um bot em um aplicativo cliente. Para obter mais informações sobre o controle, confira Webchat do Bot Framework.

Habilidades

Uma habilidade e um consumidor de habilidade são dois bots distintos, cada um com sua própria ID do aplicativo e senha.

  • O consumidor pode encaminhar as atividades do usuário para uma habilidade e encaminhar as respostas da habilidade para o usuário.
  • Para a habilidade, o consumidor de habilidade atua como um canal. O consumidor tem um ponto de extremidade de hospedagem da habilidade que atua como o URL de serviço para o qual a habilidade envia atividades.
  • Para obter mais informações sobre as habilidades, confira a visão geral sobre as habilidades.

A autenticação de nível de serviço é gerenciada pelo serviço do Bot Connector. A estrutura usa tokens de portador e IDs de aplicativo de bot para verificar a identidade de cada bot.

Importante

Isso requer que todos os bots (o consumidor de habilidades e quaisquer habilidades que ele consome) tenham credenciais válidas para o aplicativo.

Validação de declarações

Além desse nível básico de autenticação, você deve adicionar um validador de declarações à configuração de autenticação da habilidade e do consumidor de habilidades. As declarações são avaliadas após o cabeçalho de autenticação. Este processo permite que cada bot restrinja de quais outros bots aceitará atividades.

Para obter amostrar de validação de declarações, veja como implementar uma habilidade e como implementar um consumidor de habilidades.

Bot Framework Emulator

O Bot Framework Emulator tem seu próprio fluxo de autenticação e seus próprios tokens. O Emulator tem seu próprio canal e um servidor interno.

Autenticação de usuário

Às vezes, um bot deve acessar recursos online seguros em nome do usuário. Para fazer isso, o bot deve estar autorizado. Isso ocorre porque para executar determinadas operações, como verificar emails, verificar o status de voo ou fazer um pedido, o bot precisa chamar um serviço externo, como o Microsoft Graph, o GitHub ou o serviço REST de uma empresa. O OAuth é usado para autenticar o usuário e autorizar o bot.

Observação

Duas macro etapas estão envolvidas para que um bot acesse os recursos de um usuário.

  1. Autenticação. O processo de verificação da identidade do usuário.
  2. Autorização. O processo de verificação de que o bot pode acessar os recursos do usuário.

Se a primeira etapa for bem-sucedida, um token baseado nas credenciais do usuário será emitido. Na segunda etapa, o bot utiliza o token para acessar os recursos do usuário.

Para obter mais informações, confira Autenticação do usuário.

Provedores de identidade

Um provedor de identidade autentica as identidades do usuário ou do cliente e emite tokens de segurança consumíveis. Ele fornece autenticação de usuário como um serviço. Os aplicativos cliente, como aplicativos Web, delegam a autenticação a um provedor de identidade confiável.

Um bot pode usar um provedor de identidade confiável para:

  • Habilitar recursos de logon único (SSO), permitindo o acesso a vários recursos seguros.
  • Conectar-se a recursos de computação em nuvem em nome de um usuário, diminuindo a necessidade de os usuários se autenticarem novamente.

Observação

O token emitido durante a autenticação do bot não é o mesmo token emitido durante a autenticação do usuário. O primeiro é usado para estabelecer uma comunicação segura entre um bot, canais e, em última análise, aplicativos clientes. O segundo é usado para autorizar o bot a acessar recursos seguros em nome do usuário.

Observe que os canais fornecem a própria autenticação do usuário separada para permitir que um usuário inicie a sessão no canal.

Confira Provedores de identidades para saber mais sobre como os bots podem usar provedores de identidades para acessar recursos em nome de um usuário.