Microsoft kimlik platformu ve OAuth 2.0 yetkilendirme kod akışıMicrosoft identity platform and OAuth 2.0 authorization code flow

Şunlara uygulanır:Applies to:
  • Microsoft kimlik platformu uç noktasıMicrosoft identity platform endpoint

OAuth 2.0 yetkilendirme kodu verme, web API'leri gibi korunan kaynakları erişim kazanmak için cihazda yüklü olan uygulamalarda kullanılabilir.The OAuth 2.0 authorization code grant can be used in apps that are installed on a device to gain access to protected resources, such as web APIs. Microsoft kimlik platformu uygulaması OAuth 2.0 kullanarak oturum açın ve API'ye erişmek için mobil ve Masaüstü uygulamaları ekleyebilirsiniz.Using the Microsoft identity platform implementation of OAuth 2.0, you can add sign in and API access to your mobile and desktop apps. Bu kılavuz dilden bağımsızdır ve HTTP iletileri gönderip herhangi birini kullanmadan açıklar Azure açık kaynak kimlik doğrulama kitaplıkları.This guide is language-independent, and describes how to send and receive HTTP messages without using any of the Azure open-source authentication libraries.

Not

Tüm Azure Active Directory senaryolarını ve özelliklerini Microsoft kimlik platformu uç noktası tarafından desteklenir.Not all Azure Active Directory scenarios & features are supported by the Microsoft identity platform endpoint. Microsoft kimlik platformu uç noktası kullanıyorsanız belirlemek için aşağıdaki hakkında bilgi edinin: Microsoft Identity platform sınırlamaları.To determine if you should use the Microsoft identity platform endpoint, read about Microsoft identity platform limitations.

OAuth 2.0 yetkilendirme kod akışı açıklanan OAuth 2.0 belirtiminin 4.1 bölümünde.The OAuth 2.0 authorization code flow is described in section 4.1 of the OAuth 2.0 specification. Kimlik doğrulama ve yetkilendirme dahil olmak üzere, uygulama türleri çoğunu gerçekleştirmek için kullanılan web uygulamaları ve yerel olarak yüklenen uygulamalar.It's used to perform authentication and authorization in the majority of app types, including web apps and natively installed apps. Güvenli bir şekilde Microsoft kimlik platformu uç noktası tarafından güvenli hale getirilmiş kaynaklara erişmek için kullanılan access_tokens almak üzere uygulama akışını sağlar.The flow enables apps to securely acquire access_tokens that can be used to access resources secured by the Microsoft identity platform endpoint.

Protokol diyagramıProtocol diagram

Yerel/mobil uygulama için tüm kimlik doğrulama akışı, yüksek düzeyde, şöyle bir bit görünür:At a high level, the entire authentication flow for a native/mobile application looks a bit like this:

OAuth yetkilendirme kod akışı

İstek bir yetkilendirme koduRequest an authorization code

Kullanıcıya yönlendiren istemci yetkilendirme kod akışı başlar /authorize uç noktası.The authorization code flow begins with the client directing the user to the /authorize endpoint. Bu istekte istemci kullanıcıdan almak için gerekli olan izinleri belirtir:In this request, the client indicates the permissions it needs to acquire from the user:

// Line breaks for legibility only

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
&state=12345

İpucu

Bu isteğin yürütülmesi için aşağıdaki bağlantıya tıklayın!Click the link below to execute this request! Oturum açtıktan sonra tarayıcınızı için yeniden yönlendirilmesi gereken https://localhost/myapp/ ile bir code adres çubuğundaki.After signing in, your browser should be redirected to https://localhost/myapp/ with a code in the address bar. https://login.microsoftonline.com/common/oauth2/v2.0/authorize...https://login.microsoftonline.com/common/oauth2/v2.0/authorize...

ParametreParameter Gerekli/isteğe bağlıRequired/optional AçıklamaDescription
tenant gereklirequired {tenant} İstek yolunda değer, uygulamaya oturum denetimi için kullanılabilir.The {tenant} value in the path of the request can be used to control who can sign into the application. İzin verilen değerler common, organizations, consumersve Kiracı tanımlayıcıları.The allowed values are common, organizations, consumers, and tenant identifiers. Daha fazla ayrıntı için protokolü temel.For more detail, see protocol basics.
client_id gereklirequired Uygulama (istemci) kimliği , Azure portalında – uygulama kayıtları uygulamanıza atanan deneyimi.The Application (client) ID that the Azure portal – App registrations experience assigned to your app.
response_type gereklirequired İçermelidir code yetkilendirme kod akışı için.Must include code for the authorization code flow.
redirect_uri gereklirequired Burada kimlik doğrulama yanıtlarının gönderilebilen veya uygulamanız tarafından alınan uygulamanızın redirect_uri.The redirect_uri of your app, where authentication responses can be sent and received by your app. Bu url olarak kodlanmış olması dışında Portalı'nda kayıtlı redirect_uris biri tam olarak eşleşmesi gerekir.It must exactly match one of the redirect_uris you registered in the portal, except it must be url encoded. Yerel & mobil uygulamaları için varsayılan değeri kullanması gereken https://login.microsoftonline.com/common/oauth2/nativeclient.For native & mobile apps, you should use the default value of https://login.microsoftonline.com/common/oauth2/nativeclient.
scope gereklirequired Boşlukla ayrılmış bir listesini kapsamları onay kullanıcıya istiyor.A space-separated list of scopes that you want the user to consent to.
response_mode Önerilenrecommended Uygulamanıza elde edilen belirteç geri göndermek için kullanılması gereken yöntemini belirtir.Specifies the method that should be used to send the resulting token back to your app. Aşağıdakilerden biri olabilir:Can be one of the following:

