Azure Active Directory-webtoepassingen toegang verlenen met de stroom voor het verlenen van de OAuth 2.0-codeAuthorize access to Azure Active Directory web applications using the OAuth 2.0 code grant flow

Notitie

Als u de server niet vertelt welke resource u wilt aanroepen, wordt het beleid voor voorwaardelijke toegang voor die bron niet geactiveerd door de server.If you don't tell the server what resource you plan to call, then the server will not trigger the conditional access policies for that resource. Als u een MFA-trigger wilt gebruiken, moet u een resource in uw URL toevoegen.So in order to have MFA trigger, you will need to include a resource in your URL.

Azure Active Directory (Azure AD) gebruikt OAuth 2,0 om toegang te verlenen tot webtoepassingen en Web-Api's in uw Azure AD-Tenant.Azure Active Directory (Azure AD) uses OAuth 2.0 to enable you to authorize access to web applications and web APIs in your Azure AD tenant. Deze hand leiding is taal onafhankelijk en beschrijft hoe u HTTP-berichten verzendt en ontvangt zonder gebruik te maken van de open source-bibliotheken.This guide is language independent, and describes how to send and receive HTTP messages without using any of our open-source libraries.

De OAuth 2,0-autorisatie code stroom wordt beschreven in sectie 4,1 van de oauth 2,0-specificatie.The OAuth 2.0 authorization code flow is described in section 4.1 of the OAuth 2.0 specification. Dit wordt gebruikt om verificatie en autorisatie uit te voeren in de meeste toepassings typen, waaronder web-apps en systeem eigen geïnstalleerde apps.It is used to perform authentication and authorization in most application types, including web apps and natively installed apps.

Uw toepassing registreren bij uw AD-tenantRegister your application with your AD tenant

Eerst moet u uw toepassing registreren bij uw tenant Azure Active Directory (Azure AD).First, you need to register your application with your Azure Active Directory (Azure AD) tenant. Na registratie beschikt u over een toepassings-id voor uw toepassing en kan uw toepassing tokens ontvangen.This will give you an Application ID for your application, as well as enable it to receive tokens.

  • Meld u aan bij Azure Portal.Sign in to the Azure portal.
  • Kies uw Azure AD-tenant door te klikken op uw account in de rechterbovenhoek van de pagina, gevolgd door te klikken op de schakelen tussen mappen navigatie en selecteer vervolgens de juiste tenant.Choose your Azure AD tenant by clicking on your account in the top right corner of the page, followed by clicking on the Switch Directory navigation and then select the appropriate tenant.
    • Sla deze stap over als u maar één Azure tenant in uw account hebt, of als u al de juiste Azure Active Directory tenant hebt gekozen.Skip this step, if you've only one Azure AD tenant under your account or if you've already selected the appropriate Azure AD tenant.
  • Klik in het linkernavigatievenster op Azure Active Directory.In the left hand navigation pane, click on Azure Active Directory.
  • Klik op App-registraties en klikt u op registratie van nieuwe.Click on App Registrations and click on New registration.
  • Volg de aanwijzingen op het scherm en maak een nieuwe toepassing.Follow the prompts and create a new application. Het wordt niet als het een webtoepassing of een openbare client (mobiele en desktop)-toepassing voor deze zelfstudie is van belang, maar als u specifieke voorbeelden voor webtoepassingen of openbare clienttoepassingen, Bekijk onze snelstartgidsen.It doesn't matter if it is a web application or a public client (mobile & desktop) application for this tutorial, but if you'd like specific examples for web applications or public client applications, check out our quickstarts.
    • Naam is de naam van de toepassing en beschrijft de toepassing voor eindgebruikers.Name is the application name and describes your application to end users.
    • Selecteer onder Ondersteunde accounttypen de optie Accounts in een organisatieadreslijst en persoonlijke Microsoft-account.Under Supported account types, select Accounts in any organizational directory and personal Microsoft accounts.
    • Geef de omleidings-URI.Provide the Redirect URI. Voor webtoepassingen is dit de basis-URL van uw app waar gebruikers zich kunnen aanmelden.For Web Applications, this is the base URL of your app where users can sign in. Bijvoorbeeld http://localhost:12345.For example, http://localhost:12345. Voor openbare-client (mobiele en desktop), Azure AD gebruikt om tokenantwoorden te retourneren.For public client (mobile & desktop), Azure AD uses it to return token responses. Voer een specifieke waarde voor uw toepassing.Enter a value specific to your application. Bijvoorbeeld http://MyFirstAADApp.For example, http://MyFirstAADApp.
  • Als u de registratie hebt voltooid, toewijzen Azure AD uw toepassing een unieke client-id (de toepassings-ID).Once you've completed registration, Azure AD will assign your application a unique client identifier (the Application ID). U moet deze waarde in de volgende secties, dus te kopiëren uit de toepassingspagina.You need this value in the next sections, so copy it from the application page.
  • Uw toepassing in Azure portal, klik op App-registraties, en klik vervolgens op alle toepassingen weergeven.To find your application in the Azure portal, click App registrations, and then click View all applications.

OAuth 2,0-autorisatie stroomOAuth 2.0 authorization flow

Op hoog niveau ziet de volledige autorisatie stroom voor een toepassing er ongeveer als volgt uit:At a high level, the entire authorization flow for an application looks a bit like this:

OAuth-verificatie code stroom

Een autorisatie code aanvragenRequest an authorization code

De autorisatie code stroom begint met de client die de gebruiker omleidt naar /authorize het eind punt.The authorization code flow begins with the client directing the user to the /authorize endpoint. In deze aanvraag geeft de client aan welke machtigingen moeten worden verkregen van de gebruiker.In this request, the client indicates the permissions it needs to acquire from the user. U kunt het OAuth 2,0-autorisatie-eind punt voor uw Tenant verkrijgen door App-registraties > eind punten te selecteren in de Azure Portal.You can get the OAuth 2.0 authorization endpoint for your tenant by selecting App registrations > Endpoints in the Azure portal.

// Line breaks for legibility only

