Troubleshooting Bot Framework authentication (Resolver problemas de autenticação do Bot Framework)

APLICA-SE A: SDK v4

Este guia pode ajudá-lo a solucionar problemas de autenticação com seu bot avaliando uma série de cenários para determinar onde o problema existe.

Nota

Para concluir todas as etapas deste guia, você precisará baixar e usar o Emulador do Bot Framework e deve ter acesso às configurações de registro do bot no portal do Azure.

ID e palavra-passe da Aplicação

A segurança do Bot é configurada pela ID do Aplicativo Microsoft e pela Senha do Aplicativo Microsoft que você obtém quando registra seu bot no Bot Framework. Esses valores são normalmente especificados no arquivo de configuração do bot e usados para recuperar tokens de acesso do serviço de Conta da Microsoft.

Se você ainda não tiver feito isso, implante seu bot no Azure para obter uma ID de Aplicativo da Microsoft e uma Senha de Aplicativo da Microsoft que ele possa usar para autenticação.

Nota

Para encontrar o AppID e o AppPassword do seu bot para um bot já implantado, consulte MicrosoftAppID e MicrosoftAppPassword.

Etapa 1: Desativar a segurança e testar no localhost

Nesta etapa, você verificará se seu bot está acessível e funcional no localhost quando a segurança estiver desativada.

Aviso

Desativar a segurança do seu bot pode permitir que invasores desconhecidos se passem por usuários. Implemente o procedimento a seguir somente se estiver operando em um ambiente de depuração protegido.

Desativar a segurança

Para desativar a segurança do bot, edite suas definições de configuração para remover os valores de ID e senha do aplicativo.

Se você estiver usando o SDK do Bot Framework para .NET, adicione ou edite as configurações em seu arquivo appsettings.json :

"MicrosoftAppId": "",
"MicrosoftAppPassword": ""

Teste seu bot no localhost

Em seguida, teste seu bot no localhost usando o Bot Framework Emulator.

  1. Inicie seu bot no localhost.
  2. Inicie o emulador do Bot Framework.
  3. Conecte-se ao seu bot usando o emulador.
    • Digite http://localhost:port-number/api/messages na barra de endereço do emulador, onde o número da porta corresponde ao número da porta mostrado no navegador em que o aplicativo está sendo executado.
    • Verifique se os campos ID do Aplicativo Microsoft e Senha do Aplicativo Microsoft estão vazios.
    • Clique em Ligar.
  4. Para testar a conectividade com seu bot, digite algum texto no emulador e pressione Enter.

Se o bot responder à entrada e não houver erros na janela de chat, você verificou se o bot está acessível e funcional no localhost quando a segurança estiver desativada. Prossiga para o Passo 2.

Se um ou mais erros forem indicados na janela de chat, clique no(s) erro(s) para obter detalhes. Problemas comuns:

  • As configurações do emulador especificam um ponto de extremidade incorreto para o bot. Certifique-se de que incluiu o número da porta adequado no URL e o caminho adequado no final do URL, como /api/messages.
  • As configurações do emulador especificam um ponto de extremidade de bot que começa com https. No localhost, o ponto de extremidade deve começar com http.
  • As configurações do emulador especificam um valor para o campo ID do aplicativo Microsoft e/ou o campo Senha do aplicativo Microsoft. Ambos os campos devem estar vazios.
  • A segurança não foi desativada para o bot. Verifique se o bot não especifica um valor para ID ou senha do aplicativo.

Etapa 2: verificar o ID e a senha do aplicativo do bot

Nesta etapa, você verificará se o ID do aplicativo e a senha que seu bot usará para autenticação são válidos. (Se você não sabe esses valores, obtenha-os agora.)

Aviso

As instruções a seguir desativam a verificação SSL para login.microsoftonline.com. Execute este procedimento apenas em uma rede segura e considere alterar a senha do seu aplicativo depois.

Emitir uma solicitação HTTP para o serviço de logon da Microsoft