- query
- fragment
- form_post

query kod, yeniden yönlendirme URI'si üzerinde bir sorgu dizesi parametresi olarak sağlar.query provides the code as a query string parameter on your redirect URI. Örtük akışını kullanarak bir kimlik belirteci istediği, kullanamazsınız query belirtilmiş Openıd spec. Yalnızca kodum istediği, kullanabileceğiniz query, fragment, veya form_post.If you're requesting an ID token using the implicit flow, you can't use query as specified in the OpenID spec. If you're requesting just the code, you can use query, fragment, or form_post. form_post kodu, yeniden yönlendirme URI'sini içeren bir GÖNDERİ yürütür.form_post executes a POST containing the code to your redirect URI. Daha fazla bilgi için bkz. Openıd Connect protokolünü.For more info, see OpenID Connect protocol.
state Önerilenrecommended Belirteç yanıtta döndürülecek isteğinde bulunan bir değer.A value included in the request that will also be returned in the token response. Bu, istediğiniz herhangi bir içerik dizesi olabilir.It can be a string of any content that you wish. Rastgele oluşturulmuş bir benzersiz değer için genellikle kullanılan siteler arası istek sahteciliğini saldırılarını önleme.A randomly generated unique value is typically used for preventing cross-site request forgery attacks. Sayfa ya da görünümü üzerinde oldukları gibi kimlik doğrulama isteği oluşmadan önce değeri uygulamasında kullanıcının durumu hakkında bilgi de şifreleyebilirsiniz.The value can also encode information about the user's state in the app before the authentication request occurred, such as the page or view they were on.
prompt isteğe bağlıoptional Gerekli olan kullanıcı etkileşimi türünü belirtir.Indicates the type of user interaction that is required. Şu anda yalnızca geçerli değerler login, none, ve consent.The only valid values at this time are login, none, and consent.

- prompt=login Bu isteğin negating çoklu oturum açma kimlik bilgilerini girmesini zorunlu tutar.- prompt=login will force the user to enter their credentials on that request, negating single-sign on.
- prompt=none -tersidir kullanıcı hiçbir etkileşimli istemi olmadan sunulan değil sağlayacaktır.- prompt=none is the opposite - it will ensure that the user isn't presented with any interactive prompt whatsoever. Microsoft kimlik platformu uç nokta isteği sessizce aracılığıyla çoklu oturum açma işleminin neden tamamlanamadığına varsa, döndürür bir interaction_required hata.If the request can't be completed silently via single-sign on, the Microsoft identity platform endpoint will return an interaction_required error.
- prompt=consent Kullanıcı uygulamayı izinler istendiği anın, oturum açtıktan sonra OAuth onay iletişim tetikler.- prompt=consent will trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app.
login_hint isteğe bağlıoptional Önceden, kullanıcı adını biliyorsanız, kullanıcı için oturum açma sayfası kullanıcı adı/e-posta adresi alanının önceden doldurmak için kullanılabilir.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. Kullanıcı adı önceki oturum açma kullanarak bir zaten ayıklanan yeniden kimlik doğrulaması sırasında bu parametre genellikle uygulamaları kullanacağı preferred_username talep.Often apps will use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim.
domain_hint isteğe bağlıoptional Herhangi birini consumers veya organizations.Can be one of consumers or organizations.

Bu onay kutusu eklediyseniz, e-posta tabanlı bulma işlemi atlanacak biraz daha kolay bir kullanıcı deneyimi için önde gelen oturum açma sayfasında kullanıcı geçer.If included, it will skip the email-based discovery process that user goes through on the sign-in page, leading to a slightly more streamlined user experience. Uygulamalar genellikle kullanır bu parametreyi yeniden kimlik doğrulaması sırasında ayıklayarak tid gelen bir önceki oturum açma.Often apps will use this parameter during re-authentication, by extracting the tid from a previous sign-in. Varsa tid değer talep 9188040d-6c67-4c5b-b112-36a304b66dad, kullanmanız gereken domain_hint=consumers.If the tid claim value is 9188040d-6c67-4c5b-b112-36a304b66dad, you should use domain_hint=consumers. Aksi takdirde kullanın domain_hint=organizations.Otherwise, use domain_hint=organizations.
code_challenge_method isteğe bağlıoptional Kodlamak için kullanılan yöntemin code_verifier için code_challenge parametresi.The method used to encode the code_verifier for the code_challenge parameter. Aşağıdaki değerlerden biri olabilir:Can be one of the following values:

- plain
- S256

Dışlanırsa, code_challenge düz metin olarak kabul edilir code_challenge dahildir.If excluded, code_challenge is assumed to be plaintext if code_challenge is included. Microsoft kimlik platformu destekler plain ve S256.Microsoft identity platform supports both plain and S256. Daha fazla bilgi için PKCE RFC.For more information, see the PKCE RFC.
code_challenge isteğe bağlıoptional Yetkilendirme kodu elde kavram anahtarı aracılığıyla kod Exchange (PKCE) için yerel bir istemciden güvenliğini sağlamak için kullanılır.Used to secure authorization code grants via Proof Key for Code Exchange (PKCE) from a native client. Gerekli if code_challenge_method dahildir.Required if code_challenge_method is included. Daha fazla bilgi için PKCE RFC.For more information, see the PKCE RFC.

Bu noktada, kullanıcı kimlik bilgilerini girin ve kimlik doğrulamasını tamamlaması istenecektir.At this point, the user will be asked to enter their credentials and complete the authentication. Microsoft kimlik platformu uç noktası, ayrıca kullanıcı için belirtilen izinleri onaylamasını sağlayacak scope sorgu parametresi.The Microsoft identity platform endpoint will also ensure that the user has consented to the permissions indicated in the scope query parameter. Kullanıcının tüm bu izinleri olmayan etmişse, onayı gerekli izinleri kullanıcıya sorar.If the user has not consented to any of those permissions, it will ask the user to consent to the required permissions. Ayrıntılarını izinleri, onay ve çok kiracılı uygulamalar sağlanan burada.Details of permissions, consent, and multi-tenant apps are provided here.

Kullanıcının kimliğini doğrular ve onayı veren sonra Microsoft kimlik platformu uç nokta uygulamanızı belirtilen bir yanıt döndürür redirect_uri, bölümünde belirtilen yöntemi kullanarak response_mode parametresi.Once the user authenticates and grants consent, the Microsoft identity platform endpoint will return a response to your app at the indicated redirect_uri, using the method specified in the response_mode parameter.

Başarılı yanıtSuccessful response

Başarılı yanıt kullanarak bir response_mode=query gibi görünür:A successful response using response_mode=query looks like:

GET https://login.microsoftonline.com/common/oauth2/nativeclient?
code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&state=12345
ParametreParameter AçıklamaDescription
code Uygulama istenen authorization_code.The authorization_code that the app requested. Uygulama, hedef kaynağı için bir erişim belirteci istemek için yetkilendirme kodu kullanabilirsiniz.The app can use the authorization code to request an access token for the target resource. Authorization_codes kısa süreli, genellikle bu, yaklaşık 10 dakika sonra süresi dolar.Authorization_codes are short lived, typically they expire after about 10 minutes.
state State parametresi istekte yer alıyorsa aynı değeri yanıt olarak görünmelidir.If a state parameter is included in the request, the same value should appear in the response. Uygulama istek ve yanıt durum değerleri özdeş olduğunu doğrulamanız gerekir.The app should verify that the state values in the request and response are identical.

Hata yanıtıError response

Hata yanıtları da gönderilebilir için redirect_uri uygulama bunları uygun şekilde işleyebilmesi için:Error responses may also be sent to the redirect_uri so the app can handle them appropriately:

GET https://login.microsoftonline.com/common/oauth2/nativeclient?
error=access_denied
&error_description=the+user+canceled+the+authentication
ParametreParameter AçıklamaDescription
error Oluşan hataları türlerini sınıflandırmak için kullanılabilir ve hatalara tepki vermek için kullanılan bir hata kodu dizesi.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_description Bir geliştirici bir kimlik doğrulama hatası kök nedenini belirlemenize yardımcı olabilecek belirli bir hata iletisi.A specific error message that can help a developer identify the root cause of an authentication error.

Yetkilendirme uç noktası hataları için hata kodlarıError codes for authorization endpoint errors

Aşağıdaki tabloda, döndürülen çeşitli hata kodları açıklanmaktadır error hata yanıtı parametresi.The following table describes the various error codes that can be returned in the error parameter of the error response.

