Microsoft Identity Platform-ZugriffstokenMicrosoft identity platform access tokens

Zugriffstoken bieten Clients die Möglichkeit, auf sichere Weise geschützte Web-APIs aufzurufen, welche die Zugriffstoken zur Authentifizierung und Autorisierung verwenden.Access tokens enable clients to securely call protected web APIs, and are used by web APIs to perform authentication and authorization. Gemäß der OAuth-Spezifikation sind Zugriffstoken nicht transparente Zeichenfolgen ohne ein bestimmtes Format. Einige Identitätsanbieter (IDPs) verwenden GUIDs, andere verschlüsselte Blobs.Per the OAuth specification, access tokens are opaque strings without a set format - some identity providers (IDPs) use GUIDs, others use encrypted blobs. Je nach Konfiguration der API, die das Token akzeptiert, verwendet Microsoft Identity Platform für Zugriffstoken verschiedene Formate.The Microsoft identity platform uses a variety of access token formats depending on the configuration of the API that accepts the token. Für benutzerdefinierte, von Entwicklern in Microsoft Identity Platform registrierte APIs stehen zwei unterschiedliche JSON Web-Token (JWT)-Formate mit der Bezeichnung „v1“ und „v2“ zur Auswahl, und für von Microsoft entwickelte APIs wie Microsoft Graph oder APIs in Azure können zusätzliche proprietäre Tokenformate verwendet werden.Custom APIs registered by developers on the Microsoft identity platform can choose from two different formats of JSON Web Tokens (JWTs), called "v1" and "v2", and Microsoft-developed APIs like Microsoft Graph or APIs in Azure have additional proprietary token formats. Bei diesen proprietären Formaten kann es sich um verschlüsselte Token, JWTs oder spezielle JWT-ähnliche Token handeln, die nicht überprüft werden.These proprietary formats might be encrypted tokens, JWTs, or special JWT-like tokens that will not validate.

Clients müssen Zugriffstoken wie nicht transparente Zeichenfolgen behandeln, da der Inhalt des Tokens nur für die Ressource (die API) bestimmt ist.Clients must treat access tokens as opaque strings because the contents of the token are intended for the resource (the API) only. Ausschließlich zu Prüfungs- und Debugzwecken können Entwickler JWTs mit einer Website wie jwt.ms decodieren.For validation and debugging purposes only, developers can decode JWTs using a site like jwt.ms. Beachten Sie jedoch, dass die Token, die Sie für eine Microsoft-API erhalten, möglicherweise nicht immer JWTs sind und auch nicht immer decodiert werden können.Be aware, however, that the tokens you receive for a Microsoft API might not always be a JWT, and that you can't always decode them.

Ausführliche Informationen zum Inhalt des Zugriffstokens können Clients über die Tokenantwortdaten erhalten, die mit dem Zugriffstoken an den Client zurückgegeben werden.For details on what's inside the access token, clients should use the token response data that's returned with the access token to your client. Wenn Ihr Client ein Zugriffstoken anfordert, gibt Microsoft Identity Platform auch einige Metadaten zum Zugriffstoken zurück, die von Ihrer App genutzt werden können.When your client requests an access token, the Microsoft identity platform also returns some metadata about the access token for your app's consumption. Diese Informationen umfassen die Ablaufzeit eines Zugriffstokens und die Bereiche, für die es gilt.This information includes the expiry time of the access token and the scopes for which it's valid. Die Daten ermöglichen Ihrer App das intelligente Zwischenspeichern von Zugriffstoken, ohne dass dabei das Zugriffstoken selbst analysiert werden muss.This data allows your app to do intelligent caching of access tokens without having to parse the access token itself.

In den folgenden Abschnitten erfahren Sie, wie Ihre API die Ansprüche in einem Zugriffstoken überprüfen und verwenden kann.See the following sections to learn how your API can validate and use the claims inside an access token.

Hinweis

Die gesamte Dokumentation auf dieser Seite gilt, sofern nichts Gegenteiliges erwähnt ist, nur für Token, die für von Ihnen registrierte APIs ausgegeben werden.All documentation on this page, except where noted, applies only to tokens issued for APIs you've registered. Sie gilt weder für Token, die für Microsoft-eigene APIs ausgegeben werden, noch kann anhand dieser Token überprüft werden, wie Microsoft Identity Platform Token für eine von Ihnen erstellte API ausgibt.It does not apply to tokens issued for Microsoft-owned APIs, nor can those tokens be used to validate how the Microsoft identity platform will issue tokens for an API you create.

Tokenformate und BesitzToken formats and ownership

v1.0 und v2.0v1.0 and v2.0

Es gibt zwei Versionen von Zugriffstoken, die in Microsoft Identity Platform verfügbar sind: v1.0 und v2.0.There are two versions of access tokens available in the Microsoft identity platform: v1.0 and v2.0. Diese Versionen geben die Ansprüche im Token vor und stellen dabei sicher, dass eine Web-API das Aussehen ihrer Token steuern kann.These versions govern what claims are in the token, ensuring that a web API can control what their tokens look like. Eine dieser beiden Versionen wird bei der Registrierung von Web-APIs als Standard ausgewählt: v1.0 für reine Azure AD-Apps, v2.0 für Apps, die Consumerkonten unterstützen.Web APIs have one of these selected as a default during registration - v1.0 for Azure AD-only apps, and v2.0 for apps that support consumer accounts. Dies kann von Anwendungen mit der Einstellung accessTokenAcceptedVersion im App-Manifest gesteuert werden, wobei null und 1 v1.0-Token ergeben und 2 in v2.0-Token resultiert.This is controllable by applications using the accessTokenAcceptedVersion setting in the app manifest, where null and 1 result in v1.0 tokens, and 2 results in v2.0 tokens.

Für welche App ist ein Token bestimmt?What app is a token "for"?

An einer Zugriffstokenanforderung sind zwei Parteien beteiligt: der Client, der das Token anfordert, und die Ressource (die API), die das Token akzeptiert, wenn die API aufgerufen wird.There are two parties involved in an access token request: the client, who requests the token, and the resource (the API) that accepts the token when the API is called. Der Anspruch aud in einem Token gibt die Ressource an, für die das Token bestimmt ist (die Zielgruppe).The aud claim in a token indicates the resource the token is intended for (its audience). Clients verwenden das Token, sollten es jedoch weder verstehen noch analysieren können.Clients use the token but should not understand or attempt to parse it. Ressourcen akzeptieren das Token.Resources accept the token.

Microsoft Identity Platform unterstützt das Ausstellen beliebiger Tokenversionen von beliebigen Versionsendpunkten – sie sind nicht miteinander verknüpft.The Microsoft identity platform supports issuing any token version from any version endpoint - they are not related. Die Ressourceneinstellung 2 unter accessTokenAcceptedVersion bedeutet daher, dass ein Client, der den v1.0-Endpunkt zum Abrufen eines Tokens für diese API aufruft, ein v2.0-Zugriffstoken erhält.This is why a resource setting accessTokenAcceptedVersion to 2 means that a client calling the v1.0 endpoint to get a token for that API will receive a v2.0 access token. Ressourcen sind immer Besitzer ihrer Token (Token mit dem Anspruch aud) und können als einzige Anwendungen die Tokendetails ändern.Resources always own their tokens (those with their aud claim) and are the only applications that can change their token details. Daher wird durch eine Änderung der optionalen Ansprüche des Zugriffstokens für Ihren Client auch nicht das beim Anfordern eines Tokens für user.read empfangene Zugriffstoken geändert, das sich im Besitz der Microsoft Graph-Ressource befindet.This is why changing the access token optional claims for your client does not change the access token received when a token is requested for user.read, which is owned by the Microsoft Graph resource.

BeispieltokenSample tokens

