Adicionar autenticação a um bot

APLICA-SE A: SDK v4

O SDK do Azure AI Bot Service v4 facilita o desenvolvimento de bots que podem acessar recursos online que exigem autenticação do usuário. Seu bot não precisa gerenciar tokens de autenticação porque o Azure faz isso para você usando o OAuth 2.0 para gerar um token com base nas credenciais de cada usuário. Seu bot usa o token gerado pelo Azure para acessar esses recursos. Dessa forma, o usuário não precisa fornecer ID e senha ao bot para acessar um recurso seguro, mas apenas a um provedor de identidade confiável.

Para obter uma visão geral de como o Bot Framework lida com esse tipo de autenticação, consulte Autenticação de usuário.

Este artigo faz referência a dois exemplos. Um mostra como obter um token de autenticação. O outro é mais complexo e mostra como acessar o Microsoft Graph em nome do usuário. Em ambos os casos, você pode usar o Azure AD v1 ou v2 como um provedor de identidade para obter um token OAuth para o bot. Este artigo aborda como:

  • Criar um recurso de Bot do Azure
  • Criar o provedor de identidade Microsoft Entra ID
  • Registrar o provedor de identidade do Microsoft Entra ID com o bot
  • Preparar o código do bot

Depois de terminar este artigo, você terá um bot que pode responder a algumas tarefas simples. No exemplo do Microsoft Graph, você pode enviar um email, exibir quem você é e verificar e-mails recentes. Você não precisa publicar o bot para testar os recursos do OAuth; no entanto, o bot precisará de ID e senha válidas do aplicativo do Azure.

Nota

Os SDKs JavaScript, C# e Python do Bot Framework continuarão a ser suportados, no entanto, o Java SDK está sendo desativado com suporte final de longo prazo terminando em novembro de 2023. Apenas segurança crítica e correções de bugs dentro deste repositório serão realizadas.

Os bots existentes construídos com o Java SDK continuarão a funcionar.

Para a criação de novos bots, considere usar o Power Virtual Agents e leia sobre como escolher a solução de chatbot certa.

Para obter mais informações, consulte O futuro da criação de bots.

Considerações sobre Web Chat e Linha Direta

Importante

Você precisa usar a Linha Direta com a autenticação aprimorada habilitada para reduzir os riscos de segurança ao se conectar a um bot usando o controle de Web Chat. Para obter mais informações, consulte Autenticação avançada de linha direta.

Pré-requisitos

  • Conhecimento das noções básicas do bot, do gerenciamento do estado, da biblioteca de diálogos, de como implementar o fluxo de conversação sequencial e de reutilizar diálogos.

  • Conhecimento do desenvolvimento Azure e OAuth 2.0.

  • Visual Studio 2017 ou posterior para .NET.

  • Node.js para JavaScript.

  • Python 3.8+ para Python.

  • Um dos exemplos listados abaixo.

    Exemplo Versão do BotBuilder Demonstra
    Autenticação em C# ou JavaScript ou Java ou Python v4 Suporte OAuthCard
    Autenticação para Microsoft Graph em C# ou JavaScript ou Java ou Python v4 Suporte à API do Microsoft Graph com OAuth 2.0
    Autenticação para Microsoft Teams em C# ou JavaScript ou Java ou Python v4 Suporte à API do Microsoft Graph com OAuth 2.0

    Para executar os exemplos mencionados neste artigo, você precisa:

    • Um aplicativo Microsoft Entra ID com o qual registrar um recurso de bot no Azure. Este aplicativo permite que o bot acesse um recurso externo seguro, como o Microsoft Graph. Ele também permite que o usuário se comunique com o bot através de vários canais, como Web Chat.
    • Um aplicativo Microsoft Entra ID separado para funcionar como o provedor de identidade. Este aplicativo fornece as credenciais necessárias para estabelecer uma conexão OAuth entre o bot e o recurso seguro. Observe que este artigo usa o Ative Directory como um provedor de identidade. Muitos outros provedores também são suportados.

Importante