Hata KoduError Code AçıklamaDescription İstemci eylemiClient Action
invalid_request Gerekli parametre eksik gibi protokol hatası.Protocol error, such as a missing required parameter. Düzeltin ve isteği yeniden gönderin.Fix and resubmit the request. Bu genellikle ilk sınama sırasında yakalanan geliştirme hatasıdır.This is a development error typically caught during initial testing.
unauthorized_client İstemci uygulama bir yetkilendirme kodu istemek için izin verilen değil.The client application isn't permitted to request an authorization code. Bu hata genellikle istemci uygulaması, Azure AD'de kayıtlı değil veya kullanıcının Azure AD kiracısına eklenmez oluşur.This error usually occurs when the client application isn't registered in Azure AD or isn't added to the user's Azure AD tenant. Uygulama, uygulama yükleme ve Azure AD'ye ekleme yönerge kullanıcıyla isteyebilir.The application can prompt the user with instruction for installing the application and adding it to Azure AD.
access_denied Kaynak sahibi onayı reddedildiResource owner denied consent İstemci uygulama, kullanıcı onay sürece devam edemiyor kullanıcıya bildirebilir.The client application can notify the user that it can't proceed unless the user consents.
unsupported_response_type Yetkilendirme sunucusu isteği yanıt türü desteklemiyor.The authorization server does not support the response type in the request. Düzeltin ve isteği yeniden gönderin.Fix and resubmit the request. Bu genellikle ilk sınama sırasında yakalanan geliştirme hatasıdır.This is a development error typically caught during initial testing.
server_error Sunucu beklenmeyen bir hatayla karşılaştı.The server encountered an unexpected error. İsteği yeniden deneyin.Retry the request. Bu hataların geçici koşullar neden olabilir.These errors can result from temporary conditions. İstemci uygulama, kullanıcıya yanıtına geçici bir hata ertelendi açıklayabilir.The client application might explain to the user that its response is delayed to a temporary error.
temporarily_unavailable Sunucunun geçici olarak isteği işleyemeyecek kadar meşgul.The server is temporarily too busy to handle the request. İsteği yeniden deneyin.Retry the request. İstemci uygulama, kullanıcıya yanıtına bir geçici koşul nedeniyle ertelendi açıklayabilir.The client application might explain to the user that its response is delayed because of a temporary condition.
invalid_resource Hedef kaynak yoksa, Azure AD, bulunamıyor veya düzgün yapılandırılmış olduğundan geçersiz.The target resource is invalid because it does not exist, Azure AD can't find it, or it's not correctly configured. Bu hata varsa, kaynak kiracıda yapılandırılmadı gösterir.This error indicates the resource, if it exists, has not been configured in the tenant. Uygulama, uygulama yükleme ve Azure AD'ye ekleme yönerge kullanıcıyla isteyebilir.The application can prompt the user with instruction for installing the application and adding it to Azure AD.
login_required Çok fazla veya kullanıcı bulunamadıToo many or no users found İstemciyi sessiz kimlik doğrulaması (prompt=none), ancak tek bir kullanıcı bulunamadı.The client requested silent authentication (prompt=none), but a single user could not found. Bu, vardır birden fazla kullanıcı etkin oturum veya kullanıcı yok anlamına gelebilir.This may mean there are multiple users active in the session, or no users. Bu seçilen Kiracı dikkate alır (örneğin, iki Azure AD hesap etkin ve bir Microsoft hesabınız varsa ve consumers seçildiyse, sessiz kimlik doğrulaması çalışır).This takes into account the tenant chosen (for example, if there are two Azure AD accounts active and one Microsoft account, and consumers is chosen, silent authentication will work).
interaction_required İstek, kullanıcı etkileşimi gerektirir.The request requires user interaction. Bir ek kimlik doğrulama adımı veya onay gereklidir.An additional authentication step or consent is required. Gerek olmadan isteği yeniden deneyin prompt=none.Retry the request without prompt=none.

İstek bir erişim belirteciRequest an access token

Bir authorization_code edindiğiniz ve kullanıcı tarafından izin verilen göre kullanmak code için bir access_token istenen kaynağa.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. Göndererek bunu bir POST isteği /token uç noktası:Do this by sending a POST request to the /token endpoint:

// Line breaks for legibility only

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

client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
&code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret=JqQX2PNo9bpM0uEihUPzyrh    // NOTE: Only required for web apps

İpucu

