Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Ihre Anwendung sich mit der Microsoft Identitätsplattform authentifiziert, legt sie eine Anmeldeinformation vor, um ihre Identität zu beweisen. Microsoft. Identity.Web unterstützt mehrere Anmeldeinformationstypen, die jeweils für unterschiedliche Umgebungen und Sicherheitsanforderungen geeignet sind.
Dieser Artikel hilft Ihnen, die verfügbaren Anmeldeinformationstypen zu verstehen, das richtige für Ihr Szenario auszuwählen und Anmeldeinformationen in Ihrer Anwendung zu konfigurieren.
Warum die Auswahl von Zugangsdaten wichtig ist
Die von Ihrer Anwendung verwendeten Anmeldeinformationen wirken sich direkt auf den Sicherheitsstatus, den betriebstechnischen Aufwand und die Flexibilität der Bereitstellung aus. Eine schlecht ausgewählte Anmeldeinformationen kann Geheimnisse verfügbar machen, manuelle Aktualisierung erfordern oder den Einsatzbereich Ihrer Anwendung einschränken.
Microsoft. Identity.Web bietet ein einheitliches Konfigurationsmodell, mit dem Sie folgende Aktionen ausführen können:
- Geben Sie mehrere Anmeldeinformationen mit automatischem Fallback an.
- Ändern Sie Anmeldeinformationstypen, ohne den Anwendungscode zu ändern.
- Verwenden Sie unterschiedliche Anmeldeinformationen pro Umgebung (Entwicklung, Staging, Produktion).
Unterstützte Anmeldedatentypen
Microsoft. Identity.Web unterstützt drei Kategorien von Anmeldeinformationen für vertrauliche Clientanwendungen:
Zertifikatlose Anmeldeinformationen (Verbundidentitätsanmeldeinformationen + verwaltete Identität)
Zertifikatlose Anmeldeinformationen verwenden Azure verwaltete Identität in Kombination mit Verbundidentitätsanmeldeinformationen (FIC), um Ihre Anwendung zu authentifizieren, ohne geheime Schlüssel oder Zertifikate zu verwalten. Azure verarbeitet den Lebenszyklus der Anmeldeinformationen vollständig.
So funktioniert es: Ihre Anwendung verwendet ihre verwaltete Identität, um ein Token zu erhalten, das die Microsoft-Identitätsplattform als Nachweis der Identität der Anwendung durch ein vorkonfiguriertes Verbundvertrauen akzeptiert.
Am besten geeignet für: Produktionsarbeitslasten, die auf Azure ausgeführt werden.
Weitere Informationen zur zertifikatlosen Authentifizierung
Zertifikate
Zertifikate stellen eine starke, asymmetrische schlüsselbasierte Authentifizierung bereit. Ihre Anwendung beweist ihre Identität durch Signieren einer Assertion mit dem privaten Schlüssel des Zertifikats. Microsoft. Identity.Web kann Zertifikate aus mehreren Quellen laden:
- Azure Key Vault – Zentralisierter, verwalteter Zertifikatspeicher mit Zugriffsrichtlinien.
- Certificate Store – Windows Zertifikatspeicher (CurrentUser oder LocalMachine).
- Dateipfad – Zertifikatdatei auf dem Datenträger (PFX-Format).
- Base64-codiert – Zertifikat, das direkt in die Konfiguration eingebettet ist.
Am besten geeignet für: Produktionsarbeitslasten, bei denen zertifikatlose Anmeldeinformationen nicht verfügbar sind, oder Hybridumgebungen.
Weitere Informationen zu Zertifikatsinformationen
Client-Geheimnisse
Clientgeheimnisse sind gemeinsame Zeichenfolgen, die Ihre Anwendung der Microsoft Identity Platform präsentiert. Sie sind der einfachste Anmeldeinformationstyp zum Konfigurieren, bieten aber die schwächste Sicherheit.
Am besten geeignet für: Nur lokale Entwicklung und Tests.
Weitere Informationen zu geheimen Clientschlüsseln
Den richtigen Anmeldetyp wählen
Verwenden Sie den folgenden Entscheidungsbaum, um zu bestimmen, welcher Anmeldedatentyp für Ihr Szenario geeignet ist.
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
Allgemeine Anleitungen
Befolgen Sie bei der Auswahl eines Authentifizierungstyps die folgenden Grundsätze:
- Bevorzugen Sie stets zertifikatlose Anmeldeinformationen, wenn Ihre Anwendung auf Azure ausgeführt wird. Sie beseitigen die Verwaltung von Anmeldeinformationen vollständig.
- Verwenden Sie Zertifikate , wenn zertifikatlose Anmeldeinformationen nicht verfügbar sind. Speichern Sie sie nach Möglichkeit in Azure Key Vault.
- Beschränken Sie Client-Geheimnisse auf Entwicklungsumgebungen. Verwenden Sie niemals Client-Geheimnisse in Produktionsumgebungen.
Vergleich von Anmeldedatentypen
In der folgenden Tabelle sind die wichtigsten Unterschiede zwischen den Anmeldetypen zusammengefasst.
| Merkmal | Zertifikatlos (FIC + MI) | Zertifikate | Client-Geheimnisse |
|---|---|---|---|
| Sicherheitsstufe | Am höchsten | Hoch | Niedrig |
| Geheimes Expositionsrisiko | Keine - kein Geheimnis zu verraten | Niedrig – geschützter privater Schlüssel | Hoch - String ist kopierbar |
| Drehung erforderlich | Nein – Azure verwaltet den Lebenszyklus | Ja - vor Ablauf des Zertifikats | Ja - vor Ablauf des Geheimnisses |
| Drehungskomplexität | Nichts | Mittel – Zertifikat aktualisieren, erneut bereitstellen | Niedrig – Updatezeichenfolge, erneute Bereitstellung |
| Azure Portal-Setup | Verwaltete Identität + FIC-Vertrauen | Zertifikat in der App-Registrierung hochladen | Generieren eines geheimen Schlüssels bei der App-Registrierung |
| Geeignete Umgebungen | Azure Produktion | Jede Produktionsumgebung | Nur Entwicklung und Tests |
| Infrastrukturabhängigkeit | Azure Computeressource | Zertifikatspeicher oder Key Vault | Nichts |
| Konformität | Erfüllt Zero-Trust-Anforderungen | Erfüllt die meisten Compliance-Frameworks | Möglicherweise nicht den Sicherheitsrichtlinien entsprechen |
Konfigurieren von Anmeldeinformationen in appsettings.json
Microsoft.Identity.Web verwendet ein ClientCredentials-Array in Ihrer Konfiguration, um eine oder mehrere Anmeldeinformationen anzugeben. Jeder Eintrag im Array enthält eine SourceType Eigenschaft, die angibt, von wo die Anmeldeinformationen stammen.
Konfigurationsstruktur
Das folgende Beispiel zeigt eine minimale Konfiguration mit einer einzigen zertifikatlosen Anmeldeinformation:
{
"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-Werte
Die Eigenschaft SourceType entspricht der Enumeration CredentialSource und bestimmt, wie Microsoft.Identity.Web die Anmeldeinformationen lädt.
| SourceType-Wert | Berechtigungstyp | Beschreibung |
|---|---|---|
SignedAssertionFromManagedIdentity |
Zertifikatlos | Verwendet verwaltete Identität, um eine signierte Assertion abzurufen. Empfohlen für Azure Produktion. |
KeyVault |
Zertifikat | Lädt ein Zertifikat über die URI aus dem Azure Key Vault. |
StoreWithThumbprint |
Zertifikat | Lädt ein Zertifikat aus dem Windows Zertifikatspeicher per Fingerabdruck. |
StoreWithDistinguishedName |
Zertifikat | Lädt ein Zertifikat aus dem zertifikatsspeicher Windows durch den Betreff distinguished Name. |
Path |
Zertifikat | Lädt ein Zertifikat aus einer PFX-Datei auf dem Datenträger. |
Base64Encoded |
Zertifikat | Lädt ein Zertifikat aus einer Base64-codierten Zeichenfolge in der Konfiguration. |
ClientSecret |
Geheimer Clientschlüssel | Verwendet eine geheime Clientschlüsselzeichenfolge. |
AutoDecryptKeys |
Tokenentschlüsselung | Ruft automatisch Schlüssel zum Entschlüsseln verschlüsselter Token ab. |
SignedAssertionFilePath |
Föderiert | Liest eine signierte Assertion aus einem Dateipfad (für Kubernetes Workload Identity). |
Beispiele für Anmeldeinformationen nach Typ
Die folgenden Beispiele zeigen, wie Sie jeden Anmeldeinformationstyp in appsettings.json und, sofern verfügbar, im C#-Code konfigurieren.
Zertifikatlose (verwaltete Identität)
Verwenden Sie eine vom Benutzer zugewiesene verwaltete Identität, indem Sie ihre Client-ID angeben:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "user-assigned-managed-identity-client-id"
}
]
}
}
Lassen Sie die ManagedIdentityClientId Eigenschaft für vom System zugewiesene verwaltete Identität weg:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity"
}
]
}
}
Zertifikat von Azure Key Vault
Laden Sie ein in Azure Key Vault gespeichertes Zertifikat, indem Sie die Tresor-URL und den Zertifikatnamen angeben:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
}
]
}
}
Sie können auch die CredentialDescription Hilfsmethode in C# verwenden:
var credential = CredentialDescription.FromKeyVault(
"https://your-keyvault.vault.azure.net",
"your-certificate-name");
Zertifikat aus Zertifikatspeicher
Laden Sie ein Zertifikat aus dem Windows Zertifikatspeicher per Fingerabdruck:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "StoreWithThumbprint",
"CertificateThumbprint": "ABC123DEF456...",
"CertificateStorePath": "CurrentUser/My"
}
]
}
}
Sie können auch einen Distinguished Name verwenden, der die Zertifikatsrotation vereinfacht, weil das neue Zertifikat automatisch ausgewählt wird:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "StoreWithDistinguishedName",
"CertificateDistinguishedName": "CN=YourAppCertificate",
"CertificateStorePath": "CurrentUser/My"
}
]
}
}
Verwenden Sie in C# die Hilfsmethode:
// 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");
Zertifikat aus Dateipfad
Laden eines Zertifikats aus einer .pfx Datei auf dem Datenträger:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "Path",
"CertificateDiskPath": "/var/certs/app-cert.pfx",
"CertificatePassword": "certificate-password"
}
]
}
}
Warnung
Vermeiden Sie das direkte Speichern von Zertifikat-Kennwörtern in appsettings.json. Verwenden Sie ASP.NET Core Secret Manager, Umgebungsvariablen oder Azure Key Vault für vertrauliche Werte.
Base64-codiertes Zertifikat
Betten Sie ein Zertifikat direkt in die Konfiguration als base64-codierte Zeichenfolge ein:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "Base64Encoded",
"Base64EncodedValue": "MIIKcQIBAzCCCi0..."
}
]
}
}
Geheimer Clientschlüssel
Geben Sie eine geheime Clientschlüsselzeichenfolge für Entwicklung und Tests an:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "your-client-secret"
}
]
}
}
Vorsicht
Geheime Clientschlüssel sollten nur während der Entwicklung verwendet werden. Geben Sie niemals sensible Daten in der Quellcodeverwaltung hinzu und stellen Sie sie nicht in Produktionsumgebungen bereit.
Verwenden mehrerer Anmeldeinformationen mit Fallback
Sie können mehrere Anmeldeinformationen im ClientCredentials Array angeben. Microsoft.Identity.Web versucht jede Anmeldeinformation in der Reihenfolge und fällt auf die nächste zurück, wenn die aktuelle fehlschlägt. Dieses Muster ist nützlich für Anwendungen, die in mehreren Umgebungen ausgeführt werden.
{
"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"
}
]
}
}
In diesem Beispiel:
- Die Anwendung versucht zunächst zertifikatlose Authentifizierung mit verwalteter Identität (funktioniert bei Azure).
- Wenn die verwaltete Identität nicht verfügbar ist, wird auf ein Zertifikat im Key Vault zurückgegriffen.
- Als letztes Mittel wird ein Clientgeheimnis (für die lokale Entwicklung) verwendet.
Mit diesem Ansatz können Sie dieselbe Konfigurationsdatei in Umgebungen ohne Codeänderungen verwenden.
Konfigurieren von Anmeldeinformationen im Code
Sie können Anmeldeinformationen auch programmgesteuert in Program.cs oder 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"
}
};
});
Token-Entschlüsselungsanmeldedaten
Über Clientanmeldeinformationen für die Authentifizierung hinaus unterstützt Microsoft Identity.Web auch Anmeldeinformationen für die Tokenentschlüsselung. Verwenden Sie Die Anmeldeinformationen für die Tokenentschlüsselung, wenn Ihre Anwendung verschlüsselte Token empfängt und sie entschlüsseln muss.
Tokenentschlüsselungsanmeldeinformationen verwenden dieselben SourceType Werte und Konfigurationsmuster wie Clientanmeldeinformationen, werden jedoch im TokenDecryptionCredentials Array angegeben:
{
"AzureAd": {
"TokenDecryptionCredentials": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "token-decryption-cert"
}
]
}
}
Weitere Informationen zur Tokenentschlüsselung
Bewährte Methoden
Beachten Sie diese Empfehlungen beim Konfigurieren von Anmeldeinformationen für Ihre Anwendung:
Bevorzugen Sie zertifikatlose Anmeldeinformationen in der Produktion. Sie beseitigen geheimes Expositionsrisiko und entfernen den Drehaufwand. Verwenden Sie sie, wenn Ihre Anwendung auf Azure Computeressourcen ausgeführt wird, die verwaltete Identität unterstützen.
Verwenden Sie den Fallback von Anmeldeinformationen für die Portabilität. Konfigurieren Sie mehrere Anmeldeinformationen in der Prioritätsreihenfolge, damit Ihre Anwendung ohne Codeänderungen in Entwicklung, Staging und Produktion funktioniert.
Verwenden Sie niemals geheime Clientschlüssel in der Produktion. Geheime Clientschlüssel können durch Logdateien, Konfigurationsdateien oder Versionsverwaltung offengelegt werden. Verwenden Sie stattdessen Zertifikate oder zertifikatlose Berechtigungen.
Speichern Sie vertrauliche Werte außerhalb von Konfigurationsdateien. Verwenden Sie Azure Key Vault, Umgebungsvariablen oder den ASP.NET Core Geheimen Manager für Zertifikat-Kennwörter und geheime Clientschlüssel. Speichern Sie keine vertraulichen Werte in Versionskontrollsystemen.
Erneuern Sie Zertifikate, bevor sie ablaufen. Überwachen Sie die Ablaufdaten der Zertifikate und richten Sie einen Erneuerungsprozess ein. Azure Key Vault können die Zertifikaterneuerung automatisieren.
Verwenden Sie Azure Key Vault für den Zertifikatspeicher. Key Vault bietet zentralisierte Verwaltung, Zugriffsrichtlinien, Audit-Protokollierung und automatischen Austausch für Zertifikate.