Sempre que você registra um bot no Azure, ele recebe um aplicativo Microsoft Entra ID. No entanto, este aplicativo protege o acesso de canal para bot. Você precisa de um aplicativo Microsoft Entra ID adicional para cada recurso externo seguro que deseja que o bot acesse em nome do usuário.

Criar o recurso

Crie o recurso de Bot do Azure, que permitirá que você registre seu bot no Serviço de Bot do Azure AI.

Gorjeta

Novos recursos de registro de Bot e Canais de Bot de Aplicativo Web não podem ser criados, no entanto, todos os recursos existentes configurados e implantados continuarão a funcionar. Os bots criados a partir de um modelo VSIX ou Yeoman do SDK versão 4.14.1.2 ou posterior contêm modelos ARM que gerarão um recurso de Bot do Azure.

  1. Aceda ao portal do Azure.

  2. No painel direito, selecione Criar um recurso.

  3. Na caixa de pesquisa, introduza bote, em seguida, prima Enter.

  4. Selecione o cartão de Bot do Azure.

    Select Azure bot resource

  5. Selecione Criar.

  6. Insira valores nos campos obrigatórios e revise e atualize as configurações.

    1. Forneça informações em Detalhes do projeto. Selecione se seu bot terá residência de dados global ou local. Atualmente, o recurso de residência de dados locais está disponível para recursos na região "Europa Ocidental" e "Centralíndia". Para obter mais informações, consulte Regionalização no Serviço de Bot do Azure AI.

      The project details settings for an Azure Bot resource

    2. Forneça informações em ID do Aplicativo Microsoft. Selecione como sua identidade de bot será gerenciada no Azure e se deseja criar uma nova identidade ou usar uma existente.

      The Microsoft app ID settings for an Azure Bot resource

  7. Selecione Rever + criar.

  8. Se a validação for aprovada, selecione Criar.

  9. Quando a implantação for concluída, selecione Ir para o recurso. Você deve ver o bot e os recursos relacionados listados no grupo de recursos selecionado.

  10. Se você ainda não tiver o SDK do Bot Framework, selecione Baixar do GitHub para saber como consumir os pacotes para seu idioma preferido.

    Create bot in SDK

Agora você está pronto para criar seu bot com o SDK do Bot Framework.

Gorjeta

Quando o Azure cria um novo recurso de Bot do Azure de locatário único ou multilocatário com uma nova ID de aplicativo, ele também gera uma senha.

Informações de identidade do bot

Siga estas etapas para adicionar informações de identidade ao arquivo de configuração do bot. O arquivo difere dependendo da linguagem de programação que você usa para criar o bot.

Importante

As versões Java e Python do SDK do Bot Framework suportam apenas bots multilocatário. As versões C# e JavaScript suportam os três tipos de aplicativos para gerenciar a identidade do bot.

Idioma Nome de ficheiro Notas
C# appsettings.json Suporta os três tipos de aplicativos para gerenciar a identidade do seu bot.
JavaScript .env Suporta os três tipos de aplicativos para gerenciar a identidade do seu bot.
Java application.properties Suporta apenas bots multilocatário.
Python config.py Suporta apenas bots multilocatário. Forneça as propriedades de identidade como argumentos para as chamadas de os.environ.get método.

As informações de identidade que você precisa adicionar dependem do tipo de aplicativo do bot. Forneça os seguintes valores no arquivo de configuração.

Disponível apenas para bots C# e JavaScript.

Property valor
MicrosoftAppType UserAssignedMSI
MicrosoftAppId A ID do cliente da identidade gerenciada atribuída pelo usuário.
MicrosoftAppPassword Não aplicável. Deixe isso em branco para um bot de identidade gerenciado atribuído pelo usuário.
MicrosoftAppTenantId A ID do locatário da identidade gerenciada atribuída pelo usuário.

Para atualizar o serviço de aplicativo