Postman içinde bu isteğin yürütülmesi deneyin!Try executing this request in Postman! (Değiştirmeyi unutmayın code) Postman içinde çalıştırın(Don't forget to replace the code) Run in Postman

ParametreParameter Gerekli/isteğe bağlıRequired/optional AçıklamaDescription
tenant gereklirequired {tenant} İstek yolunda değer, uygulamaya oturum denetimi için kullanılabilir.The {tenant} value in the path of the request can be used to control who can sign into the application. İzin verilen değerler common, organizations, consumersve Kiracı tanımlayıcıları.The allowed values are common, organizations, consumers, and tenant identifiers. Daha fazla ayrıntı için protokolü temel.For more detail, see protocol basics.
client_id gereklirequired (İstemci) uygulama kimliği Azure portalında – uygulama kayıtları uygulamanıza atanan sayfası.The Application (client) ID that the Azure portal – App registrations page assigned to your app.
grant_type gereklirequired Olmalıdır authorization_code yetkilendirme kod akışı için.Must be authorization_code for the authorization code flow.
scope gereklirequired Kapsamları boşlukla ayrılmış listesi.A space-separated list of scopes. İçinde bu oluşturan istenen kapsamlar, eşdeğer veya ilk oluşturan içinde istenen kapsamları bir alt kümesi olmalıdır.The scopes requested in this leg must be equivalent to or a subset of the scopes requested in the first leg. Ardından bu istekte belirtilen kapsamlar birden çok kaynak sunucusu yayılıyorsa, Microsoft kimlik platformu uç nokta ilk kapsamında belirtilen kaynak için bir belirteç döndürür.If the scopes specified in this request span multiple resource server, then the Microsoft identity platform endpoint will return a token for the resource specified in the first scope. Kapsamlar hakkında daha ayrıntılı açıklaması için başvurmak izinler ve onay kapsamları.For a more detailed explanation of scopes, refer to permissions, consent, and scopes.
code gereklirequired Akışın ilk oluşturan satın aldığınız authorization_code.The authorization_code that you acquired in the first leg of the flow.
redirect_uri gereklirequired Authorization_code almak için kullanılan aynı redirect_uri değer.The same redirect_uri value that was used to acquire the authorization_code.
client_secret Web apps için gereklirequired for web apps Uygulama kayıt Portalı'nda uygulamanız için oluşturduğunuz uygulama gizli anahtarı.The application secret that you created in the app registration portal for your app. Client_secrets güvenilir bir şekilde cihazlarda depolanan olamaz çünkü yerel bir uygulamada uygulama gizli anahtarı kullanmamalısınız.You shouldn't use the application secret in a native app because client_secrets can't be reliably stored on devices. Web uygulamaları ve web client_secret güvenli bir şekilde sunucu tarafında depolama yeteneği olan API'leri için zorunludur.It's required for web apps and web APIs, which have the ability to store the client_secret securely on the server side. İstemci gizli anahtarı gönderilmeden önce URL kodlamalı olmalıdır.The client secret must be URL-encoded before being sent.
code_verifier isteğe bağlıoptional Authorization_code elde etmek için kullanılan aynı code_verifier.The same code_verifier that was used to obtain the authorization_code. PKCE bir yetkilendirme kodu verme istekte kullanılan gereklidir.Required if PKCE was used in the authorization code grant request. Daha fazla bilgi için PKCE RFC.For more information, see the PKCE RFC.

Başarılı yanıtSuccessful response

Başarılı bir token yanıt şöyle görünecektir:A successful token response will look like:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "token_type": "Bearer",
    "expires_in": 3599,
    "scope": "https%3A%2F%2Fgraph.microsoft.com%2Fuser.read",
    "refresh_token": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...",
    "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...",
}
ParametreParameter AçıklamaDescription
access_token İstenen erişim belirteci.The requested access token. Uygulama, web API'si gibi güvenli kaynağına kimliğini doğrulamak için bu belirteci kullanabilirsiniz.The app can use this token to authenticate to the secured resource, such as a web API.
token_type Belirteç türü değeri gösterir.Indicates the token type value. Azure AD destekleyen tek taşıyıcı türüdürThe only type that Azure AD supports is Bearer
expires_in Ne kadar süreyle erişim belirteci (saniye olarak) geçerli değil.How long the access token is valid (in seconds).
scope Access_token için geçerli olan kapsamları.The scopes that the access_token is valid for.
refresh_token OAuth 2.0 yenileme belirteci.An OAuth 2.0 refresh token. Bu belirteç kullanabilecek geçerli erişim belirtecinin süresi dolduktan sonra ek erişim belirteçlerini almak.The app can use this token acquire additional access tokens after the current access token expires. Refresh_tokens uzun süreli ve uzun süre için kaynaklarına erişimi korumak için kullanılabilir.Refresh_tokens are long-lived, and can be used to retain access to resources for extended periods of time. Bir erişim belirteci yenileme ile ilgili daha fazla ayrıntı için bkz bölümüne.For more detail on refreshing an access token, refer to the section below.
Not: Yalnızca belirtilen if offline_access kapsam istendi.Note: Only provided if offline_access scope was requested.
id_token A JSON Web Token (JWT).A JSON Web Token (JWT). Uygulama isteği açan kullanıcı hakkında bilgi için bu belirteci parçalarını çözebilen.The app can decode the segments of this token to request information about the user who signed in. Uygulama değerleri önbelleğe ve bunları görüntüleyebilirsiniz, ancak, bunlar üzerinde herhangi bir yetkilendirme veya güvenlik sınırları için doğrulamamalısınız.The app can cache the values and display them, but it should not rely on them for any authorization or security boundaries. İd_tokens hakkında daha fazla bilgi için bkz: id_token reference .For more information about id_tokens, see the id_token reference.
Not: Yalnızca belirtilen if openid kapsam istendi.Note: Only provided if openid scope was requested.