https://login.microsoftonline.com/{tenant}/oauth2/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%3A12345
&response_mode=query
&resource=https%3A%2F%2Fservice.contoso.com%2F
&state=12345
ParameterParameter DescriptionDescription
tenanttenant vereistrequired De {tenant} waarde in het pad van de aanvraag kan worden gebruikt om te bepalen wie zich kan aanmelden bij de toepassing.The {tenant} value in the path of the request can be used to control who can sign into the application. De toegestane waarden zijn Tenant-id's, bijvoorbeeld 8eaef023-2b34-4da1-9baa-8bc8c9d6a490 common of contoso.onmicrosoft.com voor Tenant-onafhankelijke tokensThe allowed values are tenant identifiers, for example, 8eaef023-2b34-4da1-9baa-8bc8c9d6a490 or contoso.onmicrosoft.com or common for tenant-independent tokens
client_idclient_id vereistrequired De toepassings-ID die is toegewezen aan uw app wanneer u deze hebt geregistreerd bij Azure AD.The Application ID assigned to your app when you registered it with Azure AD. U kunt dit vinden in de Azure-Portal.You can find this in the Azure Portal. Klik op Azure Active Directory in de zijbalk Services, klik op app-registratiesen kies de toepassing.Click Azure Active Directory in the services sidebar, click App registrations, and choose the application.
response_typeresponse_type vereistrequired Moet de code autorisatie code stroom bevatten.Must include code for the authorization code flow.
redirect_uriredirect_uri aanbevelingenrecommended De redirect_uri van uw app, waar verificatie reacties kunnen worden verzonden en ontvangen door uw app.The redirect_uri of your app, where authentication responses can be sent and received by your app. Het moet exact overeenkomen met een van de redirect_uris die u in de portal hebt geregistreerd, behalve het moet een URL-code ring zijn.It must exactly match one of the redirect_uris you registered in the portal, except it must be url encoded. Voor systeem eigen & mobiele apps moet u de standaard waarde van urn:ietf:wg:oauth:2.0:oobgebruiken.For native & mobile apps, you should use the default value of urn:ietf:wg:oauth:2.0:oob.
response_moderesponse_mode optioneeloptional Hiermee geeft u de methode op die moet worden gebruikt om het resulterende token terug naar uw app te verzenden.Specifies the method that should be used to send the resulting token back to your app. queryKan, fragmentof. form_postCan be query, fragment, or form_post. querylevert de code als een query reeks parameter op de omleidings-URI.query provides the code as a query string parameter on your redirect URI. Als u een id-token met behulp van de impliciete stroom aanvraagt, kunt u niet gebruiken query zoals opgegeven in de OpenID Connect- specificatie. Als u alleen de code wilt aanvragen, kunt u, query fragmentof form_postgebruiken.If you're requesting an ID token using the implicit flow, you cannot use query as specified in the OpenID spec. If you're requesting just the code, you can use query, fragment, or form_post. form_postHiermee wordt een bericht met de code uitgevoerd naar de omleidings-URI.form_post executes a POST containing the code to your redirect URI. De standaard waarde query is voor een code stroom.The default is query for a code flow.
toestandstate aanbevelingenrecommended Een waarde die in de aanvraag is opgenomen en die ook wordt geretourneerd in de token reactie.A value included in the request that is also returned in the token response. Een wille keurig gegenereerde unieke waarde wordt doorgaans gebruikt om vervalsing van aanvragen op meerdere siteste voor komen.A randomly generated unique value is typically used for preventing cross-site request forgery attacks. De status wordt ook gebruikt voor het coderen van informatie over de status van de gebruiker in de app voordat de verificatie aanvraag is uitgevoerd, zoals de pagina of weer gave waarin ze zich bevonden.The state is also used to encode information about the user's state in the app before the authentication request occurred, such as the page or view they were on.
resourceresource aanbevelingenrecommended De App-ID-URI van de doel-Web-API (beveiligde bron).The App ID URI of the target web API (secured resource). Als u de URI van de App-ID wilt zoeken, klikt u in azure Portal op Azure Active Directory, klikt u op toepassings registraties, opent u de pagina instellingen van de toepassing en klikt u vervolgens op Eigenschappen.To find the App ID URI, in the Azure Portal, click Azure Active Directory, click Application registrations, open the application's Settings page, then click Properties. Het kan ook een externe bron zijn, https://graph.microsoft.comzoals.It may also be an external resource like https://graph.microsoft.com. Dit is vereist in een van de autorisatie-of Token aanvragen.This is required in one of either the authorization or token requests. Om ervoor te zorgen dat er minder verificatie prompts worden uitgevoerd in de autorisatie aanvraag, om ervoor te zorgen dat de gebruiker om toestemming wordt gevraagd.To ensure fewer authentication prompts place it in the authorization request to ensure consent is received from the user.
bereikscope genegeerdignored Voor v1 Azure AD-apps moeten scopes statisch worden geconfigureerd in azure portal onder de instellingenvoor toepassingen, vereiste machtigingen.For v1 Azure AD apps, scopes must be statically configured in the Azure Portal under the applications Settings, Required Permissions.
verschijntprompt optioneeloptional Geef het type gebruikers interactie op dat is vereist.Indicate the type of user interaction that is required.

Geldige waarden zijn:Valid values are:

aanmelding: De gebruiker moet worden gevraagd om opnieuw te worden geverifieerd.login: The user should be prompted to reauthenticate.

select_account: De gebruiker wordt gevraagd een account te selecteren en de eenmalige aanmelding te onderbreken.select_account: The user is prompted to select an account, interrupting single sign on. De gebruiker kan een bestaand aangemeld account selecteren, hun referenties voor een onthouden account invoeren of ervoor kiezen om een ander account samen te gebruiken.The user may select an existing signed-in account, enter their credentials for a remembered account, or choose to use a different account altogether.

toestemming: Toestemming van de gebruiker is verleend, maar moet worden bijgewerkt.consent: User consent has been granted, but needs to be updated. De gebruiker moet om toestemming wordt gevraagd.The user should be prompted to consent.

admin_consent: Een beheerder moet worden gevraagd om toestemming namens alle gebruikers in hun organisatieadmin_consent: An administrator should be prompted to consent on behalf of all users in their organization

login_hintlogin_hint optioneeloptional Kan worden gebruikt om het veld gebruikers naam/e-mail adres vooraf in te vullen op de aanmeldings pagina voor de gebruiker, als u de gebruikers naam van tevoren kent.Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know their username ahead of time. Vaak gebruiken apps deze para meter tijdens de herauthenticatie, waarbij de gebruikers naam al is geëxtraheerd van een eerdere aanmelding preferred_username met de claim.Often apps use this parameter during reauthentication, having already extracted the username from a previous sign-in using the preferred_username claim.
domain_hintdomain_hint optioneeloptional Biedt een hint over de Tenant of het domein waarmee de gebruiker zich aanmeldt.Provides a hint about the tenant or domain that the user should use to sign in. De waarde van domain_hint is een geregistreerd domein voor de Tenant.The value of the domain_hint is a registered domain for the tenant. Als de Tenant federatief is voor een on-premises Directory, wordt door AAD omgeleid naar de opgegeven Tenant-Federatie server.If the tenant is federated to an on-premises directory, AAD redirects to the specified tenant federation server.
code_challenge_methodcode_challenge_method aanbevelingenrecommended De methode die wordt gebruikt voor code_verifier het coderen code_challenge van de voor de para meter.The method used to encode the code_verifier for the code_challenge parameter. Dit kan een van plain of S256zijn.Can be one of plain or S256. Als deze code_challenge is code_challenge uitgesloten, wordt ervan uitgegaan dat de tekst zonder opmaak wordt gebruikt.If excluded, code_challenge is assumed to be plaintext if code_challenge is included. Azure Aad v 1.0 ondersteunt zowel plain als S256.Azure AAD v1.0 supports both plain and S256. Zie PKCE RFC(Engelstalig) voor meer informatie.For more information, see the PKCE RFC.
code_challengecode_challenge aanbevelingenrecommended Wordt gebruikt voor het beveiligen van autorisatie code subsidies via de bewijs code voor code Exchange (PKCE) van een systeem eigen of open bare client.Used to secure authorization code grants via Proof Key for Code Exchange (PKCE) from a native or public client. Vereist als code_challenge_method is opgenomen.Required if code_challenge_method is included. Zie PKCE RFC(Engelstalig) voor meer informatie.For more information, see the PKCE RFC.

Notitie

Als de gebruiker deel uitmaakt van een organisatie, kan een beheerder van de organisatie toestemming geven of weigeren namens de gebruiker of de gebruiker toestemming geven.If the user is part of an organization, an administrator of the organization can consent or decline on the user's behalf, or permit the user to consent. De gebruiker krijgt de mogelijkheid om alleen toestemming te geven als de beheerder dit toestaat.The user is given the option to consent only when the administrator permits it.

Op dit moment wordt de gebruiker gevraagd om hun referenties in te voeren en toestemming te geven voor de machtigingen die worden aangevraagd door de app in azure Portal.At this point, the user is asked to enter their credentials and consent to the permissions requested by the app in the Azure Portal. Zodra de gebruiker zich heeft geverifieerd en toestemming verleent, stuurt Azure AD een antwoord naar uw app op redirect_uri het adres in uw aanvraag met de code.Once the user authenticates and grants consent, Azure AD sends a response to your app at the redirect_uri address in your request with the code.

Geslaagde reactieSuccessful response

Een geslaagde reactie kan er als volgt uitzien:A successful response could look like this:

GET  HTTP/1.1 302 Found
Location: http://localhost:12345/?code= AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrqqf_ZT_p5uEAEJJ_nZ3UmphWygRNy2C3jJ239gV_DBnZ2syeg95Ki-374WHUP-i3yIhv5i-7KU2CEoPXwURQp6IVYMw-DjAOzn7C3JCu5wpngXmbZKtJdWmiBzHpcO2aICJPu1KvJrDLDP20chJBXzVYJtkfjviLNNW7l7Y3ydcHDsBRKZc3GuMQanmcghXPyoDg41g8XbwPudVh7uCmUponBQpIhbuffFP_tbV8SNzsPoFz9CLpBCZagJVXeqWoYMPe2dSsPiLO9Alf_YIe5zpi-zY4C3aLw5g9at35eZTfNd0gBRpR5ojkMIcZZ6IgAA&session_state=7B29111D-C220-4263-99AB-6F6E135D75EF&state=D79E5777-702E-4260-9A62-37F75FF22CCE
ParameterParameter DescriptionDescription
admin_consentadmin_consent De waarde is True als een beheerder een prompt voor een aanvraag voor toestemming heeft verzonden.The value is True if an administrator consented to a consent request prompt.
codecode De autorisatie code die door de toepassing is aangevraagd.The authorization code that the application requested. De toepassing kan de autorisatie code gebruiken om een toegangs token aan te vragen voor de doel bron.The application can use the authorization code to request an access token for the target resource.
session_statesession_state Een unieke waarde die de huidige gebruikers sessie identificeert.A unique value that identifies the current user session. Deze waarde is een GUID, maar moet worden behandeld als een ondoorzichtige waarde die zonder onderzoek wordt door gegeven.This value is a GUID, but should be treated as an opaque value that is passed without examination.
toestandstate Als een para meter State is opgenomen in de aanvraag, moet dezelfde waarde in het antwoord worden weer gegeven.If a state parameter is included in the request, the same value should appear in the response. Het is een goede gewoonte voor de toepassing om te controleren of de status waarden in de aanvraag en het antwoord identiek zijn voordat u het antwoord gebruikt.It's a good practice for the application to verify that the state values in the request and response are identical before using the response. Dit helpt bij het detecteren van CSRF-aanvallen (cross-site request vervalsing) op de client.This helps to detect Cross-Site Request Forgery (CSRF) attacks against the client.

Fout berichtError response

Fout reacties kunnen ook worden verzonden naar de redirect_uri zodat de toepassing deze op de juiste wijze kan afhandelen.Error responses may also be sent to the redirect_uri so that the application can handle them appropriately.

GET http://localhost:12345/?
error=access_denied
&error_description=the+user+canceled+the+authentication
ParameterParameter DescriptionDescription
fouterror Een fout code waarde die is gedefinieerd in sectie 5,2 van het OAuth 2,0-autorisatie raamwerk.An error code value defined in Section 5.2 of the OAuth 2.0 Authorization Framework. In de volgende tabel worden de fout codes beschreven die door Azure AD worden geretourneerd.The next table describes the error codes that Azure AD returns.
error_descriptionerror_description Een gedetailleerde beschrijving van de fout.A more detailed description of the error. Dit bericht is niet bedoeld voor eind gebruikers vriendelijk.This message is not intended to be end-user friendly.
toestandstate De status waarde is een wille keurig gegenereerde niet-hergebruikte waarde die in de aanvraag wordt verzonden en geretourneerd in het antwoord om CSRF-aanvallen (cross-site request vervalsing) te voor komen.The state value is a randomly generated non-reused value that is sent in the request and returned in the response to prevent cross-site request forgery (CSRF) attacks.

Fout codes voor verificatie eindpunt foutenError codes for authorization endpoint errors

In de volgende tabel worden de verschillende fout codes beschreven die kunnen worden geretourneerd error in de para meter van het fout bericht.The following table describes the various error codes that can be returned in the error parameter of the error response.

FoutcodeError Code DescriptionDescription Client actieClient Action
invalid_requestinvalid_request Protocol fout, zoals een ontbrekende vereiste para meter.Protocol error, such as a missing required parameter. Corrigeer en verzend de aanvraag opnieuw.Fix and resubmit the request. Dit is een ontwikkelings fout en wordt doorgaans onderschept tijdens de eerste test.This is a development error, and is typically caught during initial testing.
unauthorized_clientunauthorized_client De client toepassing mag geen autorisatie code aanvragen.The client application is not permitted to request an authorization code. Dit gebeurt meestal wanneer de client toepassing niet is geregistreerd bij Azure AD of niet is toegevoegd aan de Azure AD-Tenant van de gebruiker.This usually occurs when the client application is not registered in Azure AD or is not added to the user's Azure AD tenant. De toepassing kan de gebruiker vragen met instructies voor het installeren van de toepassing en het toevoegen aan Azure AD.The application can prompt the user with instruction for installing the application and adding it to Azure AD.
access_deniedaccess_denied De resource-eigenaar heeft toestemming geweigerdResource owner denied consent De client toepassing kan de gebruiker hiervan op de hoogte stellen dat deze niet kan door gaan tenzij de gebruiker deze heeft toegestuurd.The client application can notify the user that it cannot proceed unless the user consents.
unsupported_response_typeunsupported_response_type De autorisatie server biedt geen ondersteuning voor het antwoord type in de aanvraag.The authorization server does not support the response type in the request. Corrigeer en verzend de aanvraag opnieuw.Fix and resubmit the request. Dit is een ontwikkelings fout en wordt doorgaans onderschept tijdens de eerste test.This is a development error, and is typically caught during initial testing.
server_errorserver_error Er is een onverwachte fout opgetreden op de server.The server encountered an unexpected error. Voer de aanvraag opnieuw uit.Retry the request. Deze fouten kunnen worden veroorzaakt door tijdelijke voor waarden.These errors can result from temporary conditions. De client toepassing kan bijvoorbeeld verklaren dat het antwoord van de gebruiker is vertraagd vanwege een tijdelijke fout.The client application might explain to the user that its response is delayed due to a temporary error.
temporarily_unavailabletemporarily_unavailable De server is tijdelijk niet actief om de aanvraag af te handelen.The server is temporarily too busy to handle the request. Voer de aanvraag opnieuw uit.Retry the request. De client toepassing kan bijvoorbeeld verklaren dat het antwoord van de gebruiker is vertraagd vanwege een tijdelijke voor waarde.The client application might explain to the user that its response is delayed due to a temporary condition.
invalid_resourceinvalid_resource De doel resource is ongeldig omdat deze niet bestaat, Azure AD niet kan worden gevonden of niet juist is geconfigureerd.The target resource is invalid because it does not exist, Azure AD cannot find it, or it is not correctly configured. Dit geeft aan dat de resource, indien aanwezig, niet is geconfigureerd in de Tenant.This indicates the resource, if it exists, has not been configured in the tenant. De toepassing kan de gebruiker vragen met instructies voor het installeren van de toepassing en het toevoegen aan Azure AD.The application can prompt the user with instruction for installing the application and adding it to Azure AD.

De autorisatie code gebruiken om een toegangs token aan te vragenUse the authorization code to request an access token

Nu u een autorisatie code hebt aangeschaft en toestemming hebt gegeven door de gebruiker, kunt u de code voor een toegangs token inwisselen voor de gewenste resource door een post-aanvraag te verzenden naar het /token eind punt:Now that you've acquired an authorization code and have been granted permission by the user, you can redeem the code for an access token to the desired resource, by sending a POST request to the /token endpoint:

// Line breaks for legibility only

POST /{tenant}/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&client_id=2d4d11a2-f814-46a7-890a-274a72a7309e
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrqqf_ZT_p5uEAEJJ_nZ3UmphWygRNy2C3jJ239gV_DBnZ2syeg95Ki-374WHUP-i3yIhv5i-7KU2CEoPXwURQp6IVYMw-DjAOzn7C3JCu5wpngXmbZKtJdWmiBzHpcO2aICJPu1KvJrDLDP20chJBXzVYJtkfjviLNNW7l7Y3ydcHDsBRKZc3GuMQanmcghXPyoDg41g8XbwPudVh7uCmUponBQpIhbuffFP_tbV8SNzsPoFz9CLpBCZagJVXeqWoYMPe2dSsPiLO9Alf_YIe5zpi-zY4C3aLw5g9at35eZTfNd0gBRpR5ojkMIcZZ6IgAA
&redirect_uri=https%3A%2F%2Flocalhost%3A12345
&resource=https%3A%2F%2Fservice.contoso.com%2F
&client_secret=p@ssw0rd