Se você tiver um recurso existente do Serviço de Aplicativo (aplicativo Web) para seu bot e seu bot for um aplicativo de identidade gerenciado atribuído pelo usuário, talvez seja necessário atualizar o serviço de aplicativo do bot:

  1. Vá para a folha Serviço de Aplicativo do aplicativo Web do seu bot.
  2. Em Configurações, selecione Identidade.
  3. Na folha Identidade, selecione a guia Usuário atribuído e Adicionar (+).
  4. Na folha Adicionar identidade gerenciada atribuída ao usuário:
    1. Selecione a sua subscrição.

    2. Em Identidades gerenciadas atribuídas ao usuário, selecione a identidade gerenciada para seu bot. Se a identidade gerenciada foi gerada automaticamente para você, ela terá o mesmo nome do seu bot.

    3. Selecione Adicionar para usar essa identidade para seu bot.

      The App Service Identity blade with the managed identity for the bot selected.

Para obter seu aplicativo ou ID de locatário

Para obter o aplicativo ou a ID de locatário do seu bot:

  1. Vá para a folha de recursos do Bot do Azure para seu bot.
  2. Vá para a folha Configuração do bot. Nessa folha, você pode copiar a ID do Aplicativo Microsoft ou a ID do Locatário do Aplicativo do bot.

Para gerar uma nova senha

Os bots de locatário único e multilocatário têm um segredo de aplicativo ou senha que você precisa para algumas operações. O Serviço de Bot do Azure AI oculta o segredo do bot. No entanto, o proprietário do recurso do Serviço de Aplicativo do bot pode gerar uma nova senha:

  1. Vá para a folha de recursos do Bot do Azure para seu bot.
  2. Vá para a folha Configuração do bot.
  3. Selecione Gerenciar, ao lado de ID do Aplicativo Microsoft, para ir para a folha Certificados + segredos do serviço de aplicativo.
  4. Siga as instruções na folha para criar um novo segredo do cliente e registrar o valor em um local seguro.

Serviço de identidade Microsoft Entra ID

O Microsoft Entra ID é um serviço de identidade na nuvem que permite criar aplicativos que entram com segurança nos usuários usando protocolos padrão do setor, como o OAuth 2.0.

Você pode usar um destes dois serviços de identidade:

  1. Plataforma de desenvolvedor Microsoft Entra ID (v1.0). Também conhecido como ponto de extremidade do Azure AD v1, que permite criar aplicativos que entram com segurança em usuários com uma conta corporativa ou de estudante da Microsoft. Para obter mais informações, consulte a visão geral do Microsoft Entra ID para desenvolvedores (v1.0).
  2. Plataforma de identidade Microsoft (v2.0). Também conhecido como ponto de extremidade Microsoft Entra ID , que é uma evolução da plataforma Azure AD (v1.0). Ele permite que você crie aplicativos que entram em todos os provedores de identidade da Microsoft e obtêm tokens para chamar APIs da Microsoft, como o Microsoft Graph, ou outras APIs criadas pelos desenvolvedores. Para obter mais informações, consulte a visão geral da plataforma de identidade da Microsoft (v2.0).

Para obter informações sobre as diferenças entre os pontos de extremidade v1 e v2, consulte Por que atualizar para a plataforma de identidade da Microsoft (v2.0)?. Para obter informações completas, consulte Plataforma de identidade da Microsoft (anteriormente Microsoft Entra ID para desenvolvedores).

Criar o provedor de identidade Microsoft Entra ID

Esta seção mostra como criar um provedor de identidade do Microsoft Entra ID que usa o OAuth 2.0 para autenticar o bot. Você pode usar os pontos de extremidade do Azure AD v1 ou do Microsoft Entra ID.

Gorjeta

