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.
Von Bedeutung
Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.
Azure AD B2C ermöglicht es Anwendungen der vertrauenden Seite, ein eingehendes JWT als Teil der OAuth2-Autorisierungsanforderung zu senden. Das JWT kann von einer Anwendung einer vertrauenden Seite oder einem Identitätsanbieter ausgestellt werden und kann einen Hinweis auf den Benutzer oder die Autorisierungsanforderung übergeben. Azure AD B2C überprüft die Signatur, den Ausstellernamen und die Tokengruppe und extrahiert den Anspruch aus dem eingehenden Token.
Anwendungsfälle
Sie können diese Lösung verwenden, um Daten an Azure AD B2C zu senden, die in einem einzigen JWT gekapselt sind. Die Signup with email invitation Lösung, in der Ihr Systemadministrator eine signierte Einladung an Benutzer senden kann, basiert auf id_token_hint. Nur Benutzer mit Zugriff auf die Einladungs-E-Mail können das Konto im Verzeichnis erstellen.
Tokensignierungsansatz
Mit id_token_hint erstellt der Tokenherausgeber (eine vertrauende Partei-App oder ein Identitätsanbieter) das Token und signiert es dann mithilfe eines Signaturschlüssels, um zu beweisen, dass das Token von einer vertrauenswürdigen Quelle stammt. Der Signaturschlüssel kann symmetrisch oder asymmetrisch sein. Symmetrische Kryptografie oder Kryptografie mit privatem Schlüssel verwendet einen freigegebenen Geheimschlüssel, um die Signatur zu signieren und zu überprüfen. Asymmetrische Kryptografie oder Kryptografie mit öffentlichem Schlüssel ist ein kryptografisches System, das sowohl einen privaten Schlüssel als auch einen öffentlichen Schlüssel verwendet. Der private Schlüssel ist nur für den Tokenherausgeber bekannt und wird zum Signieren des Tokens verwendet. Der öffentliche Schlüssel wird mit der Azure AD B2C-Richtlinie geteilt, um die Signatur des Tokens zu überprüfen.
Token-Format
Die id_token_hint muss ein gültiges JWT sein. In der folgenden Tabelle sind die Ansprüche aufgeführt, die obligatorisch sind. Zusätzliche Ansprüche sind optional.
| Name | Anspruch | Beispielwert | BESCHREIBUNG |
|---|---|---|---|
| Publikum | aud |
00001111-aaaa-2222-bbbb-3333cccc4444 |
Identifiziert den vorgesehenen Empfänger des Tokens. Die Zielgruppe ist eine beliebige Zeichenfolge, die vom Tokenherausgeber definiert wird. Azure AD B2C überprüft diesen Wert und lehnt das Token ab, wenn es nicht übereinstimmt. |
| Emittent | iss |
https://localhost |
Identifiziert den Sicherheitstokendienst (Tokenherausgeber). Der Aussteller ist ein beliebiger URI, der vom Tokenherausgeber definiert wird. Azure AD B2C überprüft diesen Wert und lehnt das Token ab, wenn es nicht übereinstimmt. |
| Ablaufzeit | exp |
1600087315 |
Die Zeit, zu der das Token ungültig wird (dargestellt als Epochenzeit). Azure AD B2C überprüft diesen Wert und lehnt das Token ab, wenn das Token abgelaufen ist. |
| Nicht vor | nbf |
1599482515 |
Die Zeit, zu der das Token gültig wird (dargestellt als Epochenzeit). Diese Zeit entspricht in der Regel dem Zeitpunkt, zu dem das Token ausgestellt wurde. Azure AD B2C überprüft diesen Wert und lehnt das Token ab, wenn die Tokenlebensdauer ungültig ist. |
Das folgende Token ist ein Beispiel für ein gültiges ID-Token:
{
"alg": "HS256",
"typ": "JWT"
}.{
"displayName": " John Smith",
"userId": "john.s@contoso.com",
"nbf": 1599482515,
"exp": 1600087315,
"iss": "https://localhost",
"aud": "00001111-aaaa-2222-bbbb-3333cccc4444"
}
Protokoll
Das Name-Attribut des Protocol-Elements muss auf None festgelegt werden. Beispielsweise lautet das Protokoll für das None technische Profil:
<TechnicalProfile Id="IdTokenHint_ExtractClaims">
<DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
<Protocol Name="None" />
...
Das technische Profil wird aus einem Orchestrierungsschritt mit Typ von GetClaimsaufgerufen.
<OrchestrationStep Order="1" Type="GetClaims" CpimIssuerTechnicalProfileReferenceId="IdTokenHint_ExtractClaims" />
Ausgabeansprüche
Das OutputClaims-Element enthält eine Liste von Ansprüchen, die aus dem JWT extrahiert werden sollen. Möglicherweise müssen Sie den Namen des in Ihrer Richtlinie definierten Anspruchs dem namen zuordnen, der im JWT definiert ist. Sie können auch Ansprüche einschließen, die nicht vom JWT zurückgegeben werden, solange Sie das DefaultValue Attribut festlegen.
Metadaten
Die folgenden Metadaten sind bei Verwendung symmetrischer Schlüssel relevant.
| Merkmal | Erforderlich | BESCHREIBUNG |
|---|---|---|
| Emittent | Ja | Identifiziert den Sicherheitstokendienst (Tokenherausgeber). Dieser Wert muss mit dem iss Anspruch innerhalb des JWT-Anspruchs identisch sein. |
| IdTokenAudience (IdTokenAudience) | Ja | Identifiziert den vorgesehenen Empfänger des Tokens. Muss mit dem aud Anspruch innerhalb des JWT-Anspruchs identisch sein. |
Die folgenden Metadaten sind bei Verwendung eines asymmetrischen Schlüssels relevant.
| Merkmal | Erforderlich | BESCHREIBUNG |
|---|---|---|
| METADATEN | Ja | Eine URL, die auf ein Konfigurationsdokument für tokenherausgeber verweist, das auch als openID bekannter Konfigurationsendpunkt bezeichnet wird. |
| Emittent | Nein | Identifiziert den Sicherheitstokendienst (Tokenherausgeber). Dieser Wert kann verwendet werden, um den in den Metadaten konfigurierten Wert zu überschreiben und muss mit dem iss Anspruch innerhalb des JWT-Anspruchs identisch sein. |
| IdTokenAudience (IdTokenAudience) | Nein | Identifiziert den vorgesehenen Empfänger des Tokens. Muss mit dem aud Anspruch innerhalb des JWT-Anspruchs identisch sein. |
Von Bedeutung
Ihre Endpunkte müssen die Azure AD B2C-Sicherheitsanforderungen erfüllen. Ältere TLS-Versionen und Verschlüsselungen sind veraltet. Weitere Informationen finden Sie unter Azure AD B2C TLS- und Verschlüsselungssuiteanforderungen.
Kryptografieschlüssel
Bei Verwendung eines symmetrischen Schlüssels enthält das CryptographicKeys-Element das folgende Attribut:
| Merkmal | Erforderlich | BESCHREIBUNG |
|---|---|---|
| client_secret (Kunden-Geheimnis) | Ja | Der kryptografische Schlüssel, der zum Überprüfen der JWT-Signatur verwendet wird. |
Schrittanleitung
Ausgeben eines Tokens mit symmetrischen Schlüsseln
Schritt 1: Erstellen eines freigegebenen Schlüssels
Erstellen Sie einen Schlüssel, der zum Signieren des Tokens verwendet werden kann. Verwenden Sie beispielsweise den folgenden PowerShell-Code, um einen Schlüssel zu generieren.
$bytes = New-Object Byte[] 32
$rand = [System.Security.Cryptography.RandomNumberGenerator]::Create()
$rand.GetBytes($bytes)
$rand.Dispose()
$newClientSecret = [System.Convert]::ToBase64String($bytes)
$newClientSecret
Dieser Code erstellt eine geheime Zeichenfolge wie VK62QTn0m1hMcn0DQ3RPYDAr6yIiSvYgdRwjZtU5QhI=.
Schritt 2: Hinzufügen des Signaturschlüssels zu Azure AD B2C
Derselbe Schlüssel, der vom Tokenherausgeber verwendet wird, muss in Ihren Azure AD B2C-Richtlinienschlüsseln erstellt werden.
- Melden Sie sich beim Azure-Portal an.
- Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
- Suchen Sie im Azure-Portal nach Azure AD B2C, und wählen Sie diese Option dann aus.
- Wählen Sie auf der Übersichtsseite unter Richtliniendas Identity Experience Frameworkaus.
- Auswählen von Richtlinienschlüsseln
- Wählen Sie Manuell aus.
- Verwenden Sie für
IdTokenHintKey.
Das PräfixB2C_1A_kann automatisch hinzugefügt werden. - Geben Sie im Feld "Geheim" den Anmeldeschlüssel ein, den Sie zuvor generiert haben.
- Verwenden Sie für die SchlüsselverwendungVerschlüsselung.
- Wählen Sie "Erstellen" aus.
- Vergewissern Sie sich, dass Sie den Schlüssel
B2C_1A_IdTokenHintKeyerstellt haben.
Schritt 3: Hinzufügen des TECHNISCHEn Profils des ID-Tokens
Das folgende technische Profil überprüft das Token und extrahiert die Ansprüche.
<ClaimsProvider>
<DisplayName>My ID Token Hint ClaimsProvider</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="IdTokenHint_ExtractClaims">
<DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
<Protocol Name="None" />
<Metadata>
<Item Key="IdTokenAudience">00001111-aaaa-2222-bbbb-3333cccc4444</Item>
<Item Key="issuer">https://localhost</Item>
</Metadata>
<CryptographicKeys>
<Key Id="client_secret" StorageReferenceId="B2C_1A_IdTokenHintKey" />
</CryptographicKeys>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="userId" />
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Schritt 4: Vorbereiten Ihrer Richtlinie
Führen Sie den Schritt "Richtlinie konfigurieren" aus.
Schritt 5: Vorbereiten des Codes
Das GitHub-Beispiel ist eine ASP.NET Webanwendung und Konsolen-App, die ein ID-Token generiert, das mit einem symmetrischen Schlüssel signiert ist.
Ausgeben eines Tokens mit asymmetrischen Schlüsseln
Bei einem asymmetrischen Schlüssel wird das Token mit RSA-Zertifikaten signiert. Diese Anwendung hostt einen OpenID Connect-Metadatenendpunkt und EINEN JWKs-Endpunkt (JSON Web Keys), der von Azure AD B2C verwendet wird, um die Signatur des ID-Tokens zu überprüfen.
Der Tokenherausgeber muss folgende Endpunkte bereitstellen:
-
/.well-known/openid-configuration– Ein bekannter Konfigurationsendpunkt mit relevanten Informationen zum Token, z. B. der Name des Tokenherausgebers und die Verknüpfung mit dem JWK-Endpunkt. -
/.well-known/keys– der JSON Web Key (JWK)-Endpunkt mit dem öffentlichen Schlüssel, der zum Signieren des Schlüssels (mit dem Privaten Schlüsselteil des Zertifikats) verwendet wird.
TokenMetadataController.cs Siehe .NET MVC-Controllerbeispiel.
Schritt 1: Vorbereiten eines selbstsignierten Zertifikats
Wenn Sie noch kein Zertifikat besitzen, können Sie ein selbstsigniertes Zertifikat für diese Anleitung verwenden. Unter Windows können Sie das Cmdlet New-SelfSignedCertificate von PowerShell verwenden, um ein Zertifikat zu generieren.
Führen Sie diesen PowerShell-Befehl aus, um ein selbstsigniertes Zertifikat zu generieren. Ändern Sie das -Subject Argument entsprechend ihrem Anwendungs- und Azure AD B2C-Mandantennamen. Sie können auch das -NotAfter-Datum anpassen, um einen anderen Ablaufzeitpunkt für das Zertifikat anzugeben.
New-SelfSignedCertificate `
-KeyExportPolicy Exportable `
-Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-KeyUsage DigitalSignature `
-NotAfter (Get-Date).AddMonths(12) `
-CertStoreLocation "Cert:\CurrentUser\My"
Schritt 2: Hinzufügen des TECHNISCHEn Profils des ID-Tokens
Das folgende technische Profil überprüft das Token und extrahiert die Ansprüche. Ändern Sie den Metadaten-URI in Ihren tokenherausgeber bekannten Konfigurationsendpunkt.
<ClaimsProvider>
<DisplayName>My ID Token Hint ClaimsProvider</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="IdTokenHint_ExtractClaims">
<DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
<Protocol Name="None" />
<Metadata>
<!-- Replace with your endpoint location -->
<Item Key="METADATA">https://your-app.azurewebsites.net/.well-known/openid-configuration</Item>
<Item Key="IdTokenAudience">your_optional_audience</Item>
<!-- <Item Key="issuer">your_optional_token_issuer_override</Item> -->
</Metadata>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="userId" />
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Schritt 3: Vorbereiten Ihrer Richtlinie
Führen Sie den Schritt "Richtlinie konfigurieren" aus.
Schritt 4: Vorbereiten des Codes
Dieses GitHub-Beispiel ASP.NET Webanwendung generiert ID-Token und hostet die Metadatenendpunkte, die erforderlich sind, um den Parameter "id_token_hint" in Azure AD B2C zu verwenden.
Konfigurieren Ihrer Richtlinie
Für symmetrische und asymmetrische Ansätze wird das id_token_hint technische Profil aus einem Orchestrierungsschritt mit Typ GetClaims aufgerufen und muss die Eingabeansprüche der Richtlinie der vertrauenden Seite angeben.
Fügen Sie ihrer Erweiterungsrichtlinie das IdTokenHint_ExtractClaims technisches Profil hinzu.
Fügen Sie den folgenden Orchestrierungsschritt zu Ihrer Benutzerreise als erstes Element hinzu.
<OrchestrationStep Order="1" Type="GetClaims" CpimIssuerTechnicalProfileReferenceId="IdTokenHint_ExtractClaims" />Wiederholen Sie in Der Richtlinie der vertrauenden Seite dieselben Eingabeansprüche, die Sie im IdTokenHint_ExtractClaims technischen Profil konfiguriert haben. Beispiel:
<RelyingParty> <DefaultUserJourney ReferenceId="SignUp" /> <TechnicalProfile Id="PolicyProfile"> <DisplayName>PolicyProfile</DisplayName> <Protocol Name="OpenIdConnect" /> <InputClaims> <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="userId" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="displayName" /> <OutputClaim ClaimTypeReferenceId="givenName" /> <OutputClaim ClaimTypeReferenceId="surname" /> <OutputClaim ClaimTypeReferenceId="email" /> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/> <OutputClaim ClaimTypeReferenceId="identityProvider" /> </OutputClaims> <SubjectNamingInfo ClaimType="sub" /> </TechnicalProfile> </RelyingParty>
Je nach Ihren Geschäftlichen Anforderungen müssen Sie möglicherweise Tokenüberprüfungen hinzufügen, z. B. das Format der E-Mail-Adresse überprüfen. Fügen Sie dazu Orchestrierungsschritte hinzu, die ein technisches Profil für die Forderungstransformation aufrufen. Fügen Sie außerdem ein selbst bestätigtes technisches Profil hinzu, um eine Fehlermeldung darzustellen.
Erstellen und Signieren eines Tokens
Die GitHub-Beispiele veranschaulichen, wie ein solches Tokenproblem ein JWT erstellt wird, das später als id_token_hint Abfragezeichenfolgenparameter gesendet wurde. Nachfolgend sehen Sie ein Beispiel für eine Autorisierungsanforderung mit id_token_hint Parameter.
https://tenant-name.b2clogin.com/tenant-name.onmicrosoft.com/B2C_1A_signup_signin/oauth2/v2.0/authorize?client_id=11112222-bbbb-3333-cccc-4444dddd5555&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login&id_token_hint=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkaXNwbGF5TmFtZSI6IiBKb2huIFNtaXRoIiwidXNlcklkIjoiam9obi5zQGNvbnRvc28uY29tIiwibmJmIjoxNTk5NDgyNTE1LCJleHAiOjE2MDAwODczMTUsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0IiwiYXVkIjoiYTQ4OWZjNDQtM2NjMC00YTc4LTkyZjYtZTQxM2NkODUzZWFlIn0.nPmLXydI83PQCk5lRBYUZRu_aX58pL1khahHyQuupig
Nächste Schritte
- Überprüfen Sie die Registrierung mit der Einladungs-E-Mail-Lösung im GitHub-Repository der Azure AD B2C-Community.