Hata yanıtıError response

Hata yanıtları gibi görünür:Error responses will look like:

{
  "error": "invalid_scope",
  "error_description": "AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope https://foo.microsoft.com/mail.read is not valid.\r\nTrace ID: 255d1aef-8c98-452f-ac51-23d051240864\r\nCorrelation ID: fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\r\nTimestamp: 2016-01-09 02:02:12Z",
  "error_codes": [
    70011
  ],
  "timestamp": "2016-01-09 02:02:12Z",
  "trace_id": "255d1aef-8c98-452f-ac51-23d051240864",
  "correlation_id": "fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7"
}
ParametreParameter AçıklamaDescription
error Oluşan hataları türlerini sınıflandırmak için kullanılabilir ve hatalara tepki vermek için kullanılan bir hata kodu dizesi.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_description Bir geliştirici bir kimlik doğrulama hatası kök nedenini belirlemenize yardımcı olabilecek belirli bir hata iletisi.A specific error message that can help a developer identify the root cause of an authentication error.
error_codes Tanılama'da yardımcı olabilecek özel STS hata kodlarının listesi.A list of STS-specific error codes that can help in diagnostics.
timestamp Hatanın gerçekleştiği zaman.The time at which the error occurred.
trace_id Tanılama'da yardımcı olabilecek talebi için benzersiz bir tanımlayıcı.A unique identifier for the request that can help in diagnostics.
correlation_id Tanılama'da bileşenlerinde yardımcı olabilecek isteği için benzersiz bir tanımlayıcı.A unique identifier for the request that can help in diagnostics across components.

Belirteç uç noktası hataları için hata kodlarıError codes for token endpoint errors

Hata KoduError Code AçıklamaDescription İstemci eylemiClient Action
invalid_request Gerekli parametre eksik gibi protokol hatası.Protocol error, such as a missing required parameter. Düzeltin ve isteği yeniden gönderinFix and resubmit the request
invalid_grant PKCE kodunu doğrulama ve yetkilendirme kodu geçersiz veya süresi doldu.The authorization code or PKCE code verifier is invalid or has expired. Yeni bir istek deneyin /authorize uç nokta ve code_verifier parametresi doğru olduğunu doğrulayın.Try a new request to the /authorize endpoint and verify that the code_verifier parameter was correct.
unauthorized_client Kimliği doğrulanmış istemci bu yetkilendirme verme türünün kullanmaya yetkili değil.The authenticated client isn't authorized to use this authorization grant type. Bu durum genellikle, istemci uygulamanın Azure AD'de kayıtlı değil veya kullanıcının Azure AD kiracısına eklenmez genellikle ortaya çıkar.This usually occurs when the client application isn't registered in Azure AD or isn't added to the user's Azure AD tenant. Uygulama, uygulama yükleme ve Azure AD'ye ekleme yönerge kullanıcıyla isteyebilir.The application can prompt the user with instruction for installing the application and adding it to Azure AD.
invalid_client İstemci kimlik doğrulaması başarısız oldu.Client authentication failed. İstemci kimlik bilgileri geçerli değil.The client credentials aren't valid. Düzeltmek için uygulama yöneticisinin kimlik bilgilerini güncelleştirir.To fix, the application administrator updates the credentials.
unsupported_grant_type Yetkilendirme sunucusu yetkilendirme verme türünü desteklemiyor.The authorization server does not support the authorization grant type. İstek verme türünü değiştirin.Change the grant type in the request. Bu tür yalnızca geliştirme sırasında gerçekleşmesi gerektiğini ve ilk test sırasında algılandı.This type of error should occur only during development and be detected during initial testing.
invalid_resource Hedef kaynak yoksa, Azure AD, bulunamıyor veya düzgün yapılandırılmış olduğundan geçersiz.The target resource is invalid because it does not exist, Azure AD can't find it, or it's not correctly configured. Bu, varsa, kaynak kiracıda yapılandırılmadı gösterir.This indicates the resource, if it exists, has not been configured in the tenant. Uygulama, uygulama yükleme ve Azure AD'ye ekleme yönerge kullanıcıyla isteyebilir.The application can prompt the user with instruction for installing the application and adding it to Azure AD.
interaction_required İstek, kullanıcı etkileşimi gerektirir.The request requires user interaction. Örneğin, bir ek kimlik doğrulama adım gereklidir.For example, an additional authentication step is required. Aynı kaynak isteği yeniden deneyin.Retry the request with the same resource.
temporarily_unavailable Sunucunun geçici olarak isteği işleyemeyecek kadar meşgul.The server is temporarily too busy to handle the request. İsteği yeniden deneyin.Retry the request. İstemci uygulama, kullanıcıya yanıtına bir geçici koşul nedeniyle ertelendi açıklayabilir.The client application might explain to the user that its response is delayed because of a temporary condition.

Erişim belirteci kullanınUse the access token