Você precisará criar e registrar o aplicativo Microsoft Entra ID em um locatário no qual você pode consentir em delegar permissões solicitadas por um aplicativo.

  1. Abra o painel ID do Microsoft Entra no portal do Azure. Se você não estiver no locatário correto, selecione Alternar diretório para alternar para o locatário correto. (Para obter informações sobre como criar um locatário, consulte Acesse o portal e crie um locatário.)

  2. Abra o painel Registos de aplicações.

  3. No painel Registos de aplicações, selecione Novo registo.

  4. Preencha os campos obrigatórios e crie o registo da aplicação.

    1. Dê um nome à aplicação.

    2. Selecione os tipos de conta suportados para seu aplicativo. (Qualquer uma dessas opções funcionará com este exemplo.)

    3. Para o URI de redirecionamento, selecione Web e defina a URL como uma das URLs de redirecionamento OAuth suportadas.

    4. Selecione Registar.

      • Depois de criado, o Azure exibe a página Visão geral do aplicativo.
      • Registre o valor da ID do aplicativo (cliente). Você usará esse valor posteriormente como a ID do cliente quando criar a cadeia de conexão e registrar o provedor de ID do Microsoft Entra com o registro do bot.
      • Registre o valor da ID do diretório (locatário). Você usará esse valor para registrar esse aplicativo de provedor com seu bot.
  5. No painel de navegação, selecione Certificados & segredos para criar um segredo para seu aplicativo.

    1. Em Segredos do cliente, selecione Novo segredo do cliente.
    2. Adicione uma descrição para identificar esse segredo de outras pessoas que você pode precisar criar para este aplicativo, como bot login.
    3. Em Expira, escolha um período de tempo após o qual o segredo expirará.
    4. Selecione Adicionar.
    5. Antes de deixar Certificados & segredos, registre o segredo. Você usará esse valor posteriormente como o segredo do cliente quando registrar seu aplicativo Microsoft Entra ID com seu bot.
  6. No painel de navegação, selecione Permissões de API para abrir o painel de permissões de API. É uma prática recomendada definir explicitamente as permissões de API para o aplicativo.

    1. Selecione Adicionar uma permissão para mostrar o painel Solicitar permissões da API .

    2. Para este exemplo, selecione APIs da Microsoft e Microsoft Graph.

    3. Escolha Permissões delegadas e verifique se as permissões necessárias estão selecionadas. Este exemplo requer essas permissões.

      Nota

      Qualquer permissão marcada como CONSENTIMENTO DE ADMINISTRADOR NECESSÁRIO exigirá que um usuário e um administrador de locatário façam login, portanto, para o seu bot tende a ficar longe deles.

      • OpenID
      • perfil
      • Mail.Leia
      • Mail.Enviar
      • Usuário.Read
      • Usuário.ReadBasic.All
    4. Selecione Adicionar permissões. (Na primeira vez que um usuário acessar este aplicativo por meio do bot, ele precisará conceder consentimento.)

Agora você tem um aplicativo Microsoft Entra ID configurado.

Nota

Você atribuirá o ID do aplicativo (cliente) e o segredo do cliente quando criar a cadeia de conexão e registrar o provedor de identidade com o registro do bot. Ver secção seguinte.

Registrar o provedor de identidade do Microsoft Entra ID com o bot

O próximo passo é registrar seu provedor de identidade com seu bot.

  1. Abra a página de recursos do Bot do Azure do seu bot no portal do Azure.

  2. Selecione Definições.

  3. Em Configurações de conexão OAuth, na parte inferior da página, selecione Adicionar configuração.

  4. Preencha o formulário da seguinte forma:

    1. Nome. Introduza um nome para a sua ligação. Você vai usá-lo em seu código de bot.

    2. Prestador de Serviços. Selecione Microsoft Entra ID para exibir campos específicos do Microsoft Entra ID .

    3. ID do cliente. Insira a ID do aplicativo (cliente) que você registrou para seu provedor de identidade do Microsoft Entra ID.

    4. Segredo do cliente. Introduza o segredo que registou para o seu fornecedor de identidade Microsoft Entra ID.

      Gorjeta

      Se quiser usar certificados, selecione o AAD v2 com provedor de certificados . Você precisará dar ao Bot Service Token Store (appid: 5b404cf4-a79d-4cfe-b866-24bf8e1a4921) a permissão para obter o certificado.

    5. URL do Token Exchange. Deixe-o em branco porque ele é usado para SSO somente no Microsoft Entra ID.

    6. ID do inquilino. Insira a ID de diretório (locatário) que você registrou anteriormente para seu aplicativo Microsoft Entra ID ou comum , dependendo dos tipos de conta com suporte selecionados quando você criou o aplicativo DD do Azure. Para decidir qual valor atribuir, siga estes critérios:

      • Ao criar o aplicativo Microsoft Entra ID, se você selecionou Contas somente neste diretório organizacional (somente Microsoft - Locatário único), insira a ID do locatário que você registrou anteriormente para o aplicativo Microsoft Entra ID.
      • No entanto, se você selecionou Contas em qualquer diretório organizacional (Qualquer diretório de ID do Microsoft Entra - Multilocatário e contas pessoais da Microsoft, por exemplo, Xbox, Outlook.com) ou Contas em qualquer diretório organizacional (Diretório de ID do Microsoft Entra - Multilocatário), insira common em vez de um ID de locatário. Caso contrário, o aplicativo Microsoft Entra ID verificará através do locatário cuja ID foi selecionada e excluirá contas pessoais da Microsoft.

      Este será o locatário associado aos usuários que podem ser autenticados. Para obter mais informações, consulte Locação no Microsoft Entra ID.

    7. Em Escopos, insira os nomes da permissão escolhida no registro do aplicativo. Para fins de teste, basta inserir: openid profile.

      Nota

      Para o Microsoft Entra ID, o campo Escopos usa uma lista de valores que diferencia maiúsculas de minúsculas e separadas por espaço.

  5. Selecione Guardar.