Estas instruções descrevem como usar cURL para emitir uma solicitação HTTP para o serviço de logon da Microsoft. Você pode usar uma ferramenta alternativa, como o Postman, apenas certifique-se de que a solicitação esteja em conformidade com o protocolo de autenticação do Bot Framework.

Para verificar se o ID e a senha do aplicativo do bot são válidos, execute a seguinte solicitação usando o cURL, substituindo APP_ID e APP_PASSWORD com o ID e a senha do aplicativo do bot.

Gorjeta

Sua senha pode conter caracteres especiais que tornam a chamada a seguir inválida. Em caso afirmativo, tente converter sua senha em codificação de URL.

curl -k -X POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token -d "grant_type=client_credentials&client_id=APP_ID&client_secret=APP_PASSWORD&scope=https%3A%2F%2Fapi.botframework.com%2F.default"

Essa solicitação tenta trocar o ID e a senha do aplicativo do bot por um token de acesso. Se a solicitação for bem-sucedida, você receberá uma carga JSON que contém uma access_token propriedade, entre outras.

{"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAJKV1Q..."}

Se a solicitação for bem-sucedida, você verificou se o ID do aplicativo e a senha especificados na solicitação são válidos. Prossiga para o Passo 3.

Se você receber um erro em resposta à solicitação, examine a resposta para identificar a causa do erro. Se a resposta indicar que o ID do aplicativo ou a senha são inválidos, obtenha os valores corretos no Portal do Bot Framework e reemita a solicitação com os novos valores para confirmar que eles são válidos.

Etapa 3: Habilitar a segurança e testar no localhost

Neste ponto, você verificou se seu bot está acessível e funcional no localhost quando a segurança está desativada e confirmou que o ID do aplicativo e a senha que o bot usará para autenticação são válidos. Nesta etapa, você verificará se seu bot está acessível e funcional no localhost quando a segurança estiver ativada.

Habilite a segurança

A segurança do seu bot depende dos serviços da Microsoft, mesmo quando o bot está sendo executado apenas no localhost. Para habilitar a segurança para seu bot, edite suas definições de configuração para preencher a ID e a senha do aplicativo com os valores verificados na Etapa 2. Além disso, certifique-se de que seus pacotes estão atualizados, especificamente System.IdentityModel.Tokens.Jwt e Microsoft.IdentityModel.Tokens.

Se você estiver usando o SDK do Bot Framework para .NET, preencha essas configurações em seu appsettings.config arquivo ou os valores correspondentes em seu appsettings.json arquivo:

<appSettings>
  <add key="MicrosoftAppId" value="APP_ID" />
  <add key="MicrosoftAppPassword" value="PASSWORD" />
</appSettings>

Se você estiver usando o SDK do Bot Framework para Node.js, preencha essas configurações (ou atualize as variáveis de ambiente correspondentes):

var connector = new builder.ChatConnector({
  appId: 'APP_ID',
  appPassword: 'PASSWORD'
});

Nota

Para encontrar o AppID e o AppPassword do seu bot, consulte MicrosoftAppID e MicrosoftAppPassword.

Teste seu bot no localhost

Em seguida, teste seu bot no localhost usando o Bot Framework Emulator.

  1. Inicie seu bot no localhost.
  2. Inicie o emulador do Bot Framework.
  3. Conecte-se ao seu bot usando o emulador.
    • Digite http://localhost:port-number/api/messages na barra de endereço do emulador, onde o número da porta corresponde ao número da porta mostrado no navegador em que o aplicativo está sendo executado.
    • Insira a ID do aplicativo do bot no campo ID do aplicativo Microsoft.
    • Introduza a palavra-passe do bot no campo Palavra-passe da Aplicação Microsoft .
    • Clique em Ligar.
  4. Para testar a conectividade com seu bot, digite algum texto no emulador e pressione Enter.

Se o bot responder à entrada e não houver erros na janela de chat, você verificou se o bot está acessível e funcional no localhost quando a segurança estiver ativada. Prossiga para o Passo 4.

