Authentifizierung in einem JavaScript-Agent konfigurieren

Das JavaScript SDK erfordert einen AuthenticationProvider , um JWT-Token abzurufen, um Aktivitäten an den Zielkanal zu senden. Weitere Informationen finden Sie unter Zugriffstoken in der Microsoft Identity Platform

Das Paket @microsoft/agents-hosting stellt einen standardauthentifizierungsanbieter basierend auf MSAL bereit, der für die folgenden Arten von Anmeldeinformationen konfiguriert werden kann:

  • Geheimer Clientschlüssel
  • Clientzertifikat
  • Vom Benutzer zugewiesene verwaltete Identitäten
  • Verbund-Identitätsnachweise (FIC)

Einzelmandant vs Mehrmandanten

Die Clientschlüssel- und Clientzertifikatauthentifizierung unterstützen konfigurationen mit nur einem Mandanten und mehreren Mandanten.

Vom Benutzer zugewiesene verwaltete Identitäten und Verbundidentitätsanmeldeinformationen unterstützen nur Einzelmandantenkonfigurationen.

Notiz

Für multitenant müssen Sie die Azure Bot-Instanz als Multitenant konfigurieren und die Microsoft EntraID-App-Registrierung muss als Konten in einem beliebigen Organisationsverzeichnis (Jeder Microsoft Entra ID-Mandant – Multitenant) konfiguriert werden. Weitere Informationen finden Sie unter Single- und Multitenant-Apps

Umgebungsvariablen für jeden Authentifizierungstyp

Die Konfiguration wird zur Laufzeit aus Umgebungsvariablen mithilfe der Hilfsfunktion loadAuthConfigFromEnv(): AuthConfigurationabgerufen. Die CloudAdapter-Instanz muss mit dem AuthConfiguration initialisiert werden.

Basierend auf den bereitgestellten Variablen wird der Authentifizierungstyp wie unten beschrieben abgeleitet.

Single-Tenant mit Client-Geheimnis

Einstellungsname Typ Standardwert Description
tenantId Zeichenfolge NULL Die Microsoft Entra ID-Mandanten-ID für die App-Registrierung.
clientId Zeichenfolge NULL Die Client-ID (App-ID) der App-Registrierung.
clientSecret Zeichenfolge NULL Der geheime Schlüssel, der der App-Registrierung zugeordnet ist. Sollte nur zu Test- und Entwicklungszwecken verwendet werden.
tenantId={tenant-id-guid}
clientId={app-id-guid}
clientSecret={app-registration-secret}

Dies ist die empfohlene Konfiguration für die lokale Entwicklung.

Einzelmandant mit Clientzertifikat

Einstellungsname Typ Standardwert Description
tenantId Zeichenfolge NULL Die Microsoft Entra ID-Mandanten-ID für die App-Registrierung.
clientId Zeichenfolge NULL Die Client-ID (App-ID) der App-Registrierung.
certPemFile Zeichenfolge NULL Pfad zur PEM-Zertifikatdatei.
certKeyFile Zeichenfolge NULL Pfad zur Privaten Schlüsseldatei für das Zertifikat.
tenantId={tenant-id-guid}
clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

Notiz

Die Schlüsseldatei sollte kein Kennwort verwenden.

Einzelmandant mit benutzerzugewiesener verwalteter Identität

Einstellungsname Typ Standardwert Description
tenantId Zeichenfolge NULL Die Microsoft Entra ID-Mandanten-ID für die App-Registrierung.
clientId Zeichenfolge NULL Die verwaltete Identitätsclient-ID, die beim Erstellen des Zugriffstokens verwendet werden soll.
tenantId={tenant-id-guid}
clientId={app-id-guid}

Dies ist die empfohlene Konfiguration für Produktionsszenarien. Weitere Informationen finden Sie unter Verwaltete Identitäten für Azure-Ressourcen.

Notiz

Der Agent muss in jedem Azure-Dienst ausgeführt werden, der verwaltete Identitäten unterstützt. Informationen dazu, welche Azure-Dienste verwaltete Identitäten unterstützen, finden Sie unter Verwaltete Identitäten für Azure-Ressourcen. Die verwaltete Identität sollte mit der in EntraID konfigurierten Identität übereinstimmen. Weitere Informationen finden Sie unter Konfigurieren verwalteter Identitäten.

Einzelmandant mit Verbundidentitäts-Anmeldeinformationen

Einstellungsname Typ Standardwert Description
tenantId Zeichenfolge NULL Die Microsoft Entra ID-Mandanten-ID für die App-Registrierung.
clientId Zeichenfolge NULL Die Client-ID (App-ID) der App-Registrierung.
FICClientId Zeichenfolge NULL Die verwaltete Client-ID der Identität des Verbund-Identitätsnachweises.
tenantId={tenant-id-guid}
clientId={app-id-guid}
FICClientId={client-id-of-the-FIC}

Weitere Informationen finden Sie unter Authentifizierung mit Verbundidentitätsanmeldeinformationen.

Multitenant mit ClientSecret

Einstellungsname Typ Standardwert Description
clientId Zeichenfolge NULL Die Client-ID (App-ID) der App-Registrierung.
clientSecret Zeichenfolge NULL Der geheime Schlüssel, der der App-Registrierung zugeordnet ist. Sollte nur zu Test- und Entwicklungszwecken verwendet werden.
clientId={app-id-guid}
clientSecret={app-registration-secret}

Multitenant mit Clientzertifikat

Einstellungsname Typ Standardwert Description
clientId Zeichenfolge NULL Die Client-ID (App-ID) der App-Registrierung.
certPemFile Zeichenfolge NULL Pfad zur PEM-Zertifikatdatei.
certKeyFile Zeichenfolge NULL Pfad zur Privaten Schlüsseldatei für das Zertifikat.
clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

Abwärtskompatibilität mit dem Azure Bot Framework SDK

Um die Konfiguration mit demselben Format wie das Azure Bot Framework SDK zu laden, stellen wir eine weitere Hilfsfunktion bereit loadBotAuthConfigFromEnv(): AuthConfiguration.

Einstellungsname Typ Standardwert Description
MicrosoftAppTenantId Zeichenfolge NULL Die Microsoft Entra ID-Tenant-ID (älteres Bot Framework SDK-Format).
MicrosoftAppId Zeichenfolge NULL Die Client-ID (App-ID) des App-Registrierungsformats (älteres Bot Framework SDK-Format).
Microsoft-Anwendungspasswort Zeichenfolge NULL Der geheime App-Schlüssel (Älteres Bot Framework SDK-Format).
MicrosoftAppTenantId={tenant-id-guid}
MicrosoftAppId={app-id-guid}
MicrosoftAppPassword={app-registration-secret}

Benutzerdefinierter Authentifizierungsanbieter

Benutzer, die einen angepassten Authentifizierungsanbieter benötigen, können die Schnittstelle implementieren:

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

Als Beispiel implementieren wir AuthProvider, indem wir @azure/identity verwenden:

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
  }

Zum Instanziieren der CloudAdapter mithilfe von DevTokenProvider

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