Nota

Esses valores permitem que seu aplicativo acesse dados do Office 365 por meio da API do Microsoft Graph. Além disso, a URL do Token Exchange deve ser deixada em branco porque é usada apenas para SSO no Microsoft Entra ID.

Testar a ligação

  1. Selecione na entrada de conexão para abrir a conexão que você criou.
  2. Selecione Testar Conexão na parte superior do painel Configuração de Conexão do Provedor de Serviços.
  3. Na primeira vez, isso deve abrir uma nova guia do navegador listando as permissões que seu aplicativo está solicitando e solicitar que você aceite.
  4. Selecione Aceitar.
  5. Isso deve redirecioná-lo para uma conexão de teste para <sua página de nome> de conexão bem-sucedida .

Agora você pode usar esse nome de conexão no código do bot para recuperar tokens de usuário.

Preparar o código do bot

Você precisará do ID do aplicativo e da senha do seu bot para concluir esse processo.

  1. Clone do repositório GitHub o exemplo com o qual você deseja trabalhar: autenticação de Bot ou autenticação de Bot para Microsoft Graph.

  2. Atualização appsettings.json:

    • Defina ConnectionName como o nome da configuração de conexão OAuth que você adicionou ao seu bot.

    • Defina MicrosoftAppId e para o ID do aplicativo e MicrosoftAppPassword o segredo do aplicativo do seu bot.

      Dependendo dos caracteres no segredo do bot, talvez seja necessário escapar da senha. Por exemplo, qualquer E comercial (&) precisará ser codificado como &amp;.

    {
      "MicrosoftAppType": "",
      "MicrosoftAppId": "",
      "MicrosoftAppPassword": "",
      "MicrosoftAppTenantId": "",
      "ConnectionName": ""
    }
    

    Para usar o OAuth no bot com residência de dados na nuvem pública, você deve adicionar as seguintes configurações em suas configurações de aplicativo

    "OAuthUrl": "<Regional-OAuth-Uri>",
    "ToChannelFromBotOAuthScope": "https://api.botframework.com",
    "ToChannelFromBotLoginUrlTemplate": "https://api.botframework.com",
    "PublicAzureChannel": "https://api.botframework.com",
    "ToBotFromChannelOpenIdMetadataUrl": "https://login.botframework.com/v1/.well-known/openidconfiguration",
    "ToBotFromEmulatorOpenIdMetadataUrl": "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration",
    "ToBotFromChannelTokenIssuer": "https://api.botframework.com",
    "ToChannelFromBotLoginUrl": "https://login.microsoftonline.com/botframework.com",
    

    Onde <Regional-OAuth-Url> é um dos seguintes URIs:

    URI Description
    https://europe.api.botframework.com Para bots de nuvem pública com residência de dados na Europa.
    https://unitedstates.api.botframework.com Para bots de nuvem pública com residência de dados nos Estados Unidos.
    https://india.api.botframework.com Para bots de nuvem pública com residência de dados na Índia.
  3. Atualizar inicialização.cs:

    Para usar o OAuth em nuvens do Azure não públicas, como a nuvem governamental, você deve adicionar o código a seguir no arquivo Startup.cs .

    string uri = "<uri-to-use>";
    MicrosoftAppCredentials.TrustServiceUrl(uri);
    OAuthClientConfig.OAuthEndpoint = uri;
    
    

    Onde <uri-to-use> é um dos seguintes URIs:

    URI Description
    https://api.botframework.azure.us Para bots de nuvem do governo dos Estados Unidos sem residência de dados.
    https://api.botframework.com Para bots de nuvem pública sem residência de dados. Este é o URI padrão e não requer uma alteração para Startup.cs.