Se um ou mais erros forem indicados na janela de chat, clique no(s) erro(s) para obter detalhes. Problemas comuns:

  • As configurações do emulador especificam um ponto de extremidade incorreto para o bot. Certifique-se de que incluiu o número da porta adequado no URL e o caminho adequado no final do URL, como /api/messages.
  • As configurações do emulador especificam um ponto de extremidade de bot que começa com https. No localhost, o ponto de extremidade deve começar com http.
  • Nas configurações do emulador, o campo ID do aplicativo Microsoft e/ou a senha do aplicativo Microsoft não contêm valores válidos. Ambos os campos devem ser preenchidos e cada campo deve conter o valor correspondente que você verificou na Etapa 2.
  • A segurança não foi ativada para o bot. Verifique se as definições de configuração do bot especificam valores para ID e senha do aplicativo.

Etapa 4: Teste seu bot na nuvem

Neste ponto, você verificou se seu bot está acessível e funcional no localhost quando a segurança está desativada, confirmou se o ID e a senha do aplicativo do bot são válidos e verificou se o bot está acessível e funcional no localhost quando a segurança está ativada. Nesta etapa, você implantará seu bot na nuvem e verificará se ele está acessível e funcional lá com a segurança ativada.

Implante seu bot na nuvem

O Bot Framework exige que os bots sejam acessíveis a partir da Internet, portanto, você deve implantar seu bot em uma plataforma de hospedagem em nuvem, como o Azure. Certifique-se de habilitar a segurança para seu bot antes da implantação, conforme descrito na Etapa 3.

Nota

Se você ainda não tem um provedor de hospedagem na nuvem, você pode se registrar para uma conta gratuita.

Se você implantar seu bot no Azure, o SSL será configurado automaticamente para seu aplicativo, habilitando assim o ponto de extremidade HTTPS que o Bot Framework exige. Se você implantar em outro provedor de hospedagem em nuvem, verifique se seu aplicativo está configurado para SSL para que o bot tenha um ponto de extremidade HTTPS.

Teste seu bot

Para testar seu bot na nuvem com a segurança ativada, conclua as etapas a seguir.

  1. Verifique se o bot foi implantado com êxito e está em execução.
  2. Inicie sessão no portal do Azure.
  3. Navegue até o recurso de Bot do Azure para seu bot no portal.
  4. Clique em Testar no Web Chat no painel de gerenciamento de Bot à esquerda.
  5. Para testar a conectividade com seu bot, digite algum texto no controle de bate-papo da Web e pressione Enter.

Se um erro for indicado na janela de chat, use a mensagem de erro para determinar a causa do erro. Problemas comuns:

  • O ponto de extremidade de mensagens especificado na página Configurações do seu bot no Portal do Bot Framework está incorreto. Certifique-se de que incluiu o caminho adequado no final do URL, como /api/messages.
  • O ponto de extremidade de Mensagens especificado na página Configurações do seu bot no Portal do Bot Framework não começa com https ou não é confiável pelo Bot Framework. Seu bot deve ter um certificado válido e confiável em cadeia.
  • O bot é configurado com valores ausentes ou incorretos para ID ou senha do aplicativo. Verifique se as definições de configuração do bot especificam valores válidos para ID e senha do aplicativo.

Se o bot responder adequadamente à entrada, você verificou se ele está acessível e funcional na nuvem com a segurança ativada. Neste ponto, seu bot está pronto para se conectar com segurança a um canal como Facebook Messenger, Direct Line e outros.

Recursos adicionais

Se continuar a ter problemas depois de concluir os passos acima, pode:

  • Analise como depurar um bot e os outros artigos de depuração nessa seção.
  • Depure seu bot na nuvem usando o Bot Framework Emulator e [Dev Tunnels](https://aka.ms/devtunnels software de tunelamento.
  • Use uma ferramenta de proxy como o Fiddler para inspecionar o tráfego HTTPS de e para o seu bot. O Fiddler não é um produto da Microsoft.
  • Consulte o guia de autenticação do Bot Connector para saber mais sobre as tecnologias de autenticação que o Bot Framework usa.
  • Solicite ajuda de outras pessoas usando os recursos de suporte do Bot Framework.