Partager via


Configurer l’authentification dans un agent JavaScript

Le Kit de développement logiciel (SDK) JavaScript nécessite un AuthenticationProvider pour obtenir des jetons JWT pour envoyer des activités au canal cible. En savoir plus

Le package @microsoft/agents-hosting fournit un fournisseur d’authentification par défaut basé sur MSAL, qui peut être configuré pour les types d’informations d’identification suivants :

  • SingleTenant / MultiTenant
  • Clé secrète client
  • Certificat client
  • Identités gérées attribuées par l'utilisateur
  • Informations d’identification d’identité fédérée

Remarque

MultiTenant nécessite que l’instance Azure Bot soit configurée en tant que locataire multilocataire et que l’inscription d’application EntraID soit configurée en tant que comptes dans n’importe quel annuaire organisationnel (n’importe quel locataire Microsoft Entra ID - Multilocataire) et prend uniquement en charge la clé secrète client ou le certificat client. Pour en savoir plus, consultez Applications uniques et mutualisées

Variables d’environnement pour chaque type d’authentification

La configuration est obtenue au moment de l’exécution à partir de variables d’environnement, à l’aide de la fonction loadAuthConfigFromEnv(): AuthConfigurationd’assistance. L’instance CloudAdapter doit être initialisée avec le AuthConfiguration.

En fonction des variables fournies, le type d’authentification sera déduit comme décrit ci-dessous.

Locataire unique avec clé secrète client

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

Il s’agit de la configuration recommandée pour le développement local.

Locataire unique avec certificat client

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

Remarque

Le fichier de clé ne doit pas utiliser de mot de passe.

Locataire unique avec identité managée affectée par l’utilisateur

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

Il s’agit de la configuration recommandée pour les scénarios de production. Pour plus d’informations, consultez Identités managées pour les ressources Azure.

Remarque

L’agent doit s’exécuter dans n’importe quel service Azure prenant en charge les identités managées. Pour voir quels services Azure prennent en charge les identités managées, consultez les identités managées pour les ressources Azure. L’identité managée doit correspondre à celle configurée dans EntraID. Pour plus d’informations, consultez Comment configurer des identités managées.

Locataire unique avec informations d’identification d’identité fédérée

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

Pour plus d’informations, consultez Authentification à l’aide des informations d’identification de l’identité fédérée.

Multilocataire avec ClientSecret

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

Multilocataire avec certificat client

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

Compatibilité de retour avec le Kit de développement logiciel (SDK) Azure Bot Framework

Pour charger la configuration au même format que le Kit de développement logiciel (SDK) Azure Bot Framework, nous fournissons une autre fonction loadBotAuthConfigFromEnv(): AuthConfigurationd’assistance.

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

Fournisseur d’authentification personnalisé

Les utilisateurs nécessitant un fournisseur d’authentification personnalisé peuvent implémenter l’interface :

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

Par exemple, implémentons l’utilisation AuthProvider@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
  }

Pour instancier l’utilisation de l’objet CloudAdapterDevTokenProvider

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