Para obter os valores de ID do aplicativo Microsoft e senha do aplicativo Microsoft, consulte Obter senha de registro.

Nota

Agora você pode publicar esse código de bot em sua assinatura do Azure (selecione com o botão direito do mouse no projeto e escolha Publicar), mas não é necessário para este artigo. Você precisaria configurar uma configuração de publicação que usa o aplicativo e o plano de hospedagem que você usou ao configurar o bot no portal do Azure.

Teste o bot usando o emulador

Se você ainda não fez isso, instale o Bot Framework Emulator. Consulte também Depurar com o emulador.

Para que o login de exemplo de bot funcione, você deve configurar o emulador, conforme mostrado em Configurar o emulador para autenticação.

Testar

Depois de configurar o mecanismo de autenticação, você pode executar o teste de amostra de bot real.

Nota

Você pode ser solicitado a inserir um código mágico, porque a maneira como o exemplo de bot é implementado. Este código mágico faz parte do RFC#7636 e está lá para adicionar um elemento de segurança extra. Ao remover o código mágico, há um maior risco de segurança. Isso pode ser atenuado usando Linha Direta com autenticação aprimorada habilitada. Para obter mais informações, consulte Autenticação aprimorada do Bot Framework.

  1. Execute a amostra de bot localmente em sua máquina.
  2. Inicie o emulador.
  3. Você precisará fornecer o ID e a senha do aplicativo do bot quando se conectar ao bot.
    • Você obtém a ID do aplicativo e a senha do registro do aplicativo do Azure. Esses são os mesmos valores que você atribuiu ao aplicativo bot no appsettings.json arquivo ou .env . No emulador, você atribui esses valores no arquivo de configuração ou na primeira vez que se conecta ao bot.
    • Se você precisava escapar da senha no código do bot, também precisa fazê-lo aqui.
  4. Digite help para ver uma lista de comandos disponíveis para o bot e teste os recursos de autenticação.
  5. Depois de entrar, você não precisa fornecer suas credenciais novamente até sair.
  6. Para sair e cancelar sua autenticação, digite logout.

Nota

A autenticação de bot requer o uso do serviço Bot Connector. O serviço acessa informações do seu recurso de Bot do Azure.

Exemplo de autenticação

No exemplo de autenticação de Bot, a caixa de diálogo é projetada para recuperar o token de usuário depois que o usuário está conectado.

Sample conversation with the authentication sample bot.

Exemplo de autenticação para o Microsoft Graph

No exemplo de autenticação de Bot para Microsoft Graph, a caixa de diálogo foi projetada para aceitar um conjunto limitado de comandos depois que o usuário está conectado.

Sample conversation with the Microsoft Graph authentication sample bot.


Informações adicionais

Quando um usuário pede ao bot para fazer algo que exija que o bot tenha o usuário conectado, o bot pode usar um para iniciar a recuperação de um OAuthPrompt token para uma determinada conexão. O OAuthPrompt cria um fluxo de recuperação de token que consiste em:

  1. Verificar se o Serviço de Bot do Azure AI já tem um token para o usuário e a conexão atuais. Se houver um token, o token será retornado.
  2. Se o Serviço de Bot do Azure AI não tiver um token armazenado em cache, será criado um OAuthCard botão de entrada que o usuário pode selecionar.
  3. Depois que o usuário selecionar o botão de entrada, o Serviço de Bot do Azure AI enviará ao bot o OAuthCard token do usuário diretamente ou apresentará ao usuário um código de autenticação de 6 dígitos para inserir na janela de chat.
  4. Se for apresentado ao usuário um código de autenticação, o bot trocará esse código de autenticação pelo token do usuário.