//NOTE: client_secret only required for web apps
ParameterParameter DescriptionDescription
tenanttenant vereistrequired De {tenant} waarde in het pad van de aanvraag kan worden gebruikt om te bepalen wie zich kan aanmelden bij de toepassing.The {tenant} value in the path of the request can be used to control who can sign into the application. De toegestane waarden zijn Tenant-id's, bijvoorbeeld 8eaef023-2b34-4da1-9baa-8bc8c9d6a490 common of contoso.onmicrosoft.com voor Tenant-onafhankelijke tokensThe allowed values are tenant identifiers, for example, 8eaef023-2b34-4da1-9baa-8bc8c9d6a490 or contoso.onmicrosoft.com or common for tenant-independent tokens
client_idclient_id vereistrequired De toepassings-id die is toegewezen aan uw app wanneer u deze hebt geregistreerd bij Azure AD.The Application Id assigned to your app when you registered it with Azure AD. U kunt dit vinden in de Azure Portal.You can find this in the Azure portal. De toepassings-id wordt weer gegeven in de instellingen van de app-registratie.The Application Id is displayed in the settings of the app registration.
grant_typegrant_type vereistrequired Moet voor authorization_code de autorisatie code stroom zijn.Must be authorization_code for the authorization code flow.
codecode vereistrequired De authorization_code die u hebt verkregen in de vorige sectieThe authorization_code that you acquired in the previous section
redirect_uriredirect_uri vereistrequired Een redirect_urigeregistreerd op de client toepassing.A redirect_uriregistered on the client application.
client_secretclient_secret vereist voor web-apps, niet toegestaan voor open bare clientsrequired for web apps, not allowed for public clients Het toepassings geheim dat u hebt gemaakt in azure portal voor uw app onder sleutels.The application secret that you created in the Azure Portal for your app under Keys. Het kan niet worden gebruikt in een systeem eigen app (open bare client) omdat client_secrets niet betrouwbaar kan worden opgeslagen op apparaten.It cannot be used in a native app (public client), because client_secrets cannot be reliably stored on devices. Het is vereist voor web-apps en Web-api's (alle vertrouwelijke clients), die de mogelijkheid hebben om client_secret de beveiliging op te slaan aan de server zijde.It is required for web apps and web APIs (all confidential clients), which have the ability to store the client_secret securely on the server side. De client_secret moet een URL-code ring hebben voordat deze wordt verzonden.The client_secret should be URL-encoded before being sent.
resourceresource aanbevelingenrecommended De App-ID-URI van de doel-Web-API (beveiligde bron).The App ID URI of the target web API (secured resource). Als u de URI van de App-ID wilt zoeken, klikt u in azure Portal op Azure Active Directory, klikt u op toepassings registraties, opent u de pagina instellingen van de toepassing en klikt u vervolgens op Eigenschappen.To find the App ID URI, in the Azure Portal, click Azure Active Directory, click Application registrations, open the application's Settings page, then click Properties. Het kan ook een externe bron zijn, https://graph.microsoft.comzoals.It may also be an external resource like https://graph.microsoft.com. Dit is vereist in een van de autorisatie-of Token aanvragen.This is required in one of either the authorization or token requests. Om ervoor te zorgen dat er minder verificatie prompts worden uitgevoerd in de autorisatie aanvraag, om ervoor te zorgen dat de gebruiker om toestemming wordt gevraagd.To ensure fewer authentication prompts place it in the authorization request to ensure consent is received from the user. In zowel de autorisatie aanvraag als de token aanvraag moeten de para meters van de resource overeenkomen.If in both the authorization request and the token request, the resource` parameters must match.
code_verifiercode_verifier optioneeloptional Hetzelfde code_verifier dat is gebruikt om de authorization_code op te halen.The same code_verifier that was used to obtain the authorization_code. Vereist als PKCE is gebruikt in de aanvraag voor autorisatie code toekenning.Required if PKCE was used in the authorization code grant request. Zie voor meer informatie de PKCE RFCFor more information, see the PKCE RFC

Als u de URI van de App-ID wilt zoeken, klikt u in azure Portal op Azure Active Directory, klikt u op toepassings registraties, opent u de pagina instellingen van de toepassing en klikt u vervolgens op Eigenschappen.To find the App ID URI, in the Azure Portal, click Azure Active Directory, click Application registrations, open the application's Settings page, then click Properties.

Geslaagde reactieSuccessful response

Azure AD retourneert een toegangs token bij een geslaagde reactie.Azure AD returns an access token upon a successful response. Om netwerk aanroepen van de client toepassing en de bijbehorende latentie te minimaliseren, moet de client toepassing toegangs tokens in de cache opslaan voor de levens duur van het token dat is opgegeven in het OAuth 2,0-antwoord.To minimize network calls from the client application and their associated latency, the client application should cache access tokens for the token lifetime that is specified in the OAuth 2.0 response. Als u de levens duur van het token wilt expires_in bepalen expires_on , gebruikt u de para meter-of-waarden.To determine the token lifetime, use either the expires_in or expires_on parameter values.

Als een web-API-resource invalid_token een fout code retourneert, kan dit erop wijzen dat de bron heeft vastgesteld dat het token is verlopen.If a web API resource returns an invalid_token error code, this might indicate that the resource has determined that the token is expired. Als de klok tijden van de client en de resource verschillend zijn (ook wel ' tijd scheef trekken ' genoemd), kan de bron overwegen dat het token is verlopen voordat het token uit de client cache wordt gewist.If the client and resource clock times are different (known as a "time skew"), the resource might consider the token to be expired before the token is cleared from the client cache. Als dit het geval is, wist u het token uit de cache, zelfs als dit nog steeds binnen de berekende levens duur ligt.If this occurs, clear the token from the cache, even if it is still within its calculated lifetime.

