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. Pour plus d’informations, consultez Jetons d’accès dans la plateforme d’identités Microsoft

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 :

  • Secret du client
  • Certificat client
  • Identités gérées attribuées par l'utilisateur
  • Certificats d'identité fédérée (FIC)

Locataire unique ou multi-locataires

La clé secrète client et l’authentification par certificat client prennent en charge les configurations monolocataires et multilocataires.

Les identités gérées assignées par l'utilisateur et les justificatifs d'identité fédérée ne prennent en charge que les configurations à locataire unique.

Note

Dans un environnement multilocataire, vous devez configurer l’instance Azure Bot en tant que multilocataire et l’inscription de l’application Microsoft EntraID doit être configurée en tant que Comptes dans n’importe quel répertoire d’organisation (n’importe quel locataire Microsoft Entra ID - Multilocataire). 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 est déduit comme décrit ci-dessous.

Environnement à locataire unique avec secret client

Nom du paramètre Type Valeur par défaut Description
tenantId String Null ID de client Microsoft Entra ID pour l’inscription de l’application.
clientId String Null ID client (ID d’application) de l’inscription de l’application.
Secret du client String Null Secret associé à l’inscription de l’application. Doit être utilisé uniquement à des fins de test et de développement.
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 de client

Nom du paramètre Type Valeur par défaut Description
tenantId String Null ID de client Microsoft Entra ID pour l’inscription de l’application.
clientId String Null ID client (ID d’application) de l’inscription de l’application.
certPemFile String Null Chemin d’accès au fichier de certificat PEM.
certKeyFile String Null Chemin d’accès au fichier de clé privée pour le certificat.
tenantId={tenant-id-guid}
clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

Note

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

Server unique avec identité managée assignée par l'utilisateur

Nom du paramètre Type Valeur par défaut Description
tenantId String Null ID de client Microsoft Entra ID pour l’inscription de l’application.
clientId String Null ID client d’identité managée à utiliser lors de la création du jeton d’accès.
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.

Note

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.

Client unique avec identifiants d’identité fédérée

Nom du paramètre Type Valeur par défaut Description
tenantId String Null ID de client Microsoft Entra ID pour l’inscription de l’application.
clientId String Null ID client (ID d’application) de l’inscription de l’application.
FICClientId String Null ID client de l'identité gérée du crédentiel 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

Nom du paramètre Type Valeur par défaut Description
clientId String Null ID client (ID d’application) de l’inscription de l’application.
Secret du client String Null Secret associé à l’inscription de l’application. Doit être utilisé uniquement à des fins de test et de développement.
clientId={app-id-guid}
clientSecret={app-registration-secret}

Multilocataire avec certificat client

Nom du paramètre Type Valeur par défaut Description
clientId String Null ID client (ID d’application) de l’inscription de l’application.
certPemFile String Null Chemin d’accès au fichier de certificat PEM.
certKeyFile String Null Chemin d’accès au fichier de clé privée pour le certificat.
clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

Compatibilité descendante 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.

Nom du paramètre Type Valeur par défaut Description
MicrosoftAppTenantId String Null L'ID de locataire Microsoft Entra ID (ancien format SDK Bot Framework).
MicrosoftAppId String Null ID client (ID d'application) de l'inscription d'application (format SDK Bot Framework hérité).
MicrosoftAppPassword String Null Secret de l’application (format SDK Bot Framework hérité).
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 le AuthProvider en utilisant le @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 CloudAdapter en utilisant DevTokenProvider

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