As seções a seguir descrevem como o exemplo implementa algumas tarefas comuns de autenticação.

Use um prompt OAuth para entrar o usuário e obter um token

Architecture diagram for the C# sample.

Diálogos\MainDialog.cs

Adicione um prompt OAuth a MainDialog em seu construtor. Aqui, o valor para o nome da conexão foi recuperado do arquivo appsettings.json .

AddDialog(new OAuthPrompt(
    nameof(OAuthPrompt),
    new OAuthPromptSettings
    {
        ConnectionName = ConnectionName,
        Text = "Please Sign In",
        Title = "Sign In",
        Timeout = 300000, // User has 5 minutes to login (1000 * 60 * 5)
    }));

Em uma etapa de diálogo, use BeginDialogAsync para iniciar o prompt OAuth, que solicita que o usuário entre.

  • Se o usuário já estiver conectado, isso gerará um evento de resposta de token, sem avisar o usuário.
  • Caso contrário, isso solicitará que o usuário faça login. O Serviço de Bot do Azure AI envia o evento de resposta de token depois que o usuário tenta entrar.
return await stepContext.BeginDialogAsync(nameof(OAuthPrompt), null, cancellationToken);

Na etapa de diálogo a seguir, verifique a presença de um token no resultado da etapa anterior. Se não for nulo, o usuário entrou com êxito.

// Get the token from the previous step. Note that we could also have gotten the
// token directly from the prompt itself. There is an example of this in the next method.
var tokenResponse = (TokenResponse)stepContext.Result;

Aguarde um TokenResponseEvent

Quando você inicia um prompt OAuth, ele aguarda um evento de resposta de token, do qual recuperará o token do usuário.

Bots\AuthBot.cs

O AuthBot deriva e ActivityHandler lida explicitamente com atividades de eventos de resposta de token. Aqui, continuamos a caixa de diálogo ativa, que permite que o prompt OAuth processe o evento e recupere o token.

protected override async Task OnTokenResponseEventAsync(ITurnContext<IEventActivity> turnContext, CancellationToken cancellationToken)
{
    Logger.LogInformation("Running dialog with Token Response Event Activity.");

    // Run the Dialog with the new Token Response Event Activity.
    await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>(nameof(DialogState)), cancellationToken);
}

Terminar sessão do utilizador

É uma prática recomendada permitir que os usuários saiam explicitamente, em vez de depender da conexão para atingir o tempo limite.

Diálogos\LogoutDialog.cs

private async Task<DialogTurnResult> InterruptAsync(DialogContext innerDc, CancellationToken cancellationToken = default(CancellationToken))
{
    if (innerDc.Context.Activity.Type == ActivityTypes.Message)
    {
        var text = innerDc.Context.Activity.Text.ToLowerInvariant();

        if (text == "logout")
        {
            // The UserTokenClient encapsulates the authentication processes.
            var userTokenClient = innerDc.Context.TurnState.Get<UserTokenClient>();
            await userTokenClient.SignOutUserAsync(innerDc.Context.Activity.From.Id, ConnectionName, innerDc.Context.Activity.ChannelId, cancellationToken).ConfigureAwait(false);

            await innerDc.Context.SendActivityAsync(MessageFactory.Text("You have been signed out."), cancellationToken);
            return await innerDc.CancelAllDialogsAsync(cancellationToken);
        }
    }

    return null;
}

Adicionando autenticação do Teams

O OAuth é tratado de forma diferente no Teams do que em outros canais. O exemplo de Bot de Autenticação do Teams (em C#, JavaScript, Java ou Python) demonstra como implementar corretamente a autenticação para o Teams.

Leitura adicional