Konfigurer godkendelse i en JavaScript-agent

JavaScript SDK kræver en AuthenticationProvider for at hente JWT-tokens for at sende aktiviteter til målkanalen. Du kan få mere at vide under Adgangstokens på Microsofts identitetsplatform

Pakken @microsoft/agents-hosting indeholder en standardgodkendelsesprovider, der er baseret på MSAL, og som kan konfigureres til følgende typer legitimationsoplysninger:

  • Klienthemmelighed
  • Klientcertifikat
  • Brugertildelt administrerede identiteter
  • Legitimation til federeret identitetsstyring (FIC)

Enkeltlejer vs. multitenant

Godkendelse af klienthemmelighed og klientcertifikat understøtter både konfigurationer med enkelt lejer og multitenant.

Brugertilknyttede administrerede identiteter og federerede identitetslegitimationsoplysninger understøtter kun konfigurationer med en enkelt lejer.

Note

For multitenant skal du konfigurere Azure Bot-forekomsten som multitenant, og Microsoft EntraID-appregistreringen skal være konfigureret som Konti i en hvilken som helst organisationsmappe (En Hvilken som helst Microsoft Entra ID-lejer – Multitenant). Hvis du vil vide mere, skal du se Enkeltapps og multitenantapps

Miljøvariabler for hver godkendelsestype

Konfigurationen hentes på kørselstidspunktet fra miljøvariabler ved hjælp af hjælpefunktionen loadAuthConfigFromEnv(): AuthConfiguration. Forekomsten CloudAdapter skal initialiseres med AuthConfiguration.

Baseret på de angivne variabler udledes godkendelsestypen som beskrevet nedenfor.

Enkeltlejer med klienthemmelighed

Indstillingsnavn Type Standardværdi Beskrivende tekst
tenantId Streng Null Tenant-id'et for Microsoft Entra ID til appregistreringen.
clientId Streng Null Klient-id'et (app-id) for app-registreringen.
clientSecret Streng Null Den hemmelighed, der er knyttet til appregistreringen. Bør kun bruges til test- og udviklingsformål.
tenantId={tenant-id-guid}
clientId={app-id-guid}
clientSecret={app-registration-secret}

Dette er den anbefalede konfiguration til lokal udvikling.

Enkelt lejer med klientcertifikat

Indstillingsnavn Type Standardværdi Beskrivende tekst
tenantId Streng Null Tenant-id'et for Microsoft Entra ID til appregistreringen.
clientId Streng Null Klient-id'et (app-id) for app-registreringen.
certPemFile Streng Null Sti til PEM-certifikatfilen.
certKeyFile Streng Null Sti til den private nøglefil for certifikatet.
tenantId={tenant-id-guid}
clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

Note

Nøglefilen må ikke bruge nogen adgangskode.

Enkeltlejer med bruger-tilknyttet administreret identitet

Indstillingsnavn Type Standardværdi Beskrivende tekst
tenantId Streng Null Tenant-id'et for Microsoft Entra ID til appregistreringen.
clientId Streng Null Det administrerede id for identitetsklienten, der skal bruges, når du opretter adgangstokenet.
tenantId={tenant-id-guid}
clientId={app-id-guid}

Dette er den anbefalede konfiguration til produktionsscenarier. Du kan få mere at vide under Administrerede identiteter til Azure-ressourcer.

Note

Agenten skal køre i en hvilken som helst Azure-tjeneste, der understøtter administrerede identiteter. Hvis du vil se, hvilke Azure-tjenester der understøtter administrerede identiteter, skal du se Administrerede identiteter til Azure-ressourcer. Den administrerede identitet skal svare til den, der er konfigureret i EntraID. Du kan få flere oplysninger under Sådan konfigurerer du administrerede identiteter.

Enkeltlejer med fødereret identitetslegitimation

Indstillingsnavn Type Standardværdi Beskrivende tekst
tenantId Streng Null Tenant-id'et for Microsoft Entra ID til appregistreringen.
clientId Streng Null Klient-id'et (app-id) for app-registreringen.
FICClientId Streng Null Klient-id for den administrerede identitet af fødereret identitetslegitimation.
tenantId={tenant-id-guid}
clientId={app-id-guid}
FICClientId={client-id-of-the-FIC}

Du kan finde flere oplysninger under Godkendelse ved hjælp af credentials til federeret identitetsgodkendelse.

Multitenant med ClientSecret

Indstillingsnavn Type Standardværdi Beskrivende tekst
clientId Streng Null Klient-id'et (app-id) for app-registreringen.
clientSecret Streng Null Den hemmelighed, der er knyttet til appregistreringen. Bør kun bruges til test- og udviklingsformål.
clientId={app-id-guid}
clientSecret={app-registration-secret}

Multitenant med klientcertifikat

Indstillingsnavn Type Standardværdi Beskrivende tekst
clientId Streng Null Klient-id'et (app-id) for app-registreringen.
certPemFile Streng Null Sti til PEM-certifikatfilen.
certKeyFile Streng Null Sti til den private nøglefil for certifikatet.
clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

Bagudkompatibilitet med Azure Bot Framework SDK

Hvis du vil indlæse konfigurationen i samme format som Azure Bot Framework SDK, leverer vi en anden hjælpefunktion loadBotAuthConfigFromEnv(): AuthConfiguration.

Indstillingsnavn Type Standardværdi Beskrivende tekst
MicrosoftAppTenantId Streng Null Lejer-id'et for Microsoft Entra ID (ældre Bot Framework SDK-format).
MicrosoftAppId Streng Null Klient-id'et (app-id) for appregistreringen (ældre Bot Framework SDK-format).
MicrosoftAppPassword Streng Null Apphemmeligheden (ældre Bot Framework SDK-format).
MicrosoftAppTenantId={tenant-id-guid}
MicrosoftAppId={app-id-guid}
MicrosoftAppPassword={app-registration-secret}

Brugerdefineret godkendelsesprovider

Brugere, der kræver en brugerdefineret godkendelsesprovider, kan implementere grænsefladen:

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

Lad os f.eks. implementere ved hjælp af 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
  }

Hvis du vil instantiere CloudAdapter ved hjælp af DevTokenProvider

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