Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Når dine Azure Bot Service-ressourcer er klargjort, kan du konfigurere din agent til at godkende med Azure Bot Service. SDK til Microsoft 365-agenter tilbyder fleksible muligheder for konfiguration af godkendelse, så du kan vælge den metode, der bedst matcher programmets behov og sikkerhedskrav.
MSAL-pakken (.NET Agents SDK Microsoft-godkendelsesbibliotek) er et værktøj, der hjælper dig med at oprette adgangstokens til agentklienter og eksterne tjenester fra en selvværtsagent i SDK til Microsoft 365-agenter.
Pakken Microsoft.Agents.Athentication.Msal indeholder klassen MsalAuth, som er den centrale godkendelsesudbyder. Du kan konfigurere den til følgende typer legitimationsoplysninger:
- Enkelt lejer med klienthemmelighed og multiprofil med klienthemmelighed
- Klientcertifikat ved hjælp af aftryk
- Klientcertifikat ved hjælp af emnenavn (herunder SN+I)
- Brugertildelt administreret identitet
- Systemtildelt administreret identitet
- Legitimationsoplysninger i organisationsnetværk
- Identitet af arbejdsbelastning
Installer godkendelsespakken
Installer MSAL-godkendelsespakken fra NuGet:
dotnet add package Microsoft.Agents.Authentication.Msal
Enkeltlejer versus multiprofil
Godkendelse ved hjælp af klienthemmelighed understøtter både enkeltlejer- og multiprofilkonfigurationer.
Bemærk!
For multiprofil skal du konfigurere Azure Bot-instansen som multiprofil og Microsoft Entra ID-appregistreringen som konti i enhver organisationsmappe (enhver Microsoft Entra ID-lejer - multiprofil). Læs mere i Enkelt- og multiprofil-applikationer.
Konfigurere en -forbindelse
MSAL-godkendelsespakken giver dig mulighed for at oprette og bruge flere forskellige klienter med Agents Framework hosting-programmet. Ved at bruge MSAL-godkendelsespakken kan du konfigurere flere forbindelseskonfigurationer i konfigurationsfilen for programmet. Hver forbindelseskonfiguration kan bruges til at oprette en navngivet godkendelsesklient, der understøtter kommunikation med eksterne tjenester eller andre agenter.
Miljøvariabler for hver godkendelsestype
Agenten henter MSAL-konfiguration under kørsel fra miljøvariabler.
De følgende afsnit beskriver de nødvendige og valgfrie konfigurationsindstillinger for hver af de understøttede godkendelsestyper for MSAL-godkendelse, sammen med eksempler på konfigurationsuddrag for hver type.
Enkelt lejer med klienthemmelighed
Brug disse indstillinger til at konfigurere en enkeltlejerforbindelse, der godkender med en klienthemmelighed.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| ClientId | Streng | Null | ClientId (AppId), der skal bruges, når access-tokenet oprettes. |
| ClientSecret | string | Null | Når AuthType er ClientSecret, Is Secret, der er knyttet til klienten, bør dette kun bruges til test- og udviklingsformål. |
| AuthorityEndpoint | Streng | Null | Når den er til stede, bruges som autoritet til at anmode om et token fra. |
| TenantId | Streng | Null | Når til stede og AuthorityEndpoint er null, bruges til at oprette et autoritet til at anmode om et token fra |
| Områder | Liste med strenge | Null | Standardlister over områder, der skal anmodes om tokens for. Bruges kun, når der ikke sendes nogen områder fra agentens forbindelsesanmodning |
Her er et eksempel på appindstillinger for enkeltlejer ClientSecret:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "ClientSecret",
"ClientId": "{{BOT_ID}}",
"ClientSecret": "{{BOT_SECRET}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"Scopes": [
"https://api.botframework.com/.default"
],
}
}
}
Multiprofil med klienthemmelighed
Brug disse indstillinger til at konfigurere en multiprofilforbindelse, der godkender med en klienthemmelighed.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| ClientId | Streng | Null | ClientId (AppId), der skal bruges, når access-tokenet oprettes. |
| ClientSecret | string | Null | Når AuthType er ClientSecret, Is Secret, der er knyttet til klienten, bør dette kun bruges til test- og udviklingsformål. |
| AuthorityEndpoint | Streng | Null | Når den er til stede, bruges som autoritet til at anmode om et token fra. |
| TenantId | Streng | Null | Når til stede og AuthorityEndpoint er null, bruges til at oprette et autoritet til at anmode om et token fra |
| Områder | Liste med strenge | Null | Standardlister over områder, der skal anmodes om tokens for. Bruges kun, når der ikke sendes nogen områder fra agentens forbindelsesanmodning |
Her er et eksempel på appindstillinger for multiprofil med klienthemmelighed:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "ClientSecret",
"ClientId": "{{BOT_ID}}",
"ClientSecret": "{{BOT_SECRET}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/botframework.com",
"Scopes": [
"https://api.botframework.com/.default"
],
}
}
}
Brugertildelt administreret identitet
Brug disse indstillinger til at konfigurere tokenanskaffelse med en brugertildelt administreret identitet.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| ClientId | Streng | Null | Administreret identitet for ClientId, der skal bruges, når access-tokenet oprettes. |
Bemærk!
Når du bruger administrerede identitetstyper i din agent, skal du køre din vært eller klient på en Azure-tjeneste og have konfigureret tjenesten med enten en systemtildelt administreret identitet eller en administreret identitet tildelt af brugeren.
Her er et eksempel på appindstillinger for brugertildelt administreret identitet:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "UserManagedIdentity",
"ClientId": "{{BOT_ID}}",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
}
Systemtildelt administreret identitet
Når du bruger SystemManagedIdentity, ignorerer agenten ethvert angivet klient-id og bruger den systemadministrerede identitet.
Bemærk!
Når du bruger administrerede identitetstyper i din agent, skal du køre din vært eller klient på en Azure-tjeneste og have konfigureret tjenesten med enten en systemtildelt administreret identitet eller en administreret identitet tildelt af brugeren.
Her er et eksempel på appindstillinger for systemtildelt administreret identitet som godkendelsestype:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "SystemManagedIdentity",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
}
Legitimationsoplysninger i organisationsnetværk
Brug disse indstillinger til at konfigurere en forbindelse, der udveksler legitimationsoplysninger for adgangstokens i organisationsnetværk.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| ClientId | Streng | Null | ClientId (AppId), der skal bruges, når access-tokenet oprettes. |
| AuthorityEndpoint | Streng | Null | Når den er til stede, bruges som autoritet til at anmode om et token fra. |
| TenantId | Streng | Null | Når til stede og AuthorityEndpoint er null, bruges til at oprette et autoritet til at anmode om et token fra |
| Områder | Liste med strenge | Null | Standardlister over områder, der skal anmodes om tokens for. Bruges kun, når der ikke sendes nogen områder fra agentens forbindelsesanmodning |
| FederatedClientId | Streng | Null | Administreret identitet for ClientId, der skal bruges, når access-tokenet oprettes. |
Her er et eksempel på appindstillinger for Federated Credentials:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "FederatedCredentials",
"ClientId": "{{BOT_ID}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"FederatedClientId": "{{BOT_FEDERATED_ID}}",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
}
Identitet af arbejdsbelastning
Brug disse indstillinger til at konfigurere identitetsgodkendelse af arbejdsbelastning ved hjælp af en tokenfil i organisationsnetværk.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| ClientId | Streng | Null | ClientId (AppId), der skal bruges, når access-tokenet oprettes. |
| AuthorityEndpoint | Streng | Null | Når den er til stede, bruges som autoritet til at anmode om et token fra. |
| TenantId | Streng | Null | Når til stede og AuthorityEndpoint er null, bruges til at oprette et autoritet til at anmode om et token fra |
| Områder | Liste med strenge | Null | Standardlister over områder, der skal anmodes om tokens for. Bruges kun, når der ikke sendes nogen områder fra agentens forbindelsesanmodning |
| FederatedTokenFile | Streng | Null | Tokenfilen (samme som AKS AZURE_FEDERATED_TOKEN_FILE env var) |
Her er et eksempel på appindstillinger for enkeltlejer WorkloadIdentity:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "WorkloadIdentity",
"ClientId": "{{BOT_ID}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"FederatedTokenFile": "{{BOT_FEDERATED_TOKENFILE}}",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
}
Valgfrie indstillinger for legitimationsoplysninger i organisationsnetværket eller klientantagelse for arbejdsbelastningsidentitet
Brug disse valgfrie indstillinger til at tilpasse klientassertionsindholdet for legitimationsoplysninger i organisationsnetværk eller arbejdsbelastningsidentitetsflows.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| ClientId | Streng | Null | Klient-id, for hvilket der anmodes om en signeret antagelse |
| TokenEndpoint | Streng | Null | Det tiltænkte tokenslutpunkt |
| Krav | Streng | Null | Krav, der skal inkluderes i klientens antagelse |
| ClientCapabilities | String[] | Null | Egenskaber, som klientprogrammet erklærer. |
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "WorkloadIdentity",
"ClientId": "{{BOT_ID}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"FederatedTokenFile": "{{BOT_FEDERATED_TOKENFILE}}",
"Scopes": [
"https://api.botframework.com/.default"
],
"AssertionRequestOptions": {
"ClientId": null,
"TokenEndpoint": null,
"Claims": null,
"ClientCapabilities": null,
}
}
}
}
Certifikat ved hjælp af emnenavn (herunder SN+I)
Brug disse indstillinger til at konfigurere certifikatbaseret godkendelse ved brug af certifikatemnenavn, inklusive SN+I-scenarier.
| AuthType | Skriv | Standardværdi | Description |
|---|---|---|---|
| AuthorityEndpoint | Streng | Null | Når den er til stede, bruges som autoritet til at anmode om et token fra. |
| TenantId | Streng | Null | Når til stede og AuthorityEndpoint er null, bruges til at oprette et autoritet til at anmode om et token fra |
| Områder | Liste med strenge | Null | Standardlister over områder, der skal anmodes om tokens for. Bruges kun, når der ikke sendes nogen områder fra agentens forbindelsesanmodning |
| ClientId | Streng | Null | ClientId (AppId), der skal bruges, når access-tokenet oprettes. |
| CertSubjectName | Streng | Null | Når AuthType er CertificateSubjectName, er dette emnenavnet, der søges efter |
| CertStoreName | Streng | "Min" | Når AuthType enten er CertificateSubjectName eller Certificate, angiver det certifikatlager, der skal søges i |
| ValidCertificateOnly | bool | Sand | Kræver, at certifikatet har en gyldig kæde. |
| SendX5C | bool | Falsk | Aktiverer automatisk rotation af certifikater med passende konfiguration. |
Her er et eksempel på appindstillinger for certifikat, der bruger emnenavn for Subject Name and Issuer (SNI) i et multiprofilmiljø:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "CertificateSubjectName",
"ClientId": "{{BOT_ID}}",
"CertSubjectName": "{{BOT_CERT_SUBJECTNAME}}",
"SendX5C": true,
"AuthorityEndpoint": "https://login.microsoftonline.com/botframework.com",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
},
Her er et eksempel på appindstillinger for certifikatemnenavn for SN+I i et enkeltlejermiljø:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "CertificateSubjectName",
"ClientId": "{{BOT_ID}}",
"CertSubjectName": "{{BOT_CERT_SUBJECTNAME}}",
"SendX5C": true,
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
},
Klientcertifikat ved hjælp af aftryk
Brug disse indstillinger til at konfigurere certifikatbaseret godkendelse med certifikataftryk.
| AuthType | Skriv | Standardværdi | Description |
|---|---|---|---|
| AuthorityEndpoint | Streng | Null | Når den er til stede, bruges som autoritet til at anmode om et token fra. |
| TenantId | Streng | Null | Når til stede og AuthorityEndpoint er null, bruges til at oprette et autoritet til at anmode om et token fra |
| Områder | Liste med strenge | Null | Standardlister over områder, der skal anmodes om tokens for. Bruges kun, når der ikke sendes nogen områder fra agentens forbindelsesanmodning |
| ClientId | Streng | Null | ClientId (AppId), der skal bruges, når access-tokenet oprettes. |
| CertThumbprint | Streng | Null | Aftryk af det certifikat, der skal indlæses, er kun gyldigt, når AuthType er angivet som certifikat |
| CertStoreName | Streng | "Min" | Når AuthType enten er CertificateSubjectName eller Certificate, angiver det certifikatlager, der skal søges i |
| ValidCertificateOnly | bool | Sand | Kræver, at certifikatet har en gyldig kæde. |
| SendX5C | bool | Falsk | Aktiverer automatisk rotation af certifikater med passende konfiguration. |
Her er et eksempel på appindstillinger til certifikat ved brug af certifikatets aftryk:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "Certificate",
"ClientId": "{{BOT_ID}}",
"CertThumbprint": "{{BOT_CERT_THUMBPRINT}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/botframework.com",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
},
Udbyder af standardkonfiguration MSAL
For at lette konfigurationen giver vi en udvidelse af tjenesteudbyderen til at føje standardkonfigurationsindstillingerne for MSAL til din agent.
Her er et eksempel på MSAL-standardkonfigurationsprovideren for en ASP.NET kernevært i en Program.cs-klasse.
Dette administreres af den registrerede IConnections forekomst. Forekomsten IConnections tilføjes som standard, når du bruger AddAgent.
// Register your AgentApplication
builder.AddAgent<MyAgent>();
Men hvis du ikke bruger AddAgent, skal du eksplicit registrere IConnections-forekomsten.
// Add Connections object to access configured token connections.
builder.Services.AddSingleton<IConnections, ConfigurationConnections>();
Flere MSAL-konfigurationsindstillinger
Der er flere delte konfigurationsindstillinger, der styrer generelle indstillinger for hentning af tokens fra Microsoft Entra Identity.
Disse indstillinger er:
Brug følgende delte indstillinger til at styre MSAL-anmodningstimeout, gentagelsesfunktion og logføringsniveau.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| MSALRequestTimeout | TimeSpan | 30 sekunder | Denne indstilling styrer, hvor længe klienten venter på et svar fra Microsoft Entra ID, efter at der er sendt en anmodning. |
| MSALRetryCount | Int | 3 | Denne indstilling styrer, hvor mange forsøg provideren foretager for en individuel anmodning om et token. |
| MSALEnabledLogPII | Bool | Falsk | Denne indstilling styrer, om MSAL leverer persondata til den tilknyttede logger. |
Disse indstillinger deles med alle klienter, der opretter ved hjælp af MSAL-godkendelsesprovideren.
Disse indstillinger er beregnet til at blive læst fra en IConfiguration-læser i et konfigurationsafsnit i et afsnit med navnet "MSALConfiguration".
Bemærk!
MSALConfiguration er en valgfri konfiguration. Hvis du ikke angiver denne konfiguration, anvendes standardkonfigurationerne for disse værdier.
Her er et eksempel på posten i en appsettings.json fil:
{
"MSALConfiguration": {
"MSALEnabledLogPII": "true",
"MSALRequestTimeout": "00:00:40",
"MSALRetryCount": "1"
},
}
I dette tilfælde vil denne indstillingsblok instruere alle MSAL-klienter, der er oprettet med MSAL-provideren, om at aktivere logføring af persondata, angive timeout til 40 sekunder og reducere antallet af forsøg til 1.
Denne udvidelse søger efter et konfigurationsafsnit med navnet "MSALConfiguration" i dit IConfiguration-objekt og opretter et MSAL Configuration-objekt ud fra det.
Hvis afsnittet MSALConfig ikke blev fundet, oprettes MSAL-konfigurationsobjektet ved hjælp af standardværdier.
// Add default agent MsalAuth support
builder.Services.AddDefaultMsalAuth(builder.Configuration);
// Register your AgentApplication
builder.AddAgent<MyAgent>();
Logføring af understøttelse af godkendelse
MSAL-godkendelsessystemet giver mulighed for uafhængig logføring af godkendelsesflows til telemetriintegration, hvis du skal foretage fejlfinding af tokenanskaffelse.
For at aktivere logføring skal du tilføje en post for Microsoft.Agents.Authentication.Msal i dine applikationsapps indstillinger for at oprette en ILogger rapport om tokenoperationer for dine forbindelser. Hvis du tilføjer indstillingen MSALEnabledLogPII, inkluderer dette også persondata for din forbindelse.
Her er et eksempel på logføringsblokken i dette tilfælde:
"Logging": {
"LogLevel": {
"Default": "Warning",
"Microsoft.Agents": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft.Agents.Authentication.Msal": "Trace"
}
}
I dette tilfælde er logføring aktiveret for flere moduler, herunder Microsoft.Agents.Authentication.Msal, hvor sporingsniveauet er "Trace" for MSAL.
JavaScript SDK'en kræver en AuthenticationProvider for at hente JSON Web Token (JWT) til at sende aktiviteter til målkanalen. Du kan finde oplysninger under Adgangstokens i Microsoft-identitetsplatform.
Pakken @microsoft/agents-hosting tilbyder en standardgodkendelsesudbyder baseret på Microsoft-godkendelsesbiblioteket (MSAL). Du kan konfigurere den til følgende godkendelsestyper:
- Enkelt lejer med klienthemmelighed
- Multiprofil med klienthemmelighed
- Brugeradministreret id
- Systemadministreret identitet
- Legitimationsoplysninger i organisationsnetværk
- Identitet af arbejdsbelastning
- Certifikat
Installer godkendelsespakken
Installer MSAL-godkendelsespakke fra npm:
npm install @microsoft/agents-hosting
Enkeltlejer versus multiprofil
Godkendelse med klienthemmelighed eller klientcertifikat understøtter både enkeltlejer- og multiprofilkonfigurationer.
Brugertildelt administreret identitet, systemadministreret identitet, Legitimationsoplysninger i organisationsnetværk og arbejdsbelastningens identitet understøtter kun enkeltlejerkonfigurationer.
Bemærk!
For multiprofil skal du konfigurere Azure Bot-instansen som multiprofil og Microsoft Entra ID-appregistreringen som konti i enhver organisationsmappe (enhver Microsoft Entra ID-lejer - multiprofil). Læs mere i Enkelt- og multiprofil-applikationer.
Konfigurere en -forbindelse
MSAL-godkendelsesbiblioteket giver dig mulighed for at oprette og bruge flere forskellige klienter med Agents Framework hosting-programmet. Ved at bruge MSAL-godkendelsesbiblioteket kan du konfigurere flere forbindelseskonfigurationer i konfigurationsfilen for programmet. Hver forbindelseskonfiguration kan oprette en navngivet godkendelsesklient for at understøtte kommunikation med eksterne tjenester eller andre agenter.
De følgende afsnit beskriver de nødvendige og valgfrie konfigurationsindstillinger for hver af de understøttede godkendelsestyper for MSAL-godkendelsesudbyderen. De inkluderer også eksempler på konfigurationsuddrag for hver type.
Miljøvariabler for hver godkendelsestype
Agenten henter MSAL-konfiguration under kørsel fra miljøvariabler med hjælpefunktionen loadAuthConfigFromEnv(): AuthConfiguration.
CloudAdapter initialiseres med AuthConfiguration.
Forbindelsesindstillinger bruger formatet CONNECTIONS__<CONNECTION_NAME>__SETTINGS__<PROPERTY>.
Hvis AUTHTYPE er angivet, bruger SDK'en værdien til at vælge tokenindhentningsflowet. Når AUTHTYPE udelades, falder SDK'en tilbage til den ældre funktion og udleder godkendelsesflowet ud fra de konfigurerede legitimationsegenskaber.
Enkelt lejer med klienthemmelighed
Brug disse indstillinger til at konfigurere en enkeltlejerforbindelse, der godkender med en klienthemmelighed.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| CLIENTID | Streng | Ingen | Klient-id'et (app-id) for app-registreringen. |
| CLIENTSECRET | Streng | Ingen | Den hemmelighed, der er knyttet til appregistreringen. Brug kun til test- og udviklingsformål. |
| TENANTID | Streng | Ingen | Microsoft Entra ID-lejer-ID'et for app-registreringen. |
| AUTHTYPE | Streng | Ingen | Angiv til ClientSecret. |
| SCOPE | Streng | Ingen | Standardomfang for ressourcen, der bruges til at anmode om tokens, hvis det ikke angives af den, der kalder. |
| AUTHORITY | Streng | Ingen | Når den er til stede, bruges som autoritet til at anmode om et token fra. Hvis ikke angivet, bruges https://login.microsoftonline.com/{TENANTID} som standard. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=ClientSecret
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTSECRET={app-registration-secret}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Enkeltlejer med klienthemmelighed er den anbefalede konfiguration til lokal udvikling.
Multiprofil med klienthemmelighed
For multiprofilscenarier, der bruger en klienthemmelighed, skal du sætte autoritetsslutpunkt til botframework.com-lejer:
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| CLIENTID | Streng | Ingen | Klient-id'et (app-id) for app-registreringen. |
| CLIENTSECRET | Streng | Ingen | Den hemmelighed, der er knyttet til appregistreringen. Brug kun til test- og udviklingsformål. |
| AUTHTYPE | Streng | Ingen | Angiv til ClientSecret. |
| AUTHORITY | Streng | Ingen | Sæt til https://login.microsoftonline.com/botframework.com for multiprofil. |
| SCOPE | Streng | Ingen | Standardomfang for ressourcen, der bruges til at anmode om tokens, hvis det ikke angives af den, der kalder. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=ClientSecret
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTSECRET={app-registration-secret}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/botframework.com
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
UserManagedIdentity
Brug disse indstillinger til at konfigurere tokenindhentning med en brugertildelt administreret identitet.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| CLIENTID | Streng | Ingen | Administreret identitet for klient-id, der skal bruges, når adgangstoken oprettes. |
| AUTHTYPE | Streng | Ingen | Angiv til UserManagedIdentity. |
| SCOPE | Streng | Ingen | Standardomfang for ressourcen, der bruges til at anmode om tokens, hvis det ikke angives af den, der kalder. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=UserManagedIdentity
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={managed-identity-client-id}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Administreret id er den anbefalede konfiguration til produktionsscenarier. Du kan få mere at vide under Administrerede identiteter til Azure-ressourcer.
Bemærk!
Når du bruger administrerede identitetstyper, skal du køre din vært eller klient på en Azure-tjeneste og have konfigureret tjenesten med enten en systemtildelt eller brugertildelt administreret identitet. For at se, hvilke Azure-tjenester der understøtter administrerede identiteter, se Administrerede identiteter til Azure-ressourcer.
SystemManagedIdentity
Når du bruger godkendelsestypen SystemManagedIdentity, ignoreres klient-id'et, og den systemadministrerede identitet for tjenesten bruges.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| AUTHTYPE | Streng | Ingen | Angiv til SystemManagedIdentity. |
| SCOPE | Streng | Ingen | Standardomfang for ressourcen, der bruges til at anmode om tokens, hvis det ikke angives af den, der kalder. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=SystemManagedIdentity
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Bemærk!
Når du bruger administrerede identitetstyper, skal du køre din vært eller klient på en Azure-tjeneste og have konfigureret tjenesten med enten en systemtildelt eller brugertildelt administreret identitet. For at se, hvilke Azure-tjenester der understøtter administrerede identiteter, se Administrerede identiteter til Azure-ressourcer.
FederatedCredentials
Brug disse indstillinger til at konfigurere en enkeltlejerapp, der autentificerer via legitimationsoplysninger i organisationsnetværket.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| CLIENTID | Streng | Ingen | Klient-id'et (app-id) for app-registreringen. |
| TENANTID | Streng | Ingen | Microsoft Entra ID-lejer-ID'et for app-registreringen. |
| AUTHTYPE | Streng | Ingen | Angiv til FederatedCredentials. |
| AUTHORITY | Streng | Ingen | Når den er til stede, bruges som autoritet til at anmode om et token fra. Hvis ikke angivet, bruges https://login.microsoftonline.com/{TENANTID} som standard. |
| SCOPE | Streng | Ingen | Standardomfang for ressourcen, der bruges til at anmode om tokens, hvis det ikke angives af den, der kalder. |
| FICCLIENTID | Streng | Ingen | Klient-id'et for den administrerede identitet, der bruges til at hente det eksterne token for legitimationsoplysninger i organisationsnetværket. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=FederatedCredentials
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/{tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__FICCLIENTID={managed-identity-client-id}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
For yderligere information, se Godkendelse ved brug af legitimationsoplysninger i organisationsnetværket.
WorkloadIdentity
Brug disse indstillinger til at konfigurere tokenindhentning gennem Microsoft Entra-arbejdsbelastningens identitet.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| AUTHTYPE | Streng | Ingen | Angiv til WorkloadIdentity. |
| CLIENTID | Streng | Ingen | Klient-id'et (app-id) for app-registreringen. |
| TENANTID | Streng | Ingen | Microsoft Entra ID-lejer-ID'et for app-registreringen. |
| AUTHORITY | Streng | Ingen | Når den er til stede, bruges som autoritet til at anmode om et token fra. Hvis ikke angivet, bruges https://login.microsoftonline.com/{TENANTID} som standard. |
| SCOPE | Streng | Ingen | Standardomfang for ressourcen, der bruges til at anmode om tokens, hvis det ikke angives af den, der kalder. |
| FEDERATEDTOKENFILE | Streng | Ingen | Sti til tokenfilen i organisationsnetværk, der leveres af arbejdsbelastningsidentitetsmiljøet. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=WorkloadIdentity
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/{tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__FEDERATEDTOKENFILE=/var/run/secrets/azure/tokens/azure-identity-token
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Enkeltlejer med klientcertifikat
Brug disse indstillinger til at konfigurere en enkeltlejerforbindelse, der godkender med et klientcertifikat.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| CLIENTID | Streng | Ingen | Klient-id'et (app-id) for app-registreringen. |
| TENANTID | Streng | Ingen | Microsoft Entra ID-lejer-ID'et for app-registreringen. |
| AUTHTYPE | Streng | Ingen | Angiv til Certificate. |
| CERTPEMFILE | Streng | Ingen | Sti til Privacy-Enhanced Mail (PEM) certifikatfilen. |
| CERTKEYFILE | Streng | Ingen | Sti til den private nøglefil for certifikatet. |
| SCOPE | Streng | Ingen | Standardomfang for ressourcen, der bruges til at anmode om tokens, hvis det ikke angives af den, der kalder. |
| AUTHORITY | Streng | Ingen | Når den er til stede, bruges som autoritet til at anmode om et token fra. |
| SENDX5C | Boolesk | Falsk | Muliggør afsendelse af x5c-headeren under certifikatbaseret tokenindhentning. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=Certificate
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTPEMFILE={path-to-pem-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTKEYFILE={path-to-key-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Bemærk!
JS SDK'en læser PEM-certifikatet og de private nøglefiler direkte fra disken og beregner automatisk certifikatets fingeraftryk. Nøglefilen bør ikke bruge en adgangskode.
Multiprofil med klientcertifikat
For multiprofilscenarier, der bruger klientcertifikat, skal autoritetsslutpunktet sættes til botframework.com-lejeren:
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=Certificate
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTPEMFILE={path-to-pem-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTKEYFILE={path-to-key-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/botframework.com
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Bagudkompatibilitet med Azure Bot Framework SDK
For at indlæse konfigurationen ved at bruge det samme format som Azure Bot Framework SDK, skal du bruge loadPrevAuthConfigFromEnv(): AuthConfiguration.
Brug disse ældre indstillingsnavne, når du migrerer eksisterende Bot Framework SDK-konfigurationer.
| Navn på indstilling | Skriv | Standardværdi | Beskrivelse |
|---|---|---|---|
| MicrosoftAppTenantId | Streng | Null | Microsoft Entra ID-lejer-ID (ældre Bot Framework SDK-format). |
| MicrosoftAppId | Streng | Null | Klient-ID'et (app-ID) for app-registreringen (ældre Bot Framework SDK-format). |
| MicrosoftAppPassword | Streng | Null | App-hemmeligheden (ældre Bot Framework SDK-format). |
MicrosoftAppTenantId={tenant-id-guid}
MicrosoftAppId={app-id-guid}
MicrosoftAppPassword={app-registration-secret}
Brugerdefineret godkendelsesudbyder
Brugere, der har behov for en brugerdefineret godkendelsesudbyder, kan implementere grænsefladen:
export interface AuthProvider {
getAccessToken: (authConfig: AuthConfiguration, scope: string) => Promise<string>
}
Som eksempel kan du implementere AuthProvider ved hjælp af @azure/identity:
import { EnvironmentCredential } from "@azure/identity"
import { AuthProvider, AuthConfiguration } from "@microsoft/agents-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
}
For at oprette en instans af CloudAdapter ved at bruge DevTokenProvider
const adapter = new CloudAdapter(authConfig, new DevTokenProvider())
amework.com/.default") return tokenResponse.token }
To instantiate the `CloudAdapter` by using the `DevTokenProvider`
```ts
const adapter = new CloudAdapter(authConfig, new DevTokenProvider())
MSAL-pakken (Python Agents SDK Microsoft-godkendelsesbibliotek) er et værktøj, der hjælper dig med at oprette adgangstokens til agentklienter og eksterne tjenester fra en selvværtsagent i SDK til Microsoft 365-agenter.
Pakken microsoft-agents-authentication-msal indeholder klassen MsalAuth, som er den centrale godkendelsesudbyder. Du kan konfigurere den til følgende typer legitimationsoplysninger:
- Klienthemmelighed
- Klientcertifikat
- Brugertildelt administreret identitet
- Systemtildelt administreret identitet
Installer godkendelsespakken
Installer MSAL-godkendelsespakken fra PyPI:
pip install microsoft-agents-authentication-msal
Enkeltlejer versus multiprofil
Godkendelse med klienthemmelighed eller klientcertifikat understøtter både enkeltlejer- og multiprofilkonfigurationer.
Brugertildelt administreret identitet og systemtildelt administreret identitet understøtter kun enkeltlejerkonfigurationer.
Bemærk!
For multiprofil skal du konfigurere Azure Bot-instansen som multiprofil og Microsoft Entra ID-appregistreringen som konti i enhver organisationsmappe (enhver Microsoft Entra ID-lejer - multiprofil). Læs mere i Enkelt- og multiprofil-applikationer.
Konfigurere en -forbindelse
MSAL-godkendelsesbiblioteket giver dig mulighed for at oprette og bruge flere forskellige klienter med Agents Framework hosting-programmet. Hver forbindelseskonfiguration opretter en navngivet godkendelsesklient til at understøtte kommunikation med eksterne tjenester eller andre agenter.
Konfigurer via miljøvariabler, der bruger (__) dobbeltunderstregning som navngivningskonvention til indlejrede indstillinger. Klassen MsalConnectionManager læser disse variable for at konstruere AgentAuthConfiguration instanser for hver navngiven forbindelse.
Vigtigt!
Forbindelsesstyringen kræver som minimum en forbindelse med navnet SERVICE_CONNECTION.
Miljøvariabler for hver godkendelsestype
Agenten opnår MSAL-konfiguration under kørsel fra miljøvariabler med hjælpefunktionen load_configuration_from_env().
I de følgende afsnit beskrives de nødvendige konfigurationsindstillinger for hver af de understøttede godkendelsestyper, sammen med eksempler på miljøvariabler for hver type.
Enkelt lejer med klienthemmelighed
Brug disse indstillinger til at konfigurere en enkeltlejerforbindelse, der godkender med en klienthemmelighed.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| CLIENTID | Streng | Ingen | Klient-id'et (app-id) for app-registreringen. |
| CLIENTSECRET | Streng | Ingen | Den hemmelighed, der er knyttet til appregistreringen. Brug kun til test- og udviklingsformål. |
| TENANTID | Streng | Ingen | Microsoft Entra ID-lejer-ID'et for app-registreringen. |
| AUTHTYPE | Streng | ClientSecret | Godkendelsestypen. Angiv til ClientSecret. |
| SCOPES | Liste med strenge | Ingen | Standardliste over omfang, der skal anmodes om tokens for. Bruges kun, når der ikke sendes nogen områder fra agentens forbindelsesanmodning. |
| AUTHORITY | Streng | Ingen | Når den er til stede, bruges som autoritet til at anmode om et token fra. Hvis ikke angivet, bruges https://login.microsoftonline.com/{TENANTID} som standard. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=ClientSecret
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTSECRET={app-registration-secret}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
Enkeltlejer med klienthemmelighed er den anbefalede konfiguration til lokal udvikling.
Multiprofil med klienthemmelighed
For multiprofilscenarier, der bruger en klienthemmelighed, skal du sætte autoritetsslutpunkt til botframework.com-lejer:
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| CLIENTID | Streng | Ingen | Klient-id'et (app-id) for app-registreringen. |
| CLIENTSECRET | Streng | Ingen | Den hemmelighed, der er knyttet til appregistreringen. Brug kun til test- og udviklingsformål. |
| AUTHTYPE | Streng | ClientSecret | Godkendelsestypen. Angiv til ClientSecret. |
| AUTHORITY | Streng | Ingen | Sæt til https://login.microsoftonline.com/botframework.com for multiprofil. |
| SCOPES | Liste med strenge | Ingen | Standardliste over omfang, der skal anmodes om tokens for. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=ClientSecret
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTSECRET={app-registration-secret}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/botframework.com
Brugertildelt administreret identitet
Brug disse indstillinger til at konfigurere tokenanskaffelse med en brugertildelt administreret identitet.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| CLIENTID | Streng | Ingen | Administreret identitet for klient-id, der skal bruges, når adgangstoken oprettes. |
| AUTHTYPE | Streng | ClientSecret | Godkendelsestypen. Angiv til UserManagedIdentity. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={managed-identity-client-id}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=UserManagedIdentity
Administreret id er den anbefalede konfiguration til produktionsscenarier. Du kan få mere at vide under Administrerede identiteter til Azure-ressourcer.
Bemærk!
Når du bruger administrerede identitetstyper, skal du køre din vært eller klient på en Azure-tjeneste og have konfigureret tjenesten med enten en systemtildelt eller brugertildelt administreret identitet. For at se, hvilke Azure-tjenester der understøtter administrerede identiteter, se Administrerede identiteter til Azure-ressourcer.
Systemtildelt administreret identitet
Når du bruger godkendelsestypen SystemManagedIdentity, ignoreres klient-id'et, og den systemadministrerede identitet for tjenesten bruges.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| AUTHTYPE | Streng | ClientSecret | Godkendelsestypen. Angiv til SystemManagedIdentity. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=SystemManagedIdentity
Bemærk!
Når du bruger administrerede identitetstyper, skal du køre din vært eller klient på en Azure-tjeneste og have konfigureret tjenesten med enten en systemtildelt eller brugertildelt administreret identitet. For at se, hvilke Azure-tjenester der understøtter administrerede identiteter, se Administrerede identiteter til Azure-ressourcer.
Enkeltlejer med klientcertifikat
Brug disse indstillinger til at konfigurere en enkeltlejerforbindelse, der godkender med et klientcertifikat.
| Navn på indstilling | Skriv | Standardværdi | Description |
|---|---|---|---|
| CLIENTID | Streng | Ingen | Klient-id'et (app-id) for app-registreringen. |
| TENANTID | Streng | Ingen | Microsoft Entra ID-lejer-ID'et for app-registreringen. |
| AUTHTYPE | Streng | ClientSecret | Godkendelsestypen. Angiv til certificate. |
| CERTPEMFILE | Streng | Ingen | Sti til Privacy-Enhanced Mail (PEM) certifikatfilen. |
| CERTKEYFILE | Streng | Ingen | Sti til den private nøglefil for certifikatet. |
| SCOPES | Liste med strenge | Ingen | Standardliste over omfang, der skal anmodes om tokens for. |
| AUTHORITY | Streng | Ingen | Når den er til stede, bruges som autoritet til at anmode om et token fra. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=certificate
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTPEMFILE={path-to-pem-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTKEYFILE={path-to-key-file}
Bemærk!
Python SDK læser PEM-certifikatet og privatnøglefilen direkte fra disken og beregner certifikatets fingeraftryk automatisk. Nøglefilen bør ikke bruge en adgangskode.
Multiprofil med klientcertifikat
For multiprofilscenarier, der bruger klientcertifikat, skal autoritetsslutpunktet sættes til botframework.com-lejeren:
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=certificate
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTPEMFILE={path-to-pem-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTKEYFILE={path-to-key-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/botframework.com
Konfigurer forbindelsesstyring
MsalConnectionManager-klassen kan administrere flere godkendelsesforbindelser for din agent. Den læser forbindelseskonfigurationer og opretter MsalAuth instanser for hver navngiven forbindelse.
Her er et eksempel på, hvordan du indstiller forbindelsesstyringen og starter din agent:
from os import environ
from microsoft_agents.hosting.aiohttp import start_agent_process, CloudAdapter
from microsoft_agents.hosting.core import Authorization, AgentApplication, TurnState, MemoryStorage
from dotenv import load_dotenv
from aiohttp.web import Request, Response, Application, run_app
from microsoft_agents.authentication.msal import MsalConnectionManager
from microsoft_agents.activity import load_configuration_from_env
def start_server(
agent_application: AgentApplication, auth_configuration: AgentAuthConfiguration
):
async def entry_point(req: Request) -> Response:
agent: AgentApplication = req.app["agent_app"]
adapter: CloudAdapter = req.app["adapter"]
return await start_agent_process(req, agent, adapter)
APP = Application()
APP.router.add_post("/api/messages", entry_point)
APP["agent_configuration"] = auth_configuration
APP["agent_app"] = agent_application
APP["adapter"] = agent_application.adapter
try:
run_app(APP, host="localhost", port=environ.get("PORT", 3978))
except Exception as error:
raise error
load_dotenv()
agents_sdk_config = load_configuration_from_env(environ)
STORAGE = MemoryStorage()
CONNECTION_MANAGER = MsalConnectionManager(**agents_sdk_config)
ADAPTER = CloudAdapter(connection_manager=CONNECTION_MANAGER)
AUTHORIZATION = Authorization(STORAGE, CONNECTION_MANAGER, **agents_sdk_config)
AGENT_APP = AgentApplication[TurnState](
storage=STORAGE, adapter=ADAPTER, authorization=AUTHORIZATION, **agents_sdk_config
)
start_server(
agent_application=AGENT_APP, auth_configuration=CONNECTION_MANAGER.get_default_connection_configuration()
)
Se eksemplet på hurtig start af Python for et komplet eksempel på, hvordan MsalConnectionManager bruges i en Python-agent.
Brugerdefineret godkendelsesudbyder
Brugere, der kræver en tilpasset godkendelsesudbyder, kan implementere AccessTokenProviderBase-basisklassen.
from microsoft_agents.hosting.core import AccessTokenProviderBase
class CustomAuthProvider(AccessTokenProviderBase):
async def get_access_token(
self, resource_url: str, scopes: list[str], force_refresh: bool = False
) -> str:
# Implement custom token acquisition logic
token = await your_custom_token_logic(resource_url, scopes)
return token
Logføring af understøttelse af godkendelse
MSAL-godkendelsessystemet bruger det Python-standardmodulet logging under loggernavnet microsoft_agents.authentication.msal. For at muliggøre detaljeret logføring af godkendelsesflows til fejlfinding af token-indsamling, skal du konfigurere loggeren i din applikation:
import logging
logging.basicConfig(level=logging.WARNING)
logging.getLogger("microsoft_agents.authentication.msal").setLevel(logging.DEBUG)
Bedste praksis for sikkerhed
- Opbevar hemmeligheder i Azure Key Vault eller miljøvariabler. De må aldrig defineres i kildekoden.
- Brug administrerede identiteter, når det er muligt, da de eliminerer behovet for at administrere hemmeligheder.
- Roter klienthemmeligheder og certifikater regelmæssigt.
- Brug mindstprivilegier-princippet for omfang og tilladelser.