Een geslaagde reactie kan er als volgt uitzien:A successful response could look like this:

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1THdqcHdBSk9NOW4tQSJ9.eyJhdWQiOiJodHRwczovL3NlcnZpY2UuY29udG9zby5jb20vIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvN2ZlODE0NDctZGE1Ny00Mzg1LWJlY2ItNmRlNTdmMjE0NzdlLyIsImlhdCI6MTM4ODQ0MDg2MywibmJmIjoxMzg4NDQwODYzLCJleHAiOjEzODg0NDQ3NjMsInZlciI6IjEuMCIsInRpZCI6IjdmZTgxNDQ3LWRhNTctNDM4NS1iZWNiLTZkZTU3ZjIxNDc3ZSIsIm9pZCI6IjY4Mzg5YWUyLTYyZmEtNGIxOC05MWZlLTUzZGQxMDlkNzRmNSIsInVwbiI6ImZyYW5rbUBjb250b3NvLmNvbSIsInVuaXF1ZV9uYW1lIjoiZnJhbmttQGNvbnRvc28uY29tIiwic3ViIjoiZGVOcUlqOUlPRTlQV0pXYkhzZnRYdDJFYWJQVmwwQ2o4UUFtZWZSTFY5OCIsImZhbWlseV9uYW1lIjoiTWlsbGVyIiwiZ2l2ZW5fbmFtZSI6IkZyYW5rIiwiYXBwaWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctODkwYS0yNzRhNzJhNzMwOWUiLCJhcHBpZGFjciI6IjAiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJhY3IiOiIxIn0.JZw8jC0gptZxVC-7l5sFkdnJgP3_tRjeQEPgUn28XctVe3QqmheLZw7QVZDPCyGycDWBaqy7FLpSekET_BftDkewRhyHk9FW_KeEz0ch2c3i08NGNDbr6XYGVayNuSesYk5Aw_p3ICRlUV1bqEwk-Jkzs9EEkQg4hbefqJS6yS1HoV_2EsEhpd_wCQpxK89WPs3hLYZETRJtG5kvCCEOvSHXmDE6eTHGTnEgsIk--UlPe275Dvou4gEAwLofhLDQbMSjnlV5VLsjimNBVcSRFShoxmQwBJR_b2011Y5IuD6St5zPnzruBbZYkGNurQK63TJPWmRd3mbJsGM0mf3CUQ",
  "token_type": "Bearer",
  "expires_in": "3600",
  "expires_on": "1388444763",
  "resource": "https://service.contoso.com/",
  "refresh_token": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4rTfgV29ghDOHRc2B-C_hHeJaJICqjZ3mY2b_YNqmf9SoAylD1PycGCB90xzZeEDg6oBzOIPfYsbDWNf621pKo2Q3GGTHYlmNfwoc-OlrxK69hkha2CF12azM_NYhgO668yfcUl4VBbiSHZyd1NVZG5QTIOcbObu3qnLutbpadZGAxqjIbMkQ2bQS09fTrjMBtDE3D6kSMIodpCecoANon9b0LATkpitimVCrl-NyfN3oyG4ZCWu18M9-vEou4Sq-1oMDzExgAf61noxzkNiaTecM-Ve5cq6wHqYQjfV9DOz4lbceuYCAA",
  "scope": "https%3A%2F%2Fgraph.microsoft.com%2Fmail.read",
  "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctODkwYS0yNzRhNzJhNzMwOWUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83ZmU4MTQ0Ny1kYTU3LTQzODUtYmVjYi02ZGU1N2YyMTQ3N2UvIiwiaWF0IjoxMzg4NDQwODYzLCJuYmYiOjEzODg0NDA4NjMsImV4cCI6MTM4ODQ0NDc2MywidmVyIjoiMS4wIiwidGlkIjoiN2ZlODE0NDctZGE1Ny00Mzg1LWJlY2ItNmRlNTdmMjE0NzdlIiwib2lkIjoiNjgzODlhZTItNjJmYS00YjE4LTkxZmUtNTNkZDEwOWQ3NGY1IiwidXBuIjoiZnJhbmttQGNvbnRvc28uY29tIiwidW5pcXVlX25hbWUiOiJmcmFua21AY29udG9zby5jb20iLCJzdWIiOiJKV3ZZZENXUGhobHBTMVpzZjd5WVV4U2hVd3RVbTV5elBtd18talgzZkhZIiwiZmFtaWx5X25hbWUiOiJNaWxsZXIiLCJnaXZlbl9uYW1lIjoiRnJhbmsifQ."
}

ParameterParameter DescriptionDescription
access_tokenaccess_token Het aangevraagde toegangs token.The requested access token. Dit is een ondoorzichtige teken reeks: deze is afhankelijk van wat de resource verwacht te ontvangen en is niet bedoeld voor de client om te kijken.This is an opaque string - it depends on what the resource expects to receive, and is not intended for the client to look at. De app kan dit token gebruiken om te verifiëren bij de beveiligde bron, zoals een web-API.The app can use this token to authenticate to the secured resource, such as a web API.
token_typetoken_type Geeft de waarde van het token type aan.Indicates the token type value. Het enige type dat door Azure AD wordt ondersteund, is Bearer.The only type that Azure AD supports is Bearer. Zie voor meer informatie over Bearer-tokens OAuth 2.0-autorisatie raamwerk: Token gebruik van Bearer (RFC 6750)For more information about Bearer tokens, see OAuth2.0 Authorization Framework: Bearer Token Usage (RFC 6750)
expires_inexpires_in Hoe lang het toegangs token geldig is (in seconden).How long the access token is valid (in seconds).
expires_onexpires_on Het tijdstip waarop het toegangs token verloopt.The time when the access token expires. De datum wordt weer gegeven als het aantal seconden van 1970-01-01T0:0: 0Z UTC tot de verloop tijd.The date is represented as the number of seconds from 1970-01-01T0:0:0Z UTC until the expiration time. Deze waarde wordt gebruikt om de levens duur van tokens in de cache te bepalen.This value is used to determine the lifetime of cached tokens.
resourceresource De App-ID-URI van de Web-API (beveiligde bron).The App ID URI of the web API (secured resource).
bereikscope Imitatie machtigingen verleend aan de client toepassing.Impersonation permissions granted to the client application. De standaard machtiging is user_impersonation.The default permission is user_impersonation. De eigenaar van de beveiligde resource kan aanvullende waarden registreren in azure AD.The owner of the secured resource can register additional values in Azure AD.
refresh_tokenrefresh_token Een OAuth 2,0-vernieuwings token.An OAuth 2.0 refresh token. De app kan dit token gebruiken om extra toegangs tokens te verkrijgen nadat het huidige toegangs token is verlopen.The app can use this token to acquire additional access tokens after the current access token expires. Vernieuwings tokens worden lang bewaard en kunnen worden gebruikt om de toegang tot resources te bewaren gedurende lange Peri Oden.Refresh tokens are long-lived, and can be used to retain access to resources for extended periods of time.
id_tokenid_token Een niet-ondertekende JSON Web Token (JWT) die een id-tokenvertegenwoordigt.An unsigned JSON Web Token (JWT) representing an ID token. De app kan de segmenten van deze token base64Url decoderen om informatie aan te vragen over de gebruiker die zich heeft aangemeld.The app can base64Url decode the segments of this token to request information about the user who signed in. De app kan de waarden in de cache opslaan en weer geven, maar deze moet niet afhankelijk zijn van autorisatie of beveiligings grenzen.The app can cache the values and display them, but it should not rely on them for any authorization or security boundaries.

Zie de specificatie JWT IETF draftvoor meer informatie over JSON-webtokens.For more information about JSON web tokens, see the JWT IETF draft specification. Zie id_tokens v 1.0 OpenID Connect Connect flowvoor meer informatie over.To learn more about id_tokens, see the v1.0 OpenID Connect flow.

Fout berichtError response

De eindpunt fouten van de token uitgifte zijn HTTP-fout codes, omdat de client het eind punt voor token uitgifte direct aanroept.The token issuance endpoint errors are HTTP error codes, because the client calls the token issuance endpoint directly. Naast de HTTP-status code retourneert het Azure AD token uitgifte-eind punt ook een JSON-document met objecten die de fout beschrijven.In addition to the HTTP status code, the Azure AD token issuance endpoint also returns a JSON document with objects that describe the error.

Een voor beeld van een fout bericht kan er als volgt uitzien:A sample error response could look like this:

{
  "error": "invalid_grant",
  "error_description": "AADSTS70002: Error validating credentials. AADSTS70008: The provided authorization code or refresh token is expired. Send a new interactive authorization request for this user and resource.\r\nTrace ID: 3939d04c-d7ba-42bf-9cb7-1e5854cdce9e\r\nCorrelation ID: a8125194-2dc8-4078-90ba-7b6592a7f231\r\nTimestamp: 2016-04-11 18:00:12Z",
  "error_codes": [
    70002,
    70008
  ],
  "timestamp": "2016-04-11 18:00:12Z",
  "trace_id": "3939d04c-d7ba-42bf-9cb7-1e5854cdce9e",
  "correlation_id": "a8125194-2dc8-4078-90ba-7b6592a7f231"
}
ParameterParameter DescriptionDescription
fouterror Een teken reeks voor fout codes die kan worden gebruikt voor het classificeren van typen fouten die optreden en kunnen worden gebruikt om te reageren op fouten.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_descriptionerror_description Een specifiek fout bericht dat een ontwikkelaar kan helpen bij het identificeren van de hoofd oorzaak van een verificatie fout.A specific error message that can help a developer identify the root cause of an authentication error.
error_codeserror_codes Een lijst met STS-specifieke fout codes die u kunnen helpen bij het diagnosticeren.A list of STS-specific error codes that can help in diagnostics.
timestamptimestamp Het tijdstip waarop de fout is opgetreden.The time at which the error occurred.
trace_idtrace_id Een unieke id voor de aanvraag die kan helpen bij diagnostische gegevens.A unique identifier for the request that can help in diagnostics.
correlation_idcorrelation_id Een unieke id voor de aanvraag die kan helpen bij het diagnosticeren van verschillende onderdelen.A unique identifier for the request that can help in diagnostics across components.