v1.0- und v2.0-Token ähneln sich und enthalten viele der gleichen Ansprüche.v1.0 and v2.0 tokens look similar and contain many of the same claims. Im Folgenden ist jeweils ein Beispiel aufgeführt.An example of each is provided here. Diese Beispieltoken können jedoch nicht überprüft werden, da die Schlüssel vor der Veröffentlichung rotiert und persönliche Informationen aus ihnen entfernt wurden.These example tokens will not validate, however, as the keys have rotated prior to publication and personal information has been removed from them.

v1.0v1.0

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd

Zeigen Sie dieses v1.0-Token in JWT.ms an.View this v1.0 token in JWT.ms.

v2.0v2.0

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt

Zeigen Sie dieses v2.0-Token in JWT.ms an.View this v2.0 token in JWT.ms.

Ansprüche in ZugriffstokenClaims in access tokens

JSON Web Token (JWTs) sind in drei Teile unterteilt:JWTs (JSON Web Tokens) are split into three pieces:

  • Header: Enthält Informationen dazu, wie Sie das Token überprüfen können. Dazu zählen auch Informationen zum Typ des Tokens und zu seiner Signierung.Header - Provides information about how to validate the token including information about the type of token and how it was signed.
  • Nutzlast: Enthält alle wichtigen Daten über den Benutzer oder die App, der bzw. die Ihren Dienst aufzurufen versucht.Payload - Contains all of the important data about the user or app that is attempting to call your service.
  • Signatur: Dies ist das Rohmaterial, das zum Überprüfen des Tokens verwendet wird.Signature - Is the raw material used to validate the token.

Diese Teile sind jeweils durch einen Punkt (.) getrennt und werden separat Base64-codiert.Each piece is separated by a period (.) and separately Base64 encoded.

Ansprüche sind nur enthalten, wenn ein Wert zum Füllen des Anspruchs vorhanden ist.Claims are present only if a value exists to fill it. Ihre App sollte nicht vom Vorhandensein eines Anspruchs abhängig sein.Your app shouldn't take a dependency on a claim being present. Beispiele hierfür sind pwd_exp (nicht jeder Mandant erfordert das Ablaufen von Kennwörtern) und family_name (Flows für Clientanmeldeinformationen erfolgen im Auftrag von Anwendungen, die keine Namen haben).Examples include pwd_exp (not every tenant requires passwords to expire) and family_name (client credential flows are on behalf of applications which don't have names). Zur Überprüfung von Zugriffstoken verwendete Ansprüche sind immer vorhanden.Claims used for access token validation will always be present.

Einige Ansprüche werden verwendet, um Azure AD das Schützen von Token im Fall einer Wiederverwendung zu ermöglichen.Some claims are used to help Azure AD secure tokens in case of reuse. Diese Ansprüche sind in der Beschreibung als „nicht transparent“ markiert, um anzugeben, dass sie nicht für die öffentliche Nutzung vorgesehen sind.These are marked as not being for public consumption in the description as "Opaque". Solche Ansprüche können eventuell in einem Token enthalten sein, und neue Ansprüche können ohne vorherige Ankündigung hinzugefügt werden.These claims may or may not appear in a token, and new ones may be added without notice.

HeaderansprücheHeader claims

AnspruchClaim FormatFormat BESCHREIBUNGDescription
typ Zeichenfolge – immer „JWT“String - always "JWT" Gibt an, dass das Token ein JWT ist.Indicates that the token is a JWT.
nonce StringString Ein eindeutiger Bezeichner, der zum Schutz vor Token-Replay-Angriffen verwendet wird.A unique identifier used to protect against token replay attacks. Ihre Ressource kann diesen Wert zum Schutz vor Wiedergaben aufzeichnen.Your resource can record this value to protect against replays.
alg StringString Gibt den Algorithmus an, mit dem das Token signiert wurde, beispielsweise „RS256“.Indicates the algorithm that was used to sign the token, for example, "RS256"
kid StringString Gibt den Fingerabdruck des öffentlichen Schlüssels an, der zum Signieren dieses Tokens verwendet wird.Specifies the thumbprint for the public key that's used to sign this token. Wird in v1.0- und v2.0-Zugriffstoken ausgegeben.Emitted in both v1.0 and v2.0 access tokens.
x5t StringString Hat dieselbe Funktion (hinsichtlich Verwendung und Wert) wie kid.Functions the same (in use and value) as kid. x5t ist ein Legacyanspruch, der aus Kompatibilitätsgründen nur in v1.0-Zugriffstoken ausgegeben wird.x5t is a legacy claim emitted only in v1.0 access tokens for compatibility purposes.

NutzlastansprüchePayload claims

AnspruchClaim FormatFormat BESCHREIBUNGDescription
aud Zeichenfolge, App-ID-URI oder GUIDString, an App ID URI or GUID Identifiziert den vorgesehenen Empfänger des Tokens – die Zielgruppe.Identifies the intended recipient of the token - its audience. Ihre API sollte diesen Wert überprüfen und das Token ablehnen, wenn der Wert nicht übereinstimmt.Your API should validate this value and reject the token if the value doesn't match. In v2.0-Token ist dies immer die Client-ID der API, während es in v1.0-Token die Client-ID oder der in der Anforderung verwendete Ressourcen-URI sein kann. Das richtet sich danach, wie der Client das Token angefordert hat.In v2.0 tokens, this is always the client ID of the API, while in v1.0 tokens it can be the client ID or the resource URI used in the request, depending on how the client requested the token.
iss Zeichenfolge, ein STS-URIString, an STS URI Identifiziert den Sicherheitstokendienst (STS), der das Token und den Azure AD-Mandanten, in dem der Benutzer authentifiziert wurde, erstellt und zurückgibt.Identifies the security token service (STS) that constructs and returns the token, and the Azure AD tenant in which the user was authenticated. Wenn das ausgegebene Token ein v2. 0-Token ist (weitere Informationen finden Sie im Anspruch ver), endet der URI in /v2.0.If the token issued is a v2.0 token (see the ver claim), the URI will end in /v2.0. Die GUID, die angibt, dass der Benutzer ein Consumer-Benutzer eines Microsoft-Kontos ist, lautet 9188040d-6c67-4c5b-b112-36a304b66dad.The GUID that indicates that the user is a consumer user from a Microsoft account is 9188040d-6c67-4c5b-b112-36a304b66dad. Ihre App kann den GUID-Teil des Anspruchs verwenden, um die Mandanten einzuschränken, die sich bei der App anmelden können (sofern zutreffend).Your app can use the GUID portion of the claim to restrict the set of tenants that can sign in to the app, if applicable.
idp Zeichenfolge, in der Regel ein STS-URIString, usually an STS URI Der Identitätsanbieter, der den Antragsteller des Tokens authentifiziert hat.Records the identity provider that authenticated the subject of the token. Dieser Wert ist identisch mit dem Wert des Ausstelleranspruchs, es sei denn, das Benutzerkonto ist nicht im gleichen Mandanten wie der Aussteller vorhanden (etwa Gäste).This value is identical to the value of the Issuer claim unless the user account not in the same tenant as the issuer - guests, for instance. Wenn der Anspruch nicht vorhanden ist, bedeutet dies, dass stattdessen der Wert iss verwendet werden kann.If the claim isn't present, it means that the value of iss can be used instead. Für in einem Organisationskontext verwendete persönliche Konten (etwa ein zu einem Azure AD-Mandanten eingeladenes persönliches Konto) kann der idp-Anspruch „live.com“ oder ein STS-URI sein, der den Microsoft-Kontomandanten 9188040d-6c67-4c5b-b112-36a304b66dad enthält.For personal accounts being used in an organizational context (for instance, a personal account invited to an Azure AD tenant), the idp claim may be 'live.com' or an STS URI containing the Microsoft account tenant 9188040d-6c67-4c5b-b112-36a304b66dad.
iat Ganze Zahl, ein UNIX-Zeitstempelint, a UNIX timestamp „Issued At“ gibt an, wann die Authentifizierung für dieses Token erfolgt ist."Issued At" indicates when the authentication for this token occurred.
nbf Ganze Zahl, ein UNIX-Zeitstempelint, a UNIX timestamp Der Anspruch „nbf“ (nicht vor) gibt die Zeit an, vor der das JWT NICHT für die Bearbeitung akzeptiert werden darf.The "nbf" (not before) claim identifies the time before which the JWT must not be accepted for processing.
exp Ganze Zahl, ein UNIX-Zeitstempelint, a UNIX timestamp Der Anspruch „exp“ (Ablaufzeit) gibt die Ablaufzeit an, ab oder nach der das JWT NICHT für die Bearbeitung akzeptiert werden darf.The "exp" (expiration time) claim identifies the expiration time on or after which the JWT must not be accepted for processing. Wichtig ist hierbei, dass eine Ressource das Token auch vor diesem Zeitpunkt ablehnen kann (beispielsweise wenn eine Änderung der Authentifizierung erforderlich ist oder ein Tokenwiderruf erkannt wurde).It's important to note that a resource may reject the token before this time as well, such as when a change in authentication is required or a token revocation has been detected.
aio Nicht transparente ZeichenfolgeOpaque String Ein interner Anspruch, der von Azure AD verwendet wird, um Daten für die Wiederverwendung von Token aufzuzeichnen.An internal claim used by Azure AD to record data for token reuse. Ressourcen sollten diesen Anspruch nicht verwenden.Resources should not use this claim.
acr Zeichenfolge, 0 oder 1String, a "0" or "1" Ist nur in v1.0-Token vorhanden.Only present in v1.0 tokens. Der Anspruch „Authentication context class“ (Authentifizierungskontextklasse).The "Authentication context class" claim. Der Wert "0" gibt an, dass die Endbenutzerauthentifizierung nicht die ISO/IEC 29115-Anforderungen erfüllt.A value of "0" indicates the end-user authentication did not meet the requirements of ISO/IEC 29115.
amr JSON-Array von ZeichenfolgenJSON array of strings Ist nur in v1.0-Token vorhanden.Only present in v1.0 tokens. Gibt an, wie der Antragsteller des Tokens authentifiziert wurde.Identifies how the subject of the token was authenticated. Weitere Details finden Sie im Abschnitt zum amr-Anspruch.See the amr claim section for more details.
appid Zeichenfolge, eine GUIDString, a GUID Ist nur in v1.0-Token vorhanden.Only present in v1.0 tokens. Die Anwendungs-ID des Clients, der das Token verwendet.The application ID of the client using the token. Die Anwendung kann als sie selbst oder im Auftrag eines Benutzers agieren.The application can act as itself or on behalf of a user. Die Anwendungs-ID stellt in der Regel ein Anwendungsobjekt dar, kann aber auch ein Dienstprinzipalobjekt in Azure AD darstellen.The application ID typically represents an application object, but it can also represent a service principal object in Azure AD.
azp Zeichenfolge, eine GUIDString, a GUID Nur in v2.0-Token enthalten, ersetzt appid.Only present in v2.0 tokens, a replacement for appid. Die Anwendungs-ID des Clients, der das Token verwendet.The application ID of the client using the token. Die Anwendung kann als sie selbst oder im Auftrag eines Benutzers agieren.The application can act as itself or on behalf of a user. Die Anwendungs-ID stellt in der Regel ein Anwendungsobjekt dar, kann aber auch ein Dienstprinzipalobjekt in Azure AD darstellen.The application ID typically represents an application object, but it can also represent a service principal object in Azure AD.
appidacr 0, 1 oder 2"0", "1", or "2" Ist nur in v1.0-Token vorhanden.Only present in v1.0 tokens. Gibt an, wie der Client authentifiziert wurde.Indicates how the client was authenticated. Bei einem öffentlichen Client ist der Wert 0.For a public client, the value is "0". Wenn die Client-ID und der geheime Clientschlüssel verwendet werden, ist der Wert 1.If client ID and client secret are used, the value is "1". Wenn ein Clientzertifikat für die Authentifizierung verwendet wurde, lautet der Wert 2.If a client certificate was used for authentication, the value is "2".
azpacr 0, 1 oder 2"0", "1", or "2" Nur in v2.0-Token enthalten, ersetzt appidacr.Only present in v2.0 tokens, a replacement for appidacr. Gibt an, wie der Client authentifiziert wurde.Indicates how the client was authenticated. Bei einem öffentlichen Client ist der Wert 0.For a public client, the value is "0". Wenn die Client-ID und der geheime Clientschlüssel verwendet werden, ist der Wert 1.If client ID and client secret are used, the value is "1". Wenn ein Clientzertifikat für die Authentifizierung verwendet wurde, lautet der Wert 2.If a client certificate was used for authentication, the value is "2".
preferred_username StringString Der primäre Benutzername, der den Benutzer darstellt.The primary username that represents the user. Dabei kann es sich um eine E-Mail-Adresse, eine Telefonnummer oder einen generischen Benutzernamen ohne bestimmtes Format handeln.It could be an email address, phone number, or a generic username without a specified format. Der Wert kann geändert werden und sich im Laufe der Zeit ändern.Its value is mutable and might change over time. Da er geändert werden kann, darf dieser Wert nicht verwendet werden, um Autorisierungsentscheidungen zu treffen.Since it is mutable, this value must not be used to make authorization decisions. Er kann jedoch für Hinweise auf den Benutzernamen und auf der Benutzeroberfläche als Benutzername verwendet werden.It can be used for username hints, however, and in human-readable UI as a username. Der Bereich profile ist erforderlich, um diesen Anspruch zu empfangen.The profile scope is required in order to receive this claim. Er ist nur in v2.0-Token vorhanden.Present only in v2.0 tokens.
name StringString Ein lesbarer Wert, der den Antragsteller des Tokens angibt.Provides a human-readable value that identifies the subject of the token. Der Wert ist nicht zwingend eindeutig, kann geändert werden und dient nur zu Anzeigezwecken.The value is not guaranteed to be unique, it is mutable, and it's designed to be used only for display purposes. Der Bereich profile ist erforderlich, um diesen Anspruch zu empfangen.The profile scope is required in order to receive this claim.
scp Zeichenfolge, eine durch Leerzeichen getrennte Liste von BereichenString, a space separated list of scopes Die von Ihrer Anwendung verfügbar gemachte Gruppe von Bereichen, für die die Clientanwendung eine Einwilligung angefordert (und empfangen) hat.The set of scopes exposed by your application for which the client application has requested (and received) consent. Ihre App sollte überprüfen, ob diese Bereiche gültige, von Ihrer App verfügbar gemachte Bereiche sind, und Autorisierungsentscheidungen basierend auf dem Wert der Bereiche treffen.Your app should verify that these scopes are valid ones exposed by your app, and make authorization decisions based on the value of these scopes. Wird nur für Benutzertoken verwendet.Only included for user tokens.
roles Array von Zeichenfolgen, eine Liste der BerechtigungenArray of strings, a list of permissions Die von Ihrer Anwendung verfügbar gemachte Gruppe von Berechtigungen, für die der anfordernden Anwendung bzw. dem anfordernden Benutzer die Berechtigung zum Aufrufen gewährt wurde.The set of permissions exposed by your application that the requesting application or user has been given permission to call. Bei Anwendungstoken wird dieser Anspruch während des Flows für Clientanmeldeinformationen (v1.0, v2.0) anstelle von Benutzerbereichen verwendet.For application tokens, this is used during the client credential flow (v1.0, v2.0) in place of user scopes. Bei Benutzertoken wird dieser Wert mit den Rollen aufgefüllt, die dem Benutzer für die Zielanwendung zugewiesen wurden.For user tokens this is populated with the roles the user was assigned to on the target application.
wids Array von RoleTemplateID-GUIDsArray of RoleTemplateID GUIDs Gibt die mandantenweiten Rollen an, die diesem Benutzer aus dem Abschnitt mit Rollen auf der SeiteAdministratorrollen zugewiesen wurden.Denotes the tenant-wide roles assigned to this user, from the section of roles present in the admin roles page. Dieser Anspruch wird über die groupMembershipClaims-Eigenschaft des Anwendungsmanifests anwendungsspezifisch konfiguriert.This claim is configured on a per-application basis, through the groupMembershipClaims property of the application manifest. Der Wert muss auf „All“ oder „DirectoryRole“ festgelegt werden.Setting it to "All" or "DirectoryRole" is required. Ist in Token, die über den impliziten Flow abgerufen wurden, aufgrund von Beschränkungen der Tokenlänge u. U. nicht enthalten.May not be present in tokens obtained through the implicit flow due to token length concerns.
groups JSON-Array von GUIDsJSON array of GUIDs Enthält die Objekt-IDs, die die Gruppenmitgliedschaften des Antragstellers darstellen.Provides object IDs that represent the subject's group memberships. Diese Werte sind eindeutig (siehe „Object ID“) und eignen sich zum sicheren Verwalten des Zugriffs, z.B. für das Erzwingen der Autorisierung für den Zugriff auf eine Ressource.These values are unique (see Object ID) and can be safely used for managing access, such as enforcing authorization to access a resource. Die im Anspruch „groups“ enthaltenen Gruppen werden über die groupMembershipClaims-Eigenschaft des Anwendungsmanifests anwendungsspezifisch konfiguriert.The groups included in the groups claim are configured on a per-application basis, through the groupMembershipClaims property of the application manifest. Mit dem Wert „Null“ werden alle Gruppen ausgeschlossen. Beim Wert „SecurityGroup“ sind nur Mitglieder von Active Directory-Sicherheitsgruppen enthalten. Beim Wert „All“ sind sowohl Sicherheitsgruppen als auch Microsoft 365-Verteilerlisten enthalten.A value of null will exclude all groups, a value of "SecurityGroup" will include only Active Directory Security Group memberships, and a value of "All" will include both Security Groups and Microsoft 365 Distribution Lists.

Informationen zur Verwendung des Anspruchs groups mit impliziter Gewährung finden Sie unter dem Anspruch hasgroups.See the hasgroups claim below for details on using the groups claim with the implicit grant.
Wenn bei anderen Flows die Anzahl von Gruppen, denen der Benutzer angehört, einen Grenzwert überschreitet (150 für SAML, 200 für JWT), wird den Anspruchsquellen, die auf den Microsoft Graph-Endpunkt mit der Liste der Gruppen für den Benutzer verweisen, ein Überschreitungsanspruch hinzugefügt.For other flows, if the number of groups the user is in goes over a limit (150 for SAML, 200 for JWT), then an overage claim will be added to the claim sources pointing at the Microsoft Graph endpoint containing the list of groups for the user.
hasgroups BooleanBoolean Ist immer auf true festgelegt (sofern vorhanden) und gibt an, dass der Benutzer mindestens einer Gruppe angehört.If present, always true, denoting the user is in at least one group. Wird anstelle des Anspruchs groups für JWTs in Flows mit impliziter Gewährung verwendet, wenn der Anspruch für vollständige Gruppen das URI-Fragment über die URL-Längenbeschränkung (derzeit 6 oder mehr Gruppen) erweitert.Used in place of the groups claim for JWTs in implicit grant flows if the full groups claim would extend the URI fragment beyond the URL length limits (currently 6 or more groups). Gibt an, dass der Client die Gruppen des Benutzers über die Microsoft Graph-API bestimmen soll (https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects).Indicates that the client should use the Microsoft Graph API to determine the user's groups (https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects).
groups:src1 JSON-ObjektJSON object Für Tokenanforderungen ohne Längenbeschränkung (siehe hasgroups oben), die aber dennoch zu groß für das Token sind, ist ein Link zur Liste der vollständigen Gruppen für den Benutzer enthalten.For token requests that are not length limited (see hasgroups above) but still too large for the token, a link to the full groups list for the user will be included. Für JWTs als verteilter Anspruch, für SAML als neuer Anspruch anstelle des Anspruchs groups.For JWTs as a distributed claim, for SAML as a new claim in place of the groups claim.

JWT-Beispielwert:Example JWT Value:
"groups":"src1"
"_claim_sources: "src1" : { "endpoint" : "https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects" }"_claim_sources: "src1" : { "endpoint" : "https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects" }
sub StringString Der Prinzipal, für den das Token Informationen zusichert, z. B. der Benutzer einer App.The principal about which the token asserts information, such as the user of an app. Dieser Wert ist unveränderlich und kann nicht erneut zugewiesen oder wiederverwendet werden.This value is immutable and cannot be reassigned or reused. Er kann für die sichere Durchführung von Autorisierungsüberprüfungen verwendet werden, z.B. wenn das Token verwendet wird, um auf eine Ressource zuzugreifen. Er kann auch als Schlüssel in Datenbanktabellen verwendet werden.It can be used to perform authorization checks safely, such as when the token is used to access a resource, and can be used as a key in database tables. Da der Antragsteller immer in den Token vorhanden ist, die Azure AD ausstellt, wird die Nutzung dieses Werts in einem allgemeinen Autorisierungssystem empfohlen.Because the subject is always present in the tokens that Azure AD issues, we recommend using this value in a general-purpose authorization system. Der Antragsteller ist allerdings ein paarweiser Bezeichner: Er gilt nur für eine bestimmte Anwendungs-ID.The subject is, however, a pairwise identifier - it is unique to a particular application ID. Wenn sich ein Benutzer bei zwei verschiedenen Apps mit zwei verschiedenen Client-IDs anmeldet, erhalten diese Apps zwei unterschiedliche Werte für den Antragstelleranspruch.Therefore, if a single user signs into two different apps using two different client IDs, those apps will receive two different values for the subject claim. Dies kann abhängig von den Architektur- und Datenschutzanforderungen möglicherweise wünschenswert sein oder nicht.This may or may not be desired depending on your architecture and privacy requirements. Siehe auch den oid-Anspruch (der innerhalb eines Mandanten für alle Apps immer gleich bleibt).See also the oid claim (which does remain the same across apps within a tenant).
oid Zeichenfolge, eine GUIDString, a GUID Der unveränderliche Bezeichner für ein Objekt in der Microsoft Identity Platform (in diesem Fall ein Benutzerkonto).The immutable identifier for an object in the Microsoft identity platform, in this case, a user account. Er kann auch verwendet werden, um Autorisierungsüberprüfungen auf sichere Weise durchzuführen, und er kann als Schlüssel in Datenbanktabellen genutzt werden.It can also be used to perform authorization checks safely and as a key in database tables. Diese ID identifiziert den Benutzer anwendungsübergreifend eindeutig: Zwei verschiedene Anwendungen, die den gleichen Benutzer anmelden, erhalten den gleichen Wert im oid-Anspruch.This ID uniquely identifies the user across applications - two different applications signing in the same user will receive the same value in the oid claim. Dies bedeutet, dass oid beim Senden von Abfragen an Microsoft-Onlinedienste wie Microsoft Graph verwendet werden kann.Thus, oid can be used when making queries to Microsoft online services, such as the Microsoft Graph. Microsoft Graph gibt diese ID als id-Eigenschaft für ein bestimmtes Benutzerkonto zurück.The Microsoft Graph will return this ID as the id property for a given user account. Da mit oid mehrere Apps Benutzer korrelieren können, ist der profile-Bereich erforderlich, um diesen Anspruch zu erhalten.Because the oid allows multiple apps to correlate users, the profile scope is required in order to receive this claim. Beachten Sie Folgendes: Wenn ein einzelner Benutzer in mehreren Mandanten vorhanden ist, enthält der Benutzer in jedem Mandanten eine andere Objekt-ID. Sie werden als unterschiedliche Konten betrachtet, obwohl sich der Benutzer bei jedem Konto mit den gleichen Anmeldeinformationen anmeldet.Note that if a single user exists in multiple tenants, the user will contain a different object ID in each tenant - they are considered different accounts, even though the user logs into each account with the same credentials.
tid Zeichenfolge, eine GUIDString, a GUID Stellt den Azure AD-Mandanten dar, aus dem der Benutzer stammt.Represents the Azure AD tenant that the user is from. Bei Geschäfts- und Schulkonten ist die GUID die unveränderliche Mandanten-ID der Organisation, zu der der Benutzer gehört.For work and school accounts, the GUID is the immutable tenant ID of the organization that the user belongs to. Für persönliche Konten lautet der Wert 9188040d-6c67-4c5b-b112-36a304b66dad.For personal accounts, the value is 9188040d-6c67-4c5b-b112-36a304b66dad. Der Bereich profile ist erforderlich, um diesen Anspruch zu empfangen.The profile scope is required in order to receive this claim.
unique_name StringString Ist nur in v1.0-Token vorhanden.Only present in v1.0 tokens. Ein lesbarer Wert, der Aufschluss über den Antragsteller des Tokens gibt.Provides a human readable value that identifies the subject of the token. Es wird nicht garantiert, dass der Wert innerhalb eines Mandanten eindeutig ist. Er sollte daher nur zu Anzeigezwecken verwendet werden.This value is not guaranteed to be unique within a tenant and should be used only for display purposes.
uti Nicht transparente ZeichenfolgeOpaque String Ein interner Anspruch, der von Azure zum erneuten Überprüfen von Token verwendet wird.An internal claim used by Azure to revalidate tokens. Ressourcen sollten diesen Anspruch nicht verwenden.Resources shouldn't use this claim.
rh Nicht transparente ZeichenfolgeOpaque String Ein interner Anspruch, der von Azure zum erneuten Überprüfen von Token verwendet wird.An internal claim used by Azure to revalidate tokens. Ressourcen sollten diesen Anspruch nicht verwenden.Resources should not use this claim.
ver Zeichenfolge, 1.0 oder 2.0String, either 1.0 or 2.0 Gibt die Version des Zugriffstokens an.Indicates the version of the access token.

GruppenüberschreitungsanspruchGroups overage claim

Um sicherzustellen, dass die Tokengröße die Grenzwerte für HTTP-Header nicht überschreitet, schränkt Azure AD die Anzahl der im Gruppenanspruch enthaltenen Objekt-IDs ein.To ensure that the token size doesn't exceed HTTP header size limits, Azure AD limits the number of object IDs that it includes in the groups claim. Wenn ein Benutzer Mitglied in mehr Gruppen ist, als es die Überschreitungsgrenze (150 für SAML-Token, 200 für JWT-Token und nur 6 bei Ausstellung über den impliziten Flow) zulässt, gibt Azure AD den Gruppenanspruch im Token nicht aus.If a user is member of more groups than the overage limit (150 for SAML tokens, 200 for JWT tokens, and only 6 if issued via the implicit flow), then Azure AD does not emit the groups claim in the token. Stattdessen ist ein Überschreitungsanspruch im Token enthalten, der der Anwendung anzeigt, dass die Microsoft Graph-API abgefragt werden soll, um die Gruppenmitgliedschaft des Benutzers abzurufen.Instead, it includes an overage claim in the token that indicates to the application to query the Microsoft Graph API to retrieve the user's group membership.

{
  ...
  "_claim_names": {
   "groups": "src1"
    },
    {
  "_claim_sources": {
    "src1": {
        "endpoint":"[Url to get this user's group membership from]"
        }
       }
     }
  ...
}

Sie können die im Ordner App-Erstellungsskripts verfügbare Datei BulkCreateGroups.ps1 verwenden, um Überschreitungsszenarien zu testen.You can use the BulkCreateGroups.ps1 provided in the App Creation Scripts folder to help test overage scenarios.

Grundlegende v1.0-Ansprüchev1.0 basic claims

Die folgenden Ansprüche werden ggf. in v1.0-Token eingeschlossen, sind standardmäßig aber nicht in v2.0-Token enthalten.The following claims will be included in v1.0 tokens if applicable, but aren't included in v2.0 tokens by default. Wenn Sie v2.0 verwenden und einen dieser Ansprüche benötigen, können Sie ihn mithilfe von optionalen Ansprüchen anfordern.If you're using v2.0 and need one of these claims, request them using optional claims.

AnspruchClaim FormatFormat BESCHREIBUNGDescription
ipaddr StringString Die IP-Adresse, mit der sich der Benutzer authentifiziert hat.The IP address the user authenticated from.
onprem_sid Zeichenfolge, im SID-FormatString, in SID format In Fällen, in denen der Benutzer über eine lokale Authentifizierung verfügt, gibt dieser Anspruch die SID an.In cases where the user has an on-premises authentication, this claim provides their SID. Sie können onprem_sid für die Autorisierung in älteren Anwendungen verwenden.You can use onprem_sid for authorization in legacy applications.
pwd_exp Ganze Zahl, ein UNIX-Zeitstempelint, a UNIX timestamp Gibt an, wann das Kennwort des Benutzers abläuft.Indicates when the user's password expires.
pwd_url StringString Eine URL, an die Benutzer zum Zurücksetzen ihres Kennworts weitergeleitet werden können.A URL where users can be sent to reset their password.
in_corp booleanboolean Signalisiert, ob sich der Client aus dem Unternehmensnetzwerk anmeldet.Signals if the client is logging in from the corporate network. Andernfalls ist der Anspruch nicht enthalten.If they aren't, the claim isn't included.
nickname StringString Ein zusätzlicher Name für den Benutzer, der vom Vor- oder Nachnamen abweicht.An additional name for the user, separate from first or last name.
family_name StringString Gibt den Nachnamen des Benutzers entsprechend der Definition im Benutzerobjekt an.Provides the last name, surname, or family name of the user as defined on the user object.
given_name StringString Gibt den Vornamen des Benutzers entsprechend der Definition im Benutzerobjekt an.Provides the first or given name of the user, as set on the user object.
upn StringString Der Benutzername des Benutzers.The username of the user. Hierbei kann es sich um eine Telefonnummer, E-Mail-Adresse oder unformatierte Zeichenfolge handeln.May be a phone number, email address, or unformatted string. Dieser Anspruch sollte nur zu Anzeigezwecken und zum Bereitstellen von Hinweisen zum Benutzernamen in Szenarien mit erneuter Authentifizierung verwendet werden.Should only be used for display purposes and providing username hints in reauthentication scenarios.

amr-AnspruchThe amr claim

Microsoft-Identitäten können auf verschiedene Arten authentifiziert werden, die möglicherweise für Ihre Anwendung relevant sind.Microsoft identities can authenticate in different ways, which may be relevant to your application. Der amr-Anspruch ist ein Array, das mehrere Elemente (beispielsweise ["mfa", "rsa", "pwd"]) für eine Authentifizierung enthalten kann, bei der sowohl ein Kennwort als auch die Authenticator-App verwendet wurden.The amr claim is an array that can contain multiple items, such as ["mfa", "rsa", "pwd"], for an authentication that used both a password and the Authenticator app.

WertValue BESCHREIBUNGDescription
pwd Kennwortauthentifizierung, entweder das Microsoft-Kennwort eines Benutzers oder der geheime Clientschlüssel einer App.Password authentication, either a user's Microsoft password or an app's client secret.
rsa Die Authentifizierung erfolgt basierend auf der Prüfung eines RSA-Schlüssels, beispielsweise mit der Microsoft Authenticator-App.Authentication was based on the proof of an RSA key, for example with the Microsoft Authenticator app. Dies beinhaltet auch, ob die Authentifizierung von einem selbst signierten JWT mit einem X509-Zertifikat im Besitz eines Diensts durchgeführt wurde.This includes if authentication was done by a self-signed JWT with a service owned X509 certificate.
otp Einmalkennung mit einer E-Mail oder SMS.One-time passcode using an email or a text message.
fed Eine Verbundauthentifizierungsassertion (z. B. JWT oder SAML) wurde verwendet.A federated authentication assertion (such as JWT or SAML) was used.
wia Integrierte Windows-AuthentifizierungWindows Integrated Authentication
mfa Die mehrstufige Authentifizierung wurde verwendet.Multi-factor authentication was used. Wenn dieser Wert vorhanden ist, werden auch andere Authentifizierungsmethoden eingeschlossen.When this is present the other authentication methods will also be included.
ngcmfa Entspricht mfa und wird zum Bereitstellen bestimmter erweiterter Anmeldeinformationstypen verwendet.Equivalent to mfa, used for provisioning of certain advanced credential types.
wiaormfa Der Benutzer hat sich mit Windows oder MFA-Anmeldeinformationen authentifiziert.The user used Windows or an MFA credential to authenticate.
none Es wurde keine Authentifizierung durchgeführt.No authentication was done.

Überprüfen von TokenValidating tokens

Nicht alle Apps sollten Token überprüfen.Not all apps should validate tokens. Apps sollten nur in bestimmten Szenarien ein Token überprüfen:Only in specific scenarios should apps validate a token:

  • Web-APIs müssen Zugriffstoken überprüfen, die von einem Client an sie gesendet werden.Web APIs must validate access tokens sent to them by a client. Sie dürfen nur Token akzeptieren, die ihren Anspruch aud enthalten.They must only accept tokens containing their aud claim.
  • Vertrauliche Web-Apps wie ASP.NET Core müssen ID-Token überprüfen, die über den Browser des Benutzers im Hybridflow an sie gesendet werden, bevor sie den Zugriff auf die Daten eines Benutzers gewähren oder eine Sitzung einrichten.Confidential web apps like ASP.NET Core must validate ID tokens sent to them via the user's browser in the hybrid flow, before allowing access to a user's data or establishing a session.

Wenn kein oben genanntes Szenario zutrifft, kann Ihre Anwendung nicht von der Überprüfung des Tokens profitieren und stellt möglicherweise ein Sicherheits- und Zuverlässigkeitsrisiko dar, wenn Entscheidungen anhand der Gültigkeit des Tokens getroffen werden.If none of the above scenarios apply, your application will not benefit from validating the token, and may present a security and reliability risk if decisions are made based on the validity of the token. Öffentliche Clients wie native Apps oder SPAs profitieren nicht von der Tokenüberprüfung. Die App kommuniziert direkt mit dem IDP, sodass die Gültigkeit der Token durch den SSL-Schutz sichergestellt ist.Public clients like native apps or SPAs don't benefit from validating tokens - the app communicates directly with the IDP, so SSL protection ensures the tokens are valid.

APIs und Web-Apps dürfen nur Token mit dem Anspruch aud überprüfen, der mit ihrer Anwendung übereinstimmt. Für andere Ressourcen gibt es möglicherweise benutzerdefinierte Tokenüberprüfungsregeln.APIs and web apps must only validate tokens that have an aud claim that matches their application; other resources may have custom token validation rules. Token für Microsoft Graph werden beispielsweise aufgrund ihres proprietären Formats nicht anhand dieser Regeln überprüft.For example, tokens for Microsoft Graph won't validate according to these rules due to their proprietary format. Das Überprüfen und Akzeptieren von Token, die für eine andere Ressource bestimmt sind, ist ein Beispiel für das sogenannte verwirrte Stellvertreterproblem (confused deputy problem).Validating and accepting tokens meant for another resource is an example of the confused deputy problem.

Wenn Ihre Anwendung ein ID-Token (id_token) oder ein Zugriffstoken (access_token) entsprechend dem oben Gesagten überprüfen muss, sollte Ihre App zunächst Signatur und Aussteller des Tokens anhand der Werte im OpenID Discovery-Dokument überprüfen.If your application needs to validate an id_token or an access_token according to the above, your app should first validate the token's signature and issuer against the values in the OpenID discovery document. Die mandantenunabhängige Version des Dokuments finden Sie beispielsweise unter https://login.microsoftonline.com/common/.well-known/openid-configuration.For example, the tenant-independent version of the document is located at https://login.microsoftonline.com/common/.well-known/openid-configuration.

Die folgenden Informationen richten sich an Leser, die den zugrundeliegenden Prozess verstehen möchten.The following information is provided for those who wish to understand the underlying process. Azure AD-Middleware verfügt über integrierte Funktionen zum Überprüfen von Zugriffstoken. Sie können auch unsere Beispiele nach einer gewünschten Programmiersprache durchsuchen.The Azure AD middleware has built-in capabilities for validating access tokens, and you can browse through our samples to find one in the language of your choice. Für die JWT-Überprüfung stehen zudem verschiedene Open Source-Bibliotheken von Drittanbietern zur Verfügung. Für nahezu jede Plattform und Programmiersprache ist mindestens eine Option verfügbar.There are also several third-party open-source libraries available for JWT validation - there is at least one option for almost every platform and language. Weitere Informationen zu Azure AD-Authentifizierungsbibliotheken sowie Codebeispiele finden Sie unter Authentifizierungsbibliotheken.For more information about Azure AD authentication libraries and code samples, see the authentication libraries.

Überprüfen der SignaturValidating the signature

Ein JWT enthält drei Segmente, die durch das Zeichen . getrennt sind.A JWT contains three segments, which are separated by the . character. Das erste Segment wird als Header, das zweite als Text und das dritte als Signatur bezeichnet.The first segment is known as the header, the second as the body, and the third as the signature. Mit dem Signatursegment kann die Authentizität des Tokens überprüft werden, sodass es für Ihre App als vertrauenswürdig eingestuft werden kann.The signature segment can be used to validate the authenticity of the token so that it can be trusted by your app.

Von Azure AD ausgestellte Token werden mit asymmetrischen Verschlüsselungsalgorithmen nach Industriestandard (z. B. RS256) signiert.Tokens issued by Azure AD are signed using industry standard asymmetric encryption algorithms, such as RS256. Der Header des JWT enthält Informationen zum Schlüssel und zur Verschlüsselungsmethode, die zum Signieren des Tokens verwendet werden:The header of the JWT contains information about the key and encryption method used to sign the token:

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "iBjL1Rcqzhiy4fpxIxdZqohM2Yk",
  "kid": "iBjL1Rcqzhiy4fpxIxdZqohM2Yk"
}

Der alg-Anspruch gibt den Algorithmus an, mit dem das Token signiert wurde, und der kid-Anspruch gibt den bestimmten öffentlichen Schlüssel an, mit dem das Token überprüft wurde.The alg claim indicates the algorithm that was used to sign the token, while the kid claim indicates the particular public key that was used to validate the token.

Zu einem beliebigen Zeitpunkt signiert Azure AD unter Umständen ein ID-Token mithilfe eines bestimmten Satzes von Paaren aus öffentlichen und privaten Schlüsseln.At any given point in time, Azure AD may sign an id_token using any one of a certain set of public-private key pairs. Azure AD wechselt regelmäßig durch die möglichen Sätze von Schlüsseln. Ihre App muss also auf die automatische Verarbeitung dieser Schlüsseländerungen ausgelegt sein.Azure AD rotates the possible set of keys on a periodic basis, so your app should be written to handle those key changes automatically. Die von Azure AD verwendeten öffentlichen Schlüssel sollten alle 24 Stunden auf Änderungen überprüft werden.A reasonable frequency to check for updates to the public keys used by Azure AD is every 24 hours.

Sie können die Signaturschlüsseldaten, die zum Überprüfen der Signatur erforderlich sind, mithilfe des OpenID Connect-Metadatendokuments abrufen. Dieses Dokument befindet sich unter:You can acquire the signing key data necessary to validate the signature by using the OpenID Connect metadata document located at:

https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration

Tipp

Testen Sie diese URL in einem Browser!Try this URL in a browser!

Dieses Metadatendokument:This metadata document:

  • Ist ein JSON-Objekt, das zahlreiche nützliche Informationen enthält, beispielsweise den Speicherort der verschiedenen Endpunkte, die zum Ausführen der OpenID Connect-Authentifizierung erforderlich sind.Is a JSON object containing several useful pieces of information, such as the location of the various endpoints required for doing OpenID Connect authentication.
  • Enthält einen jwks_uri, der den Speicherort des Satzes von öffentlichen Schlüsseln zum Signieren von Token angibt.Includes a jwks_uri, which gives the location of the set of public keys used to sign tokens. Der JSON-Webschlüssel (JWK) unter jwks_uri enthält alle Informationen zu den zu diesem Zeitpunkt verwendeten öffentlichen Schlüsseln.The JSON Web Key (JWK) located at the jwks_uri contains all of the public key information in use at that particular moment in time. Das JWK-Format wird in RFC 7517 beschrieben.The JWK format is described in RFC 7517. Ihre App kann mit dem Anspruch kid im JWT-Header auswählen, welcher öffentliche Schlüssel in diesem Dokument zum Signieren eines bestimmten Tokens verwendet wurde.Your app can use the kid claim in the JWT header to select which public key in this document has been used to sign a particular token. Sie kann anschließend die Signaturüberprüfung mithilfe des korrekten öffentlichen Schlüssels und des angegebenen Algorithmus ausführen.It can then do signature validation using the correct public key and the indicated algorithm.

Hinweis

Es wird empfohlen, Ihr Token mithilfe des Anspruchs kid zu überprüfen.We recommend using the kid claim to validate your token. Während v1.0-Token sowohl den Anspruch x5t als auch den Anspruch kid enthalten, können v2.0-Token nur den Anspruch kid enthalten.Though v1.0 tokens contain both the x5t and kid claims, v2.0 tokens contain only the kid claim.

Die Ausführung der Signaturüberprüfung wird in diesem Dokument nicht erläutert. Es stehen jedoch viele Open-Source-Bibliotheken mit hilfreichen Informationen zur Verfügung, falls Sie dabei Unterstützung benötigen.Doing signature validation is outside the scope of this document - there are many open-source libraries available for helping you do so if necessary. Microsoft Identity Platform bietet jedoch eine Tokensignaturerweiterung für die Standards – benutzerdefinierte Signaturschlüssel.However, the Microsoft identity platform has one token signing extension to the standards - custom signing keys.

Wenn Ihre App durch die Verwendung der Funktion Anspruchszuordnung über benutzerdefinierte Signaturschlüssel verfügt, müssen Sie einen appid-Abfrageparameter mit der App-ID anfügen, um einen jwks_uri abzurufen, der auf die Signaturschlüsselinformationen Ihrer App verweist, die für die Überprüfung verwendet werden sollen.If your app has custom signing keys as a result of using the claims-mapping feature, you must append an appid query parameter containing the app ID to get a jwks_uri pointing to your app's signing key information, which should be used for validation. Beispiel: https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e enthält einen jwks_uri von https://login.microsoftonline.com/{tenant}/discovery/keys?appid=6731de76-14a6-49ae-97bc-6eba6914391e.For example: https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e contains a jwks_uri of https://login.microsoftonline.com/{tenant}/discovery/keys?appid=6731de76-14a6-49ae-97bc-6eba6914391e.

Anspruchsbasierte AutorisierungClaims based authorization

Diesen Schritt bestimmt die Geschäftslogik Ihrer Anwendung. Im Folgenden finden Sie einige allgemeine Autorisierungsmethoden.Your application's business logic will dictate this step, some common authorization methods are laid out below.

  • Überprüfen Sie den scp- oder roles-Anspruch, um sicherzustellen, dass alle vorhandenen Bereiche mit den von Ihrer API verfügbar gemachten Bereichen übereinstimmen und der Client die angeforderte Aktion durchführen kann.Check the scp or roles claim to verify that all present scopes match those exposed by your API, and allow the client to do the requested action.
  • Stellen Sie mithilfe des appid-Anspruchs sicher, dass der aufrufende Client Ihre API aufrufen darf.Ensure the calling client is allowed to call your API using the appid claim.
  • Überprüfen Sie den Authentifizierungsstatus des aufrufenden Clients mit appidacr. Er sollte nicht 0 sein, wenn öffentlichen Clients das Aufrufen Ihrer API nicht erlaubt ist.Validate the authentication status of the calling client using appidacr - it shouldn't be 0 if public clients aren't allowed to call your API.
  • Stellen Sie anhand einer Liste früherer nonce-Ansprüche sicher, dass das Token nicht wiedergegeben wird.Check against a list of past nonce claims to verify the token isn't being replayed.
  • Stellen Sie sicher, dass der tid-Anspruch einem Mandanten entspricht, dem das Aufrufen Ihrer API erlaubt ist.Check that the tid matches a tenant that is allowed to call your API.
  • Verwenden Sie den acr-Anspruch, um zu überprüfen, ob der Benutzer die MFA ausgeführt hat.Use the acr claim to verify the user has performed MFA. Dies sollte durch bedingten Zugriff erzwungen werden.This should be enforced using Conditional Access.
  • Wenn Sie die roles- oder groups-Ansprüche im Zugriffstoken angefordert haben, stellen Sie sicher, dass der Benutzer der Gruppe angehört, der das Ausführen dieser Aktion erlaubt ist.If you've requested the roles or groups claims in the access token, verify that the user is in the group allowed to do this action.
    • Bei Token, die mit dem impliziten Flow abgerufen werden, müssen Sie wahrscheinlich den Microsoft Graph nach diesen Daten abfragen, weil sie oft zu groß für das Token sind.For tokens retrieved using the implicit flow, you'll likely need to query the Microsoft Graph for this data, as it's often too large to fit in the token.

Benutzer- und AnwendungstokenUser and application tokens

Ihre Anwendung kann Token für einen Benutzer (der in der Regel behandelte Flow) oder direkt von einer Anwendung (über den Flow für Clientanmeldeinformationen) empfangen.Your application may receive tokens for user (the flow usually discussed) or directly from an application (through the client credentials flow). Diese nur für die App geltenden Token geben an, dass der Aufruf von einer Anwendung stammt und nicht von einem Benutzer unterstützt wird.These app-only tokens indicate that this call is coming from an application and does not have a user backing it. Diese Token werden weitgehend gleich behandelt:These tokens are handled largely the same:

  • Verwenden Sie roles, um die Berechtigungen anzuzeigen, die dem Antragsteller des Tokens erteilt wurden.Use roles to see permissions that have been granted to the subject of the token.
  • Verwenden Sie oid oder sub, um zu überprüfen, ob der aufrufende Dienstprinzipal der erwartete Dienstprinzipal ist.Use oid or sub to validate that the calling service principal is the expected one.

Wenn Ihre App zwischen reinen App-Zugriffstoken und Zugriffstoken für Benutzer unterscheiden muss, verwenden Sie den optionalen idtyp-Anspruch.If your app needs to distinguish between app-only access tokens and access tokens for users, use the idtyp optional claim. Durch Hinzufügen des idtyp-Anspruchs zum Feld accessToken und Überprüfen auf den Wert app können Sie reine App-Zugriffstoken erkennen.By adding the idtyp claim to the accessToken field, and checking for the value app, you can detect app-only access tokens. ID-Token und Zugriffstoken für Benutzer enthalten den idtyp-Anspruch nicht.ID tokens and access tokens for users will not have the idtyp claim included.

Widerrufen von TokenToken revocation

Aktualisierungstoken können jederzeit aus vielen verschiedenen Gründen ungültig werden.Refresh tokens can be invalidated or revoked at any time, for different reasons. Hierbei gibt es zwei Hauptkategorien: Zeitüberschreitungen und Widerrufe.These fall into two main categories: timeouts and revocations.

TokenzeitüberschreitungenToken timeouts

Mit der Konfiguration der Tokenlebensdauer kann die Lebensdauer von Aktualisierungstoken geändert werden.Using token lifetime configuration, the lifetime of refresh tokens can be altered. Es ist bei einigen Token normal und erwartungsgemäß, dass sie nicht verwendet werden (wenn z. B. der Benutzer die App drei Monate lang nicht öffnet) und daher ablaufen.It is normal and expected for some tokens to go without use (e.g. the user does not open the app for 3 months) and therefore expire. Für Apps können Szenarien eintreten, in denen der Anmeldeserver ein Aktualisierungstoken aufgrund seines Alters ablehnt.Apps will encounter scenarios where the login server rejects a refresh token due to its age.

  • MaxInactiveTime: Wenn das Aktualisierungstoken innerhalb des von MaxInactiveTime vorgegebenen Zeitraums nicht verwendet wurde, ist es nicht mehr gültig.MaxInactiveTime: If the refresh token hasn't been used within the time dictated by the MaxInactiveTime, the Refresh Token will no longer be valid.
  • MaxSessionAge: Wenn „MaxAgeSessionMultiFactor“ oder „MaxAgeSessionSingleFactor“ auf einen anderen Wert als die Standardeinstellung (Until-revoked) festgelegt wurden, ist eine erneute Authentifizierung erforderlich, nachdem der in „MaxAgeSession*“ festgelegte Zeitraum abgelaufen ist.MaxSessionAge: If MaxAgeSessionMultiFactor or MaxAgeSessionSingleFactor have been set to something other than their default (Until-revoked), then reauthentication will be required after the time set in the MaxAgeSession* elapses.
  • Beispiele:Examples:
    • Der MaxInactiveTime-Wert des Mandanten beträgt fünf Tage, und der Benutzer war eine Woche lang im Urlaub. Aus diesem Grund hat Azure AD sieben Tage lang keine neue Tokenanforderung vom Benutzer erhalten.The tenant has a MaxInactiveTime of five days, and the user went on vacation for a week, and so Azure AD hasn't seen a new token request from the user in 7 days. Bei der nächsten Anforderung eines neuen Tokens durch den Benutzer wurde das Aktualisierungstoken widerrufen, sodass der Benutzer seine Anmeldeinformationen erneut eingeben muss.The next time the user requests a new token, they'll find their Refresh Token has been revoked, and they must enter their credentials again.
    • Eine sensible Anwendung verfügt über einen MaxAgeSessionSingleFactor-Wert von einem Tag.A sensitive application has a MaxAgeSessionSingleFactor of one day. Wenn sich ein Benutzer am Montag anmeldet, muss er sich am Dienstag (nach Ablauf von 25 Stunden) erneut authentifizieren.If a user logs in on Monday, and on Tuesday (after 25 hours have elapsed), they'll be required to reauthenticate.

WiderrufRevocation

Aktualisierungstoken können vom Server aufgrund einer Änderung der Anmeldeinformationen oder aufgrund der Verwendung oder einer Administratoraktion widerrufen werden.Refresh tokens can be revoked by the server due to a change in credentials, or due to use or admin action. Aktualisierungstoken werden in zwei Klassen unterteilt: solche, die für vertrauliche Clients ausgestellt werden (die Spalte ganz rechts), und Aktualisierungstoken, die für öffentliche Clients (alle anderen Spalten) ausgestellt werden.Refresh tokens fall into two classes - those issued to confidential clients (the rightmost column) and those issued to public clients (all other columns).

ChangeChange Kennwortbasiertes CookiePassword-based cookie Kennwortbasiertes TokenPassword-based token Nicht kennwortbasiertes CookieNon-password-based cookie Nicht kennwortbasiertes TokenNon-password-based token Vertrauliches ClienttokenConfidential client token
Kennwort läuft abPassword expires Bleibt aktivStays alive Bleibt aktivStays alive Bleibt aktivStays alive Bleibt aktivStays alive Bleibt aktivStays alive
Kennwort wird vom Benutzer geändertPassword changed by user WiderrufenRevoked WiderrufenRevoked Bleibt aktivStays alive Bleibt aktivStays alive Bleibt aktivStays alive
Benutzer verwendet SSPRUser does SSPR WiderrufenRevoked WiderrufenRevoked Bleibt aktivStays alive Bleibt aktivStays alive Bleibt aktivStays alive
Administrator setzt Kennwort zurückAdmin resets password WiderrufenRevoked WiderrufenRevoked Bleibt aktivStays alive Bleibt aktivStays alive Bleibt aktivStays alive
Benutzer widerruft Aktualisierungstoken über PowerShellUser revokes their refresh tokens via PowerShell WiderrufenRevoked WiderrufenRevoked WiderrufenRevoked WiderrufenRevoked WiderrufenRevoked
Administrator widerruft alle Aktualisierungstoken für einen Benutzer über PowerShellAdmin revokes all refresh tokens for a user via PowerShell WiderrufenRevoked WiderrufenRevoked WiderrufenRevoked WiderrufenRevoked WiderrufenRevoked
Einmaliges Abmelden (v1.0, v2.0) im WebSingle sign-out (v1.0, v2.0 ) on web WiderrufenRevoked Bleibt aktivStays alive WiderrufenRevoked Bleibt aktivStays alive Bleibt aktivStays alive

Nicht kennwortbasiertNon-password-based

Bei einer Nicht kennwortbasierten Anmeldung hat der Benutzer kein Kennwort eingegeben, um sich anzumelden.A non-password-based login is one where the user didn't type in a password to get it. Beispiele für die nicht kennwortbasierte Anmeldung:Examples of non-password-based login include:

  • Gesichtserkennung mit Windows HelloUsing your face with Windows Hello
  • FIDO2-SchlüsselFIDO2 key
  • SMSSMS
  • SpracheVoice
  • PINPIN

Hinweis

Primäre Aktualisierungstoken (PRT) unter Windows 10 werden auf Grundlage der Anmeldeinformationen getrennt.Primary Refresh Tokens (PRT) on Windows 10 are segregated based on the credential. Beispielsweise besitzen Windows Hello und Kennwort ihre jeweiligen PRTs, die voneinander isoliert sind.For example, Windows Hello and password have their respective PRTs, isolated from one another. Wenn sich ein Benutzer mit Hello-Anmeldeinformationen (PIN oder Biometrie) anmeldet und dann das Kennwort ändert, wird das zuvor abgerufene kennwortbasierte PRT widerrufen.When a user signs-in with a Hello credential (PIN or biometrics) and then changes the password, the password based PRT obtained previously will be revoked. Bei erneuter Anmeldung mit einem Kennwort wird das alte PRT ungültig und ein neues angefordert.Signing back in with a password invalidates the old PRT and requests a new one.

Beim Abrufen eines neuen Zugriffstoken und Aktualisierungstoken verwendete Aktualisierungstoken sind ungültig oder wurden aufgehoben.Refresh tokens aren't invalidated or revoked when used to fetch a new access token and refresh token. Ihre App sollte jedoch das alte verwerfen, sobald es verwendet wird, und durch das neue ersetzen, da für das neue Token eine neue Ablaufzeit gilt.However, your app should discard the old one as soon as it's used and replace it with the new one, as the new token has a new expiration time in it.

Nächste SchritteNext steps