Başarıyla alındı göre bir access_token, içine ekleyerek Web API'lerine isteklerinde belirteci kullanabilirsiniz Authorization üst bilgi: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:

İpucu

Postman içinde bu isteğin yürütülmesi!Execute this request in Postman! (Değiştir Authorization üstbilgi ilk) Postman içinde çalıştırın(Replace the Authorization header first) Run in Postman

GET /v1.0/me/messages
Host: https://graph.microsoft.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...

Erişim belirteci yenileyinRefresh the access token

Access_tokens kısa süreli ve kaynaklara erişmeye devam etmek için süresi dolduktan sonra bunları yenilemeniz gerekir.Access_tokens are short lived, and you must refresh them after they expire to continue accessing resources. Başka bir göndererek yapabilirsiniz POST isteği /token uç nokta, bu sefer sağlayan refresh_token yerine code.You can do so by submitting another POST request to the /token endpoint, this time providing the refresh_token instead of the code. Yenileme belirteçleri geçerlidir-istemcinizi zaten aldığı tüm izinleri onayı için bu nedenle, bir yenileme belirteci verilen bir talebi scope=mail.read için yeni bir erişim belirteci istemek için kullanılan scope=api://contoso.com/api/UseResource.Refresh tokens are valid for all permissions that your client has already received consent for - thus, a refresh token issued on a request for scope=mail.read can be used to request a new access token for scope=api://contoso.com/api/UseResource.

Yenileme belirteçleri belirtilen ömre sahip değil.Refresh tokens do not have specified lifetimes. Genellikle, yenileme belirteçleri ömrü oldukça uzun olabilir.Typically, the lifetimes of refresh tokens are relatively long. Ancak, bazı durumlarda, yenileme belirteçleri sona, iptal edilen veya istenen eylemi için yeterli ayrıcalıkları yok.However, in some cases, refresh tokens expire, are revoked, or lack sufficient privileges for the desired action. Uygulamanızın beklediğiniz ve işlemek için gereken belirteç yayınında uç noktası tarafından döndürülen hataları doğru.Your application needs to expect and handle errors returned by the token issuance endpoint correctly.

Yeni erişim belirteçlerini almak için kullanıldığında, yenileme belirteçleri iptal olmayan olsa da, eski yenileme belirtecini iptal beklenir.Although refresh tokens aren't revoked when used to acquire new access tokens, you are expected to discard the old refresh token. OAuth 2.0 belirtimi söylüyor: "Yetkilendirme sunucusu, istemci durumu AT gerekir yeni bir yenileme belirteci eski yenileme belirteci vermek ve yeni bir yenileme belirteci ile değiştirin.The OAuth 2.0 spec says: "The authorization server MAY issue a new refresh token, in which case the client MUST discard the old refresh token and replace it with the new refresh token. Yetkilendirme sunucusu eski yenileme belirteci istemciye yeni bir yenileme belirteci kestikten sonra iptal edebilirsiniz."The authorization server MAY revoke the old refresh token after issuing a new refresh token to the client."

// Line breaks for legibility only

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

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

İpucu

Postman içinde bu isteğin yürütülmesi deneyin!Try executing this request in Postman! (Değiştirmeyi unutmayın refresh_token) Postman içinde çalıştırın(Don't forget to replace the refresh_token) Run in Postman

ParametreParameter AçıklamaDescription
tenant gereklirequired {tenant} İstek yolunda değer, uygulamaya oturum denetimi için kullanılabilir.The {tenant} value in the path of the request can be used to control who can sign into the application. İzin verilen değerler common, organizations, consumersve Kiracı tanımlayıcıları.The allowed values are common, organizations, consumers, and tenant identifiers. Daha fazla ayrıntı için protokolü temel.For more detail, see protocol basics.
client_id gereklirequired Uygulama (istemci) kimliği , Azure portalında – uygulama kayıtları uygulamanıza atanan deneyimi.The Application (client) ID that the Azure portal – App registrations experience assigned to your app.
grant_type gereklirequired Olmalıdır refresh_token yetkilendirme kod akışı, bu oluşturan için.Must be refresh_token for this leg of the authorization code flow.
scope gereklirequired Kapsamları boşlukla ayrılmış listesi.A space-separated list of scopes. İçinde bu oluşturan istenen kapsamlar, eşdeğer veya özgün authorization_code isteği oluşturan içinde istenen kapsamları bir alt kümesi olmalıdır.The scopes requested in this leg must be equivalent to or a subset of the scopes requested in the original authorization_code request leg. Ardından bu istekte belirtilen kapsamlar birden çok kaynak sunucusu yayılıyorsa, Microsoft kimlik platformu uç nokta ilk kapsamında belirtilen kaynak için bir belirteç döndürür.If the scopes specified in this request span multiple resource server, then the Microsoft identity platform endpoint will return a token for the resource specified in the first scope. Kapsamlar hakkında daha ayrıntılı açıklaması için başvurmak izinler ve onay kapsamları.For a more detailed explanation of scopes, refer to permissions, consent, and scopes.
refresh_token gereklirequired Akışın ikinci oluşturan satın aldığınız refresh_token.The refresh_token that you acquired in the second leg of the flow.
client_secret Web apps için gereklirequired for web apps Uygulama kayıt Portalı'nda uygulamanız için oluşturduğunuz uygulama gizli anahtarı.The application secret that you created in the app registration portal for your app. Client_secrets güvenilir bir şekilde cihazlarda depolanan olamaz çünkü yerel bir uygulamada kullanılmamalıdır.It should not be used in a native app, because client_secrets can't be reliably stored on devices. Web uygulamaları ve web client_secret güvenli bir şekilde sunucu tarafında depolama yeteneği olan API'leri için zorunludur.It's required for web apps and web APIs, which have the ability to store the client_secret securely on the server side.

Başarılı yanıtSuccessful response

Başarılı bir token yanıt şöyle görünecektir:A successful token response will look like:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "token_type": "Bearer",
    "expires_in": 3599,
    "scope": "https%3A%2F%2Fgraph.microsoft.com%2Fuser.read",
    "refresh_token": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...",
    "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...",
}
ParametreParameter AçıklamaDescription
access_token İstenen erişim belirteci.The requested access token. Uygulama, web API'si gibi güvenli kaynağına kimliğini doğrulamak için bu belirteci kullanabilirsiniz.The app can use this token to authenticate to the secured resource, such as a web API.
token_type Belirteç türü değeri gösterir.Indicates the token type value. Azure AD destekleyen tek taşıyıcı türüdürThe only type that Azure AD supports is Bearer
expires_in Ne kadar süreyle erişim belirteci (saniye olarak) geçerli değil.How long the access token is valid (in seconds).
scope Access_token için geçerli olan kapsamları.The scopes that the access_token is valid for.
refresh_token Yeni bir OAuth 2.0 yenileme belirteci.A new OAuth 2.0 refresh token. Eski yenileme belirteci, yenileme belirteçleri için mümkün olan en kısa sürece geçerli kalır emin olmak için bu yeni alım yenileme belirteci ile değiştirmeniz gerekir.You should replace the old refresh token with this newly acquired refresh token to ensure your refresh tokens remain valid for as long as possible.
Not: Yalnızca belirtilen if offline_access kapsam istendi.Note: Only provided if offline_access scope was requested.
id_token Bir işaretsiz JSON Web Token (JWT).An unsigned JSON Web Token (JWT). Uygulama isteği açan kullanıcı hakkında bilgi için bu belirteci parçalarını çözebilen.The app can decode the segments of this token to request information about the user who signed in. Uygulama değerleri önbelleğe ve bunları görüntüleyebilirsiniz, ancak, bunlar üzerinde herhangi bir yetkilendirme veya güvenlik sınırları için doğrulamamalısınız.The app can cache the values and display them, but it should not rely on them for any authorization or security boundaries. İd_tokens hakkında daha fazla bilgi için bkz: id_token reference .For more information about id_tokens, see the id_token reference.
Not: Yalnızca belirtilen if openid kapsam istendi.Note: Only provided if openid scope was requested.

Hata yanıtıError response

{
  "error": "invalid_scope",
  "error_description": "AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope https://foo.microsoft.com/mail.read is not valid.\r\nTrace ID: 255d1aef-8c98-452f-ac51-23d051240864\r\nCorrelation ID: fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\r\nTimestamp: 2016-01-09 02:02:12Z",
  "error_codes": [
    70011
  ],
  "timestamp": "2016-01-09 02:02:12Z",
  "trace_id": "255d1aef-8c98-452f-ac51-23d051240864",
  "correlation_id": "fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7"
}
ParametreParameter AçıklamaDescription
error Oluşan hataları türlerini sınıflandırmak için kullanılabilir ve hatalara tepki vermek için kullanılan bir hata kodu dizesi.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_description Bir geliştirici bir kimlik doğrulama hatası kök nedenini belirlemenize yardımcı olabilecek belirli bir hata iletisi.A specific error message that can help a developer identify the root cause of an authentication error.
error_codes Tanılama'da yardımcı olabilecek özel STS hata kodlarının listesi.A list of STS-specific error codes that can help in diagnostics.
timestamp Hatanın gerçekleştiği zaman.The time at which the error occurred.
trace_id Tanılama'da yardımcı olabilecek talebi için benzersiz bir tanımlayıcı.A unique identifier for the request that can help in diagnostics.
correlation_id Tanılama'da bileşenlerinde yardımcı olabilecek isteği için benzersiz bir tanımlayıcı.A unique identifier for the request that can help in diagnostics across components.

Hata kodlarını ve önerilen istemci eylemi açıklaması için bkz: belirteç uç noktası hataları için hata kodlarını.For a description of the error codes and the recommended client action, see Error codes for token endpoint errors.