Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När ditt program autentiseras med Microsofts identitetsplattform visas en autentiseringsuppgift som bevisar dess identitet. Microsoft. Identity.Web har stöd för flera typer av autentiseringsuppgifter, som var och en passar för olika miljöer och säkerhetskrav.
Den här artikeln hjälper dig att förstå tillgängliga typer av autentiseringsuppgifter, välja rätt för ditt scenario och konfigurera autentiseringsuppgifter i ditt program.
Varför val av autentiseringsuppgifter är viktigt
De autentiseringsuppgifter som programmet använder påverkar direkt dess säkerhetsstatus, driftkostnader och distributionsflexitet. En dåligt vald autentiseringsuppgift kan exponera hemligheter, kräva manuell rotation eller begränsa var programmet kan köras.
Microsoft. Identity.Web tillhandahåller en enhetlig konfigurationsmodell som gör att du kan:
- Ange flera autentiseringsuppgifter med automatisk återställning.
- Ändra typer av autentiseringsuppgifter utan att ändra programkoden.
- Använd olika autentiseringsuppgifter per miljö (utveckling, mellanlagring, produktion).
Typer av autentiseringsuppgifter som stöds
Microsoft. Identity.Web har stöd för tre kategorier av autentiseringsuppgifter för konfidentiella klientprogram:
Autentiseringsuppgifter utan certifikat (federerade identitetsuppgifter + hanterad identitet)
Certifikatlösa autentiseringsuppgifter använder Azure hanterad identitet i kombination med federerade autentiseringsuppgifter (FIC) för att autentisera ditt program utan att hantera några hemligheter eller certifikat. Azure hanterar livscykeln för autentiseringsuppgifter helt och hållet.
Hur det fungerar: Programmet använder sin hanterade identitet för att hämta en token som Microsofts identitetsplattform accepterar som bevis på programmets identitet via ett förkonfigurerat federationsförtroende.
Bäst för: Produktionsarbetsbelastningar som körs på Azure.
Läs mer om certifikatfri autentisering
Certifikat
Certifikat ger stark, asymmetrisk nyckelbaserad autentisering. Din applikation bevisar sin identitet genom att signera ett intyg med certifikatets privata nyckel. Microsoft. Identity.Web kan läsa in certifikat från flera källor:
- Azure Key Vault – Centraliserad, hanterad certifikatlagring med åtkomstprinciper.
- Certificate Store – Windows certifikatarkiv (CurrentUser eller LocalMachine).
- Filsökväg – Certifikatfil på disk (.pfx-format).
- Base64-kodad – Certifikatet är inbäddat direkt i konfigurationen.
Bäst för: Produktionsarbetsbelastningar där certifikatlösa autentiseringsuppgifter inte är tillgängliga eller hybridmiljöer.
Läs mer om certifikatautentiseringsuppgifter
Klienthemligheter
Klienthemligheter är delade strängar som ditt program presenterar för Microsofts identitetsplattform. De är den enklaste typen av autentiseringsuppgifter att konfigurera men erbjuder den svagaste säkerheten.
Bäst för: Endast lokal utveckling och testning.
Välj rätt typ av autentiseringsuppgifter
Använd följande beslutsträd för att avgöra vilken typ av autentiseringsuppgifter som är lämplig för ditt scenario.
Is your application running on Azure?
├── Yes
│ ├── Can you use Managed Identity?
│ │ ├── Yes → Use certificateless credentials (recommended)
│ │ └── No → Use certificates from Azure Key Vault
└── No
├── Is this a production environment?
│ ├── Yes → Use certificates (Key Vault, Certificate Store, or file path)
│ └── No → Use client secrets for development/testing
Allmän vägledning
Följ dessa principer när du väljer en typ av autentiseringsuppgifter:
- Föredra alltid certifikatlösa referenser när programmet körs på Azure. De eliminerar autentiseringsuppgifter helt och hållet.
- Använd certifikat när certifikatlösa autentiseringsuppgifter inte är tillgängliga. Lagra dem i Azure Key Vault när det är möjligt.
- Begränsa klienthemligheter till utvecklingsmiljöer. Använd aldrig klienthemligheter i produktionsdistributioner.
Jämföra typer av autentiseringsuppgifter
I följande tabell sammanfattas de viktigaste skillnaderna mellan typer av autentiseringsuppgifter:
| Characteristic | Certifikatfri (FIC + MI) | Certifikat | Klienthemligheter |
|---|---|---|---|
| Säkerhetsnivå | Högsta | Hög | Låg |
| Risk för hemlig exponering | Inget - inget att läcka | Låg – privat nyckel skyddad | Hög – sträng kan kopieras |
| Rotation krävs | Nej – Azure hanterar livscykeln | Ja – innan certifikatet upphör att gälla | Ja – innan hemligheten upphör att gälla |
| Rotationskomplexitet | Ingen | Medel – uppdatera certifikat, omdistribuera | Låg – uppdateringssträng, omdistribuering |
| Azure portalkonfiguration | Hanterad identitet + FIC-förtroende | Ladda upp certifikat till appregistrering | Generera hemlighet i appregistrering |
| Lämpliga miljöer | Azure produktionsmiljö | Alla produktionsmiljöer | Endast utveckling och testning |
| Infrastrukturberoende | Azure beräkningsresurs | Certifikatarkiv eller Key Vault | Ingen |
| Efterlevnad | Uppfyller kraven för noll förtroende | Uppfyller de flesta efterlevnadsramverk | Kanske inte uppfyller säkerhetsprinciper |
Konfigurera autentiseringsuppgifter i appsettings.json
Microsoft. Identity.Web använder en ClientCredentials matris i konfigurationen för att ange en eller flera autentiseringsuppgifter. Varje post i matrisen innehåller en SourceType egenskap som anger var autentiseringsuppgifterna kommer ifrån.
Konfigurationsstruktur
I följande exempel visas en minimal konfiguration med en enda certifikatfri autentiseringsuppgift:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "user-assigned-managed-identity-client-id"
}
]
}
}
SourceType-värden
Egenskapen SourceType motsvarar CredentialSource uppräkning och avgör hur Microsoft. Identity.Web läser in autentiseringsuppgifterna:
| SourceType-värde | Typ av autentiseringsuppgifter | Beskrivning |
|---|---|---|
SignedAssertionFromManagedIdentity |
Certifikatlös | Använder hanterad identitet för att hämta en signerad försäkran. Rekommenderas för Azure-produktion. |
KeyVault |
Certifikat | Läser in ett certifikat från Azure Key Vault via URI. |
StoreWithThumbprint |
Certifikat | Läser in ett certifikat från Windows certifikatarkivet med tumavtryck. |
StoreWithDistinguishedName |
Certifikat | Läser in ett certifikat från Windows certifikatlager efter ämnets distingerade namn. |
Path |
Certifikat | Läser in ett certifikat från en .pfx-fil på disken. |
Base64Encoded |
Certifikat | Läser in ett certifikat från en Base64-kodad sträng i konfigurationen. |
ClientSecret |
Klienthemlighet | Använder en klienthemlighetssträng. |
AutoDecryptKeys |
Tokendekryptering | Hämtar automatiskt nycklar för dekryptering av krypterade token. |
SignedAssertionFilePath |
Federerad | Läser en signerad försäkran från en filsökväg (för Kubernetes-arbetsbelastningsidentitet). |
Exempel på autentiseringsuppgifter efter typ
I följande exempel visas hur du konfigurerar varje typ av autentiseringsuppgifter i appsettings.json och, där det är tillgängligt, i C#-kod.
Utan certifikat (hanterad identitet)
Använd en användartilldelad hanterad identitet genom att ange dess klient-ID:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "user-assigned-managed-identity-client-id"
}
]
}
}
För systemtilldelad hanterad identitet utelämnar du egenskapen ManagedIdentityClientId :
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity"
}
]
}
}
Certifikat från Azure Key Vault
Läs in ett certifikat som lagras i Azure Key Vault genom att ange valv-URL:en och certifikatnamnet:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
}
]
}
}
Du kan också använda CredentialDescription hjälpmetoden i C#:
var credential = CredentialDescription.FromKeyVault(
"https://your-keyvault.vault.azure.net",
"your-certificate-name");
Certifikat från certifikatarkiv
Läs in ett certifikat från Windows certifikatarkivet med tumavtryck:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "StoreWithThumbprint",
"CertificateThumbprint": "ABC123DEF456...",
"CertificateStorePath": "CurrentUser/My"
}
]
}
}
Du kan också använda ett unikt namn, vilket förenklar certifikatrotationen eftersom det nya certifikatet väljs automatiskt:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "StoreWithDistinguishedName",
"CertificateDistinguishedName": "CN=YourAppCertificate",
"CertificateStorePath": "CurrentUser/My"
}
]
}
}
I C# använder du hjälpmetoden:
// By thumbprint
var credential = CredentialDescription.FromCertificateStore(
"CurrentUser/My",
thumbprint: "ABC123DEF456...");
// By distinguished name (recommended for rotation)
var credential = CredentialDescription.FromCertificateStore(
"CurrentUser/My",
distinguishedName: "CN=YourAppCertificate");
Certifikat från filväg
Läs in ett certifikat från en .pfx fil på disk:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "Path",
"CertificateDiskPath": "/var/certs/app-cert.pfx",
"CertificatePassword": "certificate-password"
}
]
}
}
Varning
Undvik att lagra certifikatlösenord direkt i appsettings.json. Använd ASP.NET Core Secret Manager, miljövariabler eller Azure Key Vault för känsliga värden.
Base64-kodat certifikat
Bädda in ett certifikat direkt i konfigurationen som en Base64-kodad sträng:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "Base64Encoded",
"Base64EncodedValue": "MIIKcQIBAzCCCi0..."
}
]
}
}
Klienthemlighet
Ange en klienthemlighetssträng för utveckling och testning:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "your-client-secret"
}
]
}
}
Försiktighet
Klienthemligheter bör endast användas under utveckling. Skicka aldrig sekretessuppgifter till källkodshantering eller distribuera dem till produktionsmiljöer.
Använd flera autentiseringsuppgifter med reservlösning
Du kan ange flera autentiseringsuppgifter i matrisen ClientCredentials . Microsoft. Identity.Web försöker varje autentiseringsuppgift i ordning och återgår till nästa om den aktuella misslyckas. Det här mönstret är användbart för program som körs i flera miljöer.
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "your-managed-identity-client-id"
},
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
},
{
"SourceType": "ClientSecret",
"ClientSecret": "development-only-secret"
}
]
}
}
I det här exemplet:
- Programmet försöker först med certifikatfri autentisering med hanterad identitet (fungerar på Azure).
- Om den hanterade identiteten inte är tillgänglig återgår den till ett certifikat från Key Vault.
- Som en sista utväg använder den en klienthemlighet (för lokal utveckling).
Med den här metoden kan du använda samma konfigurationsfil i miljöer utan kodändringar.
Konfigurera autentiseringsuppgifter i kod
Du kan också konfigurera autentiseringsuppgifter programmatiskt i Program.cs eller Startup.cs:
using Microsoft.Identity.Web;
builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, "AzureAd")
.EnableTokenAcquisitionToCallDownstreamApi()
.AddDownstreamApi("MyApi", builder.Configuration.GetSection("MyApi"))
.AddDistributedTokenCaches();
// Or configure credentials programmatically
builder.Services.Configure<MicrosoftIdentityOptions>(options =>
{
options.ClientCredentials = new[]
{
new CredentialDescription
{
SourceType = CredentialSource.SignedAssertionFromManagedIdentity,
ManagedIdentityClientId = "your-managed-identity-client-id"
}
};
});
Autentiseringsuppgifter för tokendekryptering
Utöver klientautentiseringsuppgifter för autentisering Microsoft. Identity.Web stöder även autentiseringsuppgifter för tokendekryptering. Använd autentiseringsuppgifter för tokendekryptering när programmet tar emot krypterade token och behöver dekryptera dem.
Autentiseringsuppgifter för tokendekryptering använder samma SourceType värden och konfigurationsmönster som klientautentiseringsuppgifter, men anges i matrisen TokenDecryptionCredentials :
{
"AzureAd": {
"TokenDecryptionCredentials": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "token-decryption-cert"
}
]
}
}
Metodtips
Tänk på följande rekommendationer när du konfigurerar autentiseringsuppgifter för ditt program:
Föredra certifikatlösa autentiseringsuppgifter i produktion. De eliminerar risken för hemlig exponering och tar bort rotationskostnader. Använd dem när programmet körs på Azure beräkningsresurser som stöder hanterad identitet.
Använd autentiseringsfallback för portabilitet. Konfigurera flera autentiseringsuppgifter i prioritetsordning så att programmet fungerar i utveckling, mellanlagring och produktion utan kodändringar.
Använd aldrig klienthemligheter i produktion. Klienthemligheter kan läcka genom loggar, konfigurationsfiler eller källkontroll. Använd certifikat eller certifikatlösa autentiseringsuppgifter i stället.
Lagra känsliga värden utanför konfigurationsfiler. Använd Azure Key Vault, miljövariabler eller ASP.NET Core Secret Manager för certifikatlösenord och klienthemligheter. Checka inte in känsliga värden till källkontrollen.
Rotera certifikat innan de upphör att gälla. Övervaka certifikatets förfallodatum och upprätta en rotationsprocess. Azure Key Vault kan automatisera certifikatförnyelsen.
Använd Azure Key Vault för certifikatlagring. Key Vault tillhandahåller centraliserad hantering, åtkomstprinciper, granskningsloggning och automatisk rotation för certifikat.