Partilhar via


Configurar a autenticação em um agente JavaScript

O SDK JavaScript requer um AuthenticationProvider para obter tokens JWT para enviar atividades para o canal de destino. Mais informações

O pacote @microsoft/agents-hosting fornece um provedor de autenticação padrão baseado no MSAL, que pode ser configurado para os seguintes tipos de credenciais:

  • SingleTenant / Multilocatário
  • Segredo do Cliente
  • Certificado de cliente
  • Identidades gerenciadas atribuídas pelo usuário
  • Credenciais de identidade federadas

Observação

O MultiTenant requer que a instância do Bot do Azure seja configurada como Multilocatário e que o registro do aplicativo EntraID seja configurado como Contas em qualquer diretório organizacional (Qualquer locatário do Microsoft Entra ID - Multilocatário) e oferece suporte apenas ao Segredo do Cliente ou ao Certificado do Cliente. Para saber mais, consulte Aplicativos únicos e multilocatários

Variáveis de ambiente para cada tipo de autenticação

A configuração é obtida em tempo de execução a partir de variáveis de ambiente, usando a função loadAuthConfigFromEnv(): AuthConfigurationauxiliar . A CloudAdapter instância requer ser inicializada com o AuthConfiguration.

Com base nas variáveis fornecidas, o tipo de autenticação será inferido conforme descrito abaixo.

Locatário único com segredo do cliente

tenantId={tenant-id-guid}
clientId={app-id-guid}
clientSecret={app-registration-secret}

Esta é a configuração recomendada para o desenvolvimento local.

Locatário único com certificado de cliente

tenantId={tenant-id-guid}
clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

Observação

O arquivo de chave não deve usar nenhuma senha.

Locatário único com identidade gerenciada atribuída pelo usuário

tenantId={tenant-id-guid}
clientId={app-id-guid}

Esta é a configuração recomendada para cenários de produção. Para saber mais, consulte Identidades gerenciadas para recursos do Azure.

Observação

O agente precisa ser executado em qualquer serviço do Azure que ofereça suporte a Identidades Gerenciadas. Para ver quais serviços do Azure dão suporte a identidades gerenciadas, consulte Identidades gerenciadas para recursos do Azure. A identidade gerenciada deve corresponder à configurada no EntraID. Para obter mais informações, consulte Como configurar identidades gerenciadas.

Locatário único com credencial de identidade federada

tenantId={tenant-id-guid}
clientId={app-id-guid}
FICClientId={client-id-of-the-FIC}

Para obter mais detalhes, consulte Autenticação usando credenciais de identidade federada.

Multilocatário com ClientSecret

clientId={app-id-guid}
clientSecret={app-registration-secret}

Multilocatário com certificado de cliente

clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

Compatibilidade de volta com o SDK do Azure Bot Framework

Para carregar a configuração usando o mesmo formato do SDK do Azure Bot Framework, fornecemos outra função loadBotAuthConfigFromEnv(): AuthConfigurationauxiliar.

MicrosoftAppTenantId={tenant-id-guid}
MicrosoftAppId={app-id-guid}
MicrosoftAppPassword={app-registration-secret}

Provedor de autenticação personalizado

Os usuários que precisam de um provedor de autenticação personalizado podem implementar a interface:

export interface AuthProvider {
  getAccessToken: (authConfig: AuthConfiguration, scope: string) => Promise<string>
}

Como exemplo, vamos implementar o AuthProvider uso de @azure/identity:

import { EnvironmentCredential } from "@azure/identity"
import { AuthProvider, AuthConfiguration } from "@microsoft/agents-bot-hosting"
class DevTokenProvider implements AuthProvider {
  async getAccessToken(authConfig: AuthConfiguration): Promise<string> {
    const id = new EnvironmentCredential()
    const tokenResponse = await id.getToken("https://api.botframework.com/.default")
    return tokenResponse.token
  }

Para instanciar o CloudAdapter usando o DevTokenProvider

const adapter = new CloudAdapter(authConfig, new DevTokenProvider())