HTTP-statuscodesHTTP status codes

De volgende tabel bevat de HTTP-status codes die het eind punt voor token uitgifte retourneert.The following table lists the HTTP status codes that the token issuance endpoint returns. In sommige gevallen is de fout code voldoende om het antwoord te beschrijven, maar als er fouten zijn, moet u het bijbehorende JSON-document parseren en de fout code onderzoeken.In some cases, the error code is sufficient to describe the response, but if there are errors, you need to parse the accompanying JSON document and examine its error code.

HTTP-codeHTTP Code DescriptionDescription
400400 Standaard-HTTP-code.Default HTTP code. Wordt in de meeste gevallen gebruikt en wordt meestal veroorzaakt door een ongeldige aanvraag.Used in most cases and is typically due to a malformed request. Corrigeer en verzend de aanvraag opnieuw.Fix and resubmit the request.
401401 Verificatie is mislukt.Authentication failed. De aanvraag ontbreekt bijvoorbeeld de para meter client_secret.For example, the request is missing the client_secret parameter.
403403 Autorisatie is mislukt.Authorization failed. De gebruiker heeft bijvoorbeeld geen machtiging voor toegang tot de resource.For example, the user does not have permission to access the resource.
500500 Er is een interne fout opgetreden bij de service.An internal error has occurred at the service. Voer de aanvraag opnieuw uit.Retry the request.

Fout codes voor token eindpunt foutenError codes for token endpoint errors

FoutcodeError Code DescriptionDescription Client actieClient Action
invalid_requestinvalid_request Protocol fout, zoals een ontbrekende vereiste para meter.Protocol error, such as a missing required parameter. De aanvraag herstellen en opnieuw verzendenFix and resubmit the request
invalid_grantinvalid_grant De autorisatie code is ongeldig of is verlopen.The authorization code is invalid or has expired. Een nieuwe aanvraag naar het /authorize eind punt proberenTry a new request to the /authorize endpoint
unauthorized_clientunauthorized_client De geverifieerde client is niet gemachtigd om dit type autorisatie machtiging te gebruiken.The authenticated client is not authorized to use this authorization grant type. Dit gebeurt meestal wanneer de client toepassing niet is geregistreerd bij Azure AD of niet is toegevoegd aan de Azure AD-Tenant van de gebruiker.This usually occurs when the client application is not registered in Azure AD or is not added to the user's Azure AD tenant. De toepassing kan de gebruiker vragen met instructies voor het installeren van de toepassing en het toevoegen aan Azure AD.The application can prompt the user with instruction for installing the application and adding it to Azure AD.
invalid_clientinvalid_client Client verificatie is mislukt.Client authentication failed. De client referenties zijn ongeldig.The client credentials are not valid. De toepassings beheerder werkt de referenties bij om deze te herstellen.To fix, the application administrator updates the credentials.
unsupported_grant_typeunsupported_grant_type De autorisatie server biedt geen ondersteuning voor het type autorisatie toekenning.The authorization server does not support the authorization grant type. Wijzig het toekennings type in de aanvraag.Change the grant type in the request. Dit type fout moet alleen tijdens de ontwikkeling optreden en tijdens de eerste test worden gedetecteerd.This type of error should occur only during development and be detected during initial testing.
invalid_resourceinvalid_resource De doel resource is ongeldig omdat deze niet bestaat, Azure AD niet kan worden gevonden of niet juist is geconfigureerd.The target resource is invalid because it does not exist, Azure AD cannot find it, or it is not correctly configured. Dit geeft aan dat de resource, indien aanwezig, niet is geconfigureerd in de Tenant.This indicates the resource, if it exists, has not been configured in the tenant. De toepassing kan de gebruiker vragen met instructies voor het installeren van de toepassing en het toevoegen aan Azure AD.The application can prompt the user with instruction for installing the application and adding it to Azure AD.
interaction_requiredinteraction_required De aanvraag vereist een gebruikers interactie.The request requires user interaction. Zo is een extra verificatie stap vereist.For example, an additional authentication step is required. Probeer het opnieuw met een interactieve autorisatie aanvraag voor dezelfde bron in plaats van een niet-interactieve aanvraag.Instead of a non-interactive request, retry with an interactive authorization request for the same resource.
temporarily_unavailabletemporarily_unavailable De server is tijdelijk niet actief om de aanvraag af te handelen.The server is temporarily too busy to handle the request. Voer de aanvraag opnieuw uit.Retry the request. De client toepassing kan bijvoorbeeld verklaren dat het antwoord van de gebruiker is vertraagd vanwege een tijdelijke voor waarde.The client application might explain to the user that its response is delayed due to a temporary condition.

Het toegangs token gebruiken om toegang te krijgen tot de resourceUse the access token to access the resource

Nu u een access_tokenhebt aangeschaft, kunt u het token gebruiken in aanvragen voor web-api's door dit op te nemen in de Authorization kop.Now that you've successfully acquired an access_token, you can use the token in requests to Web APIs, by including it in the Authorization header. In de RFC 6750 -specificatie wordt uitgelegd hoe u Bearer-tokens kunt gebruiken in HTTP-aanvragen om toegang te krijgen tot beveiligde bronnen.The RFC 6750 specification explains how to use bearer tokens in HTTP requests to access protected resources.

Voorbeeld van een aanvraagSample request

GET /data HTTP/1.1
Host: service.contoso.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1THdqcHdBSk9NOW4tQSJ9.eyJhdWQiOiJodHRwczovL3NlcnZpY2UuY29udG9zby5jb20vIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvN2ZlODE0NDctZGE1Ny00Mzg1LWJlY2ItNmRlNTdmMjE0NzdlLyIsImlhdCI6MTM4ODQ0MDg2MywibmJmIjoxMzg4NDQwODYzLCJleHAiOjEzODg0NDQ3NjMsInZlciI6IjEuMCIsInRpZCI6IjdmZTgxNDQ3LWRhNTctNDM4NS1iZWNiLTZkZTU3ZjIxNDc3ZSIsIm9pZCI6IjY4Mzg5YWUyLTYyZmEtNGIxOC05MWZlLTUzZGQxMDlkNzRmNSIsInVwbiI6ImZyYW5rbUBjb250b3NvLmNvbSIsInVuaXF1ZV9uYW1lIjoiZnJhbmttQGNvbnRvc28uY29tIiwic3ViIjoiZGVOcUlqOUlPRTlQV0pXYkhzZnRYdDJFYWJQVmwwQ2o4UUFtZWZSTFY5OCIsImZhbWlseV9uYW1lIjoiTWlsbGVyIiwiZ2l2ZW5fbmFtZSI6IkZyYW5rIiwiYXBwaWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctODkwYS0yNzRhNzJhNzMwOWUiLCJhcHBpZGFjciI6IjAiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJhY3IiOiIxIn0.JZw8jC0gptZxVC-7l5sFkdnJgP3_tRjeQEPgUn28XctVe3QqmheLZw7QVZDPCyGycDWBaqy7FLpSekET_BftDkewRhyHk9FW_KeEz0ch2c3i08NGNDbr6XYGVayNuSesYk5Aw_p3ICRlUV1bqEwk-Jkzs9EEkQg4hbefqJS6yS1HoV_2EsEhpd_wCQpxK89WPs3hLYZETRJtG5kvCCEOvSHXmDE6eTHGTnEgsIk--UlPe275Dvou4gEAwLofhLDQbMSjnlV5VLsjimNBVcSRFShoxmQwBJR_b2011Y5IuD6St5zPnzruBbZYkGNurQK63TJPWmRd3mbJsGM0mf3CUQ

Fout berichtError Response

Beveiligde bronnen voor het implementeren van RFC 6750-probleem HTTP-status codes.Secured resources that implement RFC 6750 issue HTTP status codes. Als de aanvraag geen verificatie referenties bevat of als het token ontbreekt, is het antwoord een WWW-Authenticate header.If the request does not include authentication credentials or is missing the token, the response includes an WWW-Authenticate header. Wanneer een aanvraag mislukt, reageert de resource server met de HTTP-status code en een fout code.When a request fails, the resource server responds with the HTTP status code and an error code.

Hier volgt een voor beeld van een niet-geslaagde reactie wanneer de client aanvraag geen Bearer-token bevat:The following is an example of an unsuccessful response when the client request does not include the bearer token:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer authorization_uri="https://login.microsoftonline.com/contoso.com/oauth2/authorize",  error="invalid_token",  error_description="The access token is missing.",

Fout parametersError parameters

ParameterParameter DescriptionDescription
authorization_uriauthorization_uri De URI (fysiek eind punt) van de autorisatie server.The URI (physical endpoint) of the authorization server. Deze waarde wordt ook gebruikt als opzoek sleutel voor het verkrijgen van meer informatie over de server van een detectie-eind punt.This value is also used as a lookup key to get more information about the server from a discovery endpoint.

De client moet valideren of de autorisatie server vertrouwd is.The client must validate that the authorization server is trusted. Wanneer de resource wordt beveiligd door Azure AD, is het voldoende om te controleren of de URL begint https://login.microsoftonline.com met of een andere hostnaam die door Azure AD wordt ondersteund.When the resource is protected by Azure AD, it is sufficient to verify that the URL begins with https://login.microsoftonline.com or another hostname that Azure AD supports. Een Tenant-specifieke resource moet altijd een Tenant-specifieke autorisatie-URI retour neren.A tenant-specific resource should always return a tenant-specific authorization URI.

fouterror Een fout code waarde die is gedefinieerd in sectie 5,2 van het OAuth 2,0-autorisatie raamwerk.An error code value defined in Section 5.2 of the OAuth 2.0 Authorization Framework.
error_descriptionerror_description Een gedetailleerde beschrijving van de fout.A more detailed description of the error. Dit bericht is niet bedoeld voor eind gebruikers vriendelijk.This message is not intended to be end-user friendly.
resource_idresource_id Retourneert de unieke id van de resource.Returns the unique identifier of the resource. De client toepassing kan deze id als de waarde van de resource para meter gebruiken bij het aanvragen van een token voor de resource.The client application can use this identifier as the value of the resource parameter when it requests a token for the resource.

Het is belang rijk dat de client toepassing deze waarde verifieert. anders kan een schadelijke service een aanval van bevoegdheden tot gevolg hebben.It is important for the client application to verify this value, otherwise a malicious service might be able to induce an elevation-of-privileges attack

De aanbevolen strategie voor het voor komen van een aanval is om resource_id te controleren of het overeenkomt met de basis van de Web API-URL die wordt geopend.The recommended strategy for preventing an attack is to verify that the resource_id matches the base of the web API URL that being accessed. Als https://service.contoso.com/data bijvoorbeeld wordt geopend, kan de resource_id htttps://service.contoso.com/zijn.For example, if https://service.contoso.com/data is being accessed, the resource_id can be htttps://service.contoso.com/. De client toepassing moet een resource_id die niet begint met de basis-URL afwijzen, tenzij er een betrouw bare alternatieve manier is om de id te verifiëren.The client application must reject a resource_id that does not begin with the base URL unless there is a reliable alternate way to verify the id.

Fout codes van Bearer-schema'sBearer scheme error codes

De RFC 6750-specificatie definieert de volgende fouten voor resources die gebruikmaken van de WWW-Authenticate-header en Bearer-schema in het antwoord.The RFC 6750 specification defines the following errors for resources that use the WWW-Authenticate header and Bearer scheme in the response.

HTTP-status codeHTTP Status Code FoutcodeError Code DescriptionDescription Client actieClient Action
400400 invalid_requestinvalid_request De aanvraag is niet juist opgemaakt.The request is not well-formed. Er kan bijvoorbeeld een para meter ontbreken of dezelfde para meter twee keer worden gebruikt.For example, it might be missing a parameter or using the same parameter twice. Los de fout op en voer de aanvraag opnieuw uit.Fix the error and retry the request. Dit type fout moet alleen tijdens de ontwikkeling optreden en tijdens de eerste test worden gedetecteerd.This type of error should occur only during development and be detected in initial testing.
401401 invalid_tokeninvalid_token Het toegangs token ontbreekt, is ongeldig of is ingetrokken.The access token is missing, invalid, or is revoked. De waarde van de para meter error_description biedt meer details.The value of the error_description parameter provides additional detail. Een nieuw token aanvragen bij de autorisatie server.Request a new token from the authorization server. Als het nieuwe token mislukt, is er een onverwachte fout opgetreden.If the new token fails, an unexpected error has occurred. Stuur een fout bericht naar de gebruiker en probeer het opnieuw na wille keurige vertragingen.Send an error message to the user and retry after random delays.
403403 insufficient_scopeinsufficient_scope Het toegangs token bevat niet de imitatie machtigingen die vereist zijn voor toegang tot de bron.The access token does not contain the impersonation permissions required to access the resource. Verzend een nieuwe autorisatie aanvraag naar het autorisatie-eind punt.Send a new authorization request to the authorization endpoint. Als het antwoord de bereik parameter bevat, gebruikt u de bereik waarde in de aanvraag voor de resource.If the response contains the scope parameter, use the scope value in the request to the resource.
403403 insufficient_accessinsufficient_access Het onderwerp van het token heeft niet de machtigingen die nodig zijn voor toegang tot de resource.The subject of the token does not have the permissions that are required to access the resource. De gebruiker vragen om een ander account te gebruiken of om machtigingen aan te vragen voor de opgegeven resource.Prompt the user to use a different account or to request permissions to the specified resource.

De toegangs tokens vernieuwenRefreshing the access tokens

Toegangs tokens zijn korte duur en moeten worden vernieuwd nadat ze hebben geduurd om toegang te blijven houden tot resources.Access Tokens are short-lived and must be refreshed after they expire to continue accessing resources. U access_token kunt de vernieuwen door een andere POST aanvraag in te /token dienen bij het eind punt, maar refresh_token deze keer is codede tijd die u opgeeft in plaats van de.You can refresh the access_token by submitting another POST request to the /token endpoint, but this time providing the refresh_token instead of the code. De vernieuwings tokens zijn geldig voor alle resources die uw client al toestemming heeft gegeven om toegang te krijgen resource=https://graph.microsoft.com resource=https://contoso.com/api. Daarom kan een vernieuwings token dat is uitgegeven op een aanvraag voor, worden gebruikt om een nieuw toegangs token aan te vragen.Refresh tokens are valid for all resources that your client has already been given consent to access - thus, a refresh token issued on a request for resource=https://graph.microsoft.com can be used to request a new access token for resource=https://contoso.com/api.

Voor vernieuwings tokens is geen levens duur opgegeven.Refresh tokens do not have specified lifetimes. De levens duur van vernieuwings tokens is doorgaans relatief lang.Typically, the lifetimes of refresh tokens are relatively long. In sommige gevallen verloopt het vernieuwen van tokens, worden deze ingetrokken of beschikt over onvoldoende machtigingen voor de gewenste actie.However, in some cases, refresh tokens expire, are revoked, or lack sufficient privileges for the desired action. Uw toepassing moet verwachten en fouten afhandelen die door het eind punt voor token uitgifte zijn geretourneerd.Your application needs to expect and handle errors returned by the token issuance endpoint correctly.

Wanneer u een reactie met een vernieuwings token fout ontvangt, moet u het huidige vernieuwings token verwijderen en een nieuwe autorisatie code of toegangs token aanvragen.When you receive a response with a refresh token error, discard the current refresh token and request a new authorization code or access token. Bij het gebruik van een vernieuwings token in de machtigings stroom van de autorisatie code wordt interaction_required invalid_grant met name het vernieuwings token verwijderd en een nieuwe autorisatie code aangevraagd.In particular, when using a refresh token in the Authorization Code Grant flow, if you receive a response with the interaction_required or invalid_grant error codes, discard the refresh token and request a new authorization code.

Een voorbeeld aanvraag aan het Tenant-specifieke eind punt (u kunt ook het gemeen schappelijke eind punt gebruiken) om een nieuw toegangs token op te halen met behulp van een vernieuwings token ziet er als volgt uit:A sample request to the tenant-specific endpoint (you can also use the common endpoint) to get a new access token using a refresh token looks like this:

// Line breaks for legibility only

POST /{tenant}/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&refresh_token=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq...
&grant_type=refresh_token
&resource=https%3A%2F%2Fservice.contoso.com%2F
&client_secret=JqQX2PNo9bpM0uEihUPzyrh    // NOTE: Only required for web apps

Geslaagde reactieSuccessful response

Een geslaagd token antwoord ziet er als volgt uit:A successful token response will look like:

{
  "token_type": "Bearer",
  "expires_in": "3600",
  "expires_on": "1460404526",
  "resource": "https://service.contoso.com/",
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1THdqcHdBSk9NOW4tQSJ9.eyJhdWQiOiJodHRwczovL3NlcnZpY2UuY29udG9zby5jb20vIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvN2ZlODE0NDctZGE1Ny00Mzg1LWJlY2ItNmRlNTdmMjE0NzdlLyIsImlhdCI6MTM4ODQ0MDg2MywibmJmIjoxMzg4NDQwODYzLCJleHAiOjEzODg0NDQ3NjMsInZlciI6IjEuMCIsInRpZCI6IjdmZTgxNDQ3LWRhNTctNDM4NS1iZWNiLTZkZTU3ZjIxNDc3ZSIsIm9pZCI6IjY4Mzg5YWUyLTYyZmEtNGIxOC05MWZlLTUzZGQxMDlkNzRmNSIsInVwbiI6ImZyYW5rbUBjb250b3NvLmNvbSIsInVuaXF1ZV9uYW1lIjoiZnJhbmttQGNvbnRvc28uY29tIiwic3ViIjoiZGVOcUlqOUlPRTlQV0pXYkhzZnRYdDJFYWJQVmwwQ2o4UUFtZWZSTFY5OCIsImZhbWlseV9uYW1lIjoiTWlsbGVyIiwiZ2l2ZW5fbmFtZSI6IkZyYW5rIiwiYXBwaWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctODkwYS0yNzRhNzJhNzMwOWUiLCJhcHBpZGFjciI6IjAiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJhY3IiOiIxIn0.JZw8jC0gptZxVC-7l5sFkdnJgP3_tRjeQEPgUn28XctVe3QqmheLZw7QVZDPCyGycDWBaqy7FLpSekET_BftDkewRhyHk9FW_KeEz0ch2c3i08NGNDbr6XYGVayNuSesYk5Aw_p3ICRlUV1bqEwk-Jkzs9EEkQg4hbefqJS6yS1HoV_2EsEhpd_wCQpxK89WPs3hLYZETRJtG5kvCCEOvSHXmDE6eTHGTnEgsIk--UlPe275Dvou4gEAwLofhLDQbMSjnlV5VLsjimNBVcSRFShoxmQwBJR_b2011Y5IuD6St5zPnzruBbZYkGNurQK63TJPWmRd3mbJsGM0mf3CUQ",
  "refresh_token": "AwABAAAAv YNqmf9SoAylD1PycGCB90xzZeEDg6oBzOIPfYsbDWNf621pKo2Q3GGTHYlmNfwoc-OlrxK69hkha2CF12azM_NYhgO668yfcUl4VBbiSHZyd1NVZG5QTIOcbObu3qnLutbpadZGAxqjIbMkQ2bQS09fTrjMBtDE3D6kSMIodpCecoANon9b0LATkpitimVCrl PM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4rTfgV29ghDOHRc2B-C_hHeJaJICqjZ3mY2b_YNqmf9SoAylD1PycGCB90xzZeEDg6oBzOIPfYsbDWNf621pKo2Q3GGTHYlmNfwoc-OlrxK69hkha2CF12azM_NYhgO668yfmVCrl-NyfN3oyG4ZCWu18M9-vEou4Sq-1oMDzExgAf61noxzkNiaTecM-Ve5cq6wHqYQjfV9DOz4lbceuYCAA"
}
ParameterParameter DescriptionDescription
token_typetoken_type Het token type.The token type. De enige ondersteunde waarde is Bearer.The only supported value is bearer.
expires_inexpires_in De resterende levens duur van het token in seconden.The remaining lifetime of the token in seconds. Een typische waarde is 3600 (één uur).A typical value is 3600 (one hour).
expires_onexpires_on De datum en tijd waarop het token verloopt.The date and time on which the token expires. De datum wordt weer gegeven als het aantal seconden van 1970-01-01T0:0: 0Z UTC tot de verloop tijd.The date is represented as the number of seconds from 1970-01-01T0:0:0Z UTC until the expiration time.
resourceresource Hiermee wordt de beveiligde bron geïdentificeerd waarmee het toegangs token kan worden gebruikt om toegang te krijgen.Identifies the secured resource that the access token can be used to access.
bereikscope Imitatie machtigingen die zijn verleend aan de systeem eigen client toepassing.Impersonation permissions granted to the native client application. De standaard machtiging is user_impersonation.The default permission is user_impersonation. De eigenaar van de doel resource kan alternatieve waarden registreren in azure AD.The owner of the target resource can register alternate values in Azure AD.
access_tokenaccess_token Het nieuwe toegangs token dat is aangevraagd.The new access token that was requested.
refresh_tokenrefresh_token Een nieuw OAuth 2,0 refresh_token dat kan worden gebruikt om nieuwe toegangs tokens aan te vragen wanneer het in dit antwoord verloopt.A new OAuth 2.0 refresh_token that can be used to request new access tokens when the one in this response expires.

Fout berichtError response

Een voor beeld van een fout bericht kan er als volgt uitzien:A sample error response could look like this:

{
  "error": "invalid_resource",
  "error_description": "AADSTS50001: The application named https://foo.microsoft.com/mail.read was not found in the tenant named 295e01fc-0c56-4ac3-ac57-5d0ed568f872. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant.\r\nTrace ID: ef1f89f6-a14f-49de-9868-61bd4072f0a9\r\nCorrelation ID: b6908274-2c58-4e91-aea9-1f6b9c99347c\r\nTimestamp: 2016-04-11 18:59:01Z",
  "error_codes": [
    50001
  ],
  "timestamp": "2016-04-11 18:59:01Z",
  "trace_id": "ef1f89f6-a14f-49de-9868-61bd4072f0a9",
  "correlation_id": "b6908274-2c58-4e91-aea9-1f6b9c99347c"
}
ParameterParameter DescriptionDescription
fouterror Een teken reeks voor fout codes die kan worden gebruikt voor het classificeren van typen fouten die optreden en kunnen worden gebruikt om te reageren op fouten.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_descriptionerror_description Een specifiek fout bericht dat een ontwikkelaar kan helpen bij het identificeren van de hoofd oorzaak van een verificatie fout.A specific error message that can help a developer identify the root cause of an authentication error.
error_codeserror_codes Een lijst met STS-specifieke fout codes die u kunnen helpen bij het diagnosticeren.A list of STS-specific error codes that can help in diagnostics.
timestamptimestamp Het tijdstip waarop de fout is opgetreden.The time at which the error occurred.
trace_idtrace_id Een unieke id voor de aanvraag die kan helpen bij diagnostische gegevens.A unique identifier for the request that can help in diagnostics.
correlation_idcorrelation_id Een unieke id voor de aanvraag die kan helpen bij het diagnosticeren van verschillende onderdelen.A unique identifier for the request that can help in diagnostics across components.

Zie voor een beschrijving van de fout codes en de aanbevolen client actie fout codes voor token eindpunt fouten.For a description of the error codes and the recommended client action, see Error codes for token endpoint errors.

Volgende stappenNext steps

Zie voorbeeld toepassingenvoor meer informatie over het Azure AD v 1.0-eind punt en het toevoegen van verificatie en autorisatie aan uw webtoepassingen en Web-api's.To learn more about the Azure AD v1.0 endpoint and how to add authentication and authorization to your web applications and web APIs, see sample applications.