Microsoft kimlik platformu openID Bağlan

OpenID Bağlan (OIDC), ek kimlik doğrulama protokolü olarak kullanılmak üzere OAuth 2.0 yetkilendirme protokolunu genişletir. Kimlik belirteci olarak adlandırılan bir güvenlik belirteci kullanarak OAuth özellikli uygulamalarınız arasında çoklu oturum açmayı (SSO) etkinleştirmek için OIDC'yi kullanabilirsiniz.

OIDC'nin tam belirtimini OpenID Foundation'ın Web sitesinde OpenID Bağlan Core 1.0 belirtiminde bulabilirsiniz.

Protokol akışı: Oturum açma

Aşağıdaki diyagramda temel OpenID Bağlan oturum açma akışı gösterilmektedir. Akıştaki adımlar makalenin sonraki bölümlerinde daha ayrıntılı olarak açıklanmıştır.

Swim-lane diagram showing the OpenID Connect protocol's sign-in flow.

Kimlik belirteçlerini etkinleştirme

OpenID Bağlan tarafından tanıtılan kimlik belirteci, istemci uygulaması kullanıcı kimlik doğrulaması sırasında bir tane istediğinde yetkilendirme sunucusu, Microsoft kimlik platformu tarafından verilir. Kimlik belirteci, bir istemci uygulamasının kullanıcının kimliğini doğrulamasını ve bunlarla ilgili diğer bilgileri (talepleri) almasına olanak tanır.

kimlik belirteçleri, Microsoft kimlik platformu kayıtlı bir uygulama için varsayılan olarak verilmez. Bir uygulama için kimlik belirteçleri aşağıdaki yöntemlerden biri kullanılarak etkinleştirilir:

  1. Microsoft Entra yönetim merkezinde oturum açın.
  2. Kimlik>Uygulamaları'na> göz atın Uygulama kayıtları<> Uygulam>>Kimlik Doğrulamanız.
  3. Platform yapılandırmaları'nın altında Platform ekle'yi seçin.
  4. Açılan bölmede uygulamanız için uygun platformu seçin. Örneğin, web uygulaması için Web'i seçin.
  5. Yeniden yönlendirme URI'leri'nin altında uygulamanızın yeniden yönlendirme URI'sini ekleyin. Örneğin, https://localhost:8080/.
  6. Örtük verme ve karma akışlar'ın altında kimlik belirteçleri (örtük ve karma akışlar için kullanılır) onay kutusunu seçin.

Veya:

  1. Kimlik>Uygulamaları> Uygulama kayıtları<> Uygula bildirimini>> seçin.
  2. true Uygulama kaydının uygulama bildiriminde olarak ayarlayınoauth2AllowIdTokenImplicitFlow.

Uygulamanız için kimlik belirteçleri etkinleştirilmemişse ve bir belirteç istenirse, Microsoft kimlik platformu aşağıdakine benzer bir unsupported_response hata döndürür:

Bu istemci için 'response_type' giriş parametresi için sağlanan değere izin verilmez. Beklenen değer 'code'.

kimlik belirtecinin belirtilmesiresponse_type, makalenin devamında Oturum açma isteğini gönderme bölümünde açıklanmıştır.id_token

OpenID yapılandırma belgesini getirme

Microsoft kimlik platformu gibi OpenID sağlayıcıları, sağlayıcının OIDC uç noktalarını, desteklenen talepleri ve diğer meta verileri içeren genel olarak erişilebilir bir uç noktada bir OpenID Sağlayıcı Yapılandırma Belgesi sağlar. İstemci uygulamaları, kimlik doğrulaması için kullanılacak URL'leri ve kimlik doğrulama hizmetinin genel imzalama anahtarlarını bulmak için meta verileri kullanabilir.

Kimlik doğrulama kitaplıkları, kimlik doğrulama URL'lerini, sağlayıcının genel imzalama anahtarlarını ve diğer hizmet meta verilerini bulmak için kullandıkları OpenID yapılandırma belgesinin en yaygın tüketicileridir. Uygulamanızda bir kimlik doğrulama kitaplığı kullanılıyorsa, büyük olasılıkla OpenID yapılandırma belgesi uç noktasından gelen istekleri ve yanıtları el ile kodlamanız gerekmez.

Uygulamanızın OpenID yapılandırma belgesi URI'sini bulma

Microsoft Entra Id'deki her uygulama kaydı, OpenID yapılandırma belgesine hizmet veren genel olarak erişilebilir bir uç nokta sağlanır. Yapılandırma belgesinin uygulamanızın uç noktasının URI'sini belirlemek için, uygulama kaydınızın yetkili URL'sine iyi bilinen OpenID yapılandırma yolunu ekleyin.

  • İyi bilinen yapılandırma belgesi yolu: /.well-known/openid-configuration
  • Yetkili URL'si: https://login.microsoftonline.com/{tenant}/v2.0

değeri {tenant} , aşağıdaki tabloda gösterildiği gibi uygulamanın oturum açma hedef kitlesine göre değişir. Yetkili URL'si de bulut örneğine göre değişir.

Value Açıklama
common Hem kişisel Microsoft hesabı hem de Microsoft Entra Id'den iş veya okul hesabı olan kullanıcılar uygulamada oturum açabilir.
organizations Uygulamada yalnızca Microsoft Entra Id'den iş veya okul hesabı olan kullanıcılar oturum açabilir.
consumers Uygulamada yalnızca kişisel Microsoft hesabı olan kullanıcılar oturum açabilir.
8eaef023-2b34-4da1-9baa-8bc8c9d6a490 veya contoso.onmicrosoft.com Uygulamada yalnızca belirli bir Microsoft Entra kiracısından (iş veya okul hesabı olan dizin üyeleri veya kişisel Microsoft hesabı olan dizin konukları) kullanıcılar oturum açabilir.

Değer, Microsoft Entra kiracısının etki alanı adı veya GUID biçimindeki kiracı kimliği olabilir. yerine tüketici kiracı GUID'sini 9188040d-6c67-4c5b-b112-36a304b66dadconsumersde kullanabilirsiniz.

İpucu

Kişisel Microsoft hesapları için veya yetkilisini common kullanırken, tüketen kaynak uygulamasının signInAudience'a uygun olarak bu tür hesapları destekleyecek şekilde yapılandırılması gerektiğini consumers unutmayın.

OIDC yapılandırma belgesini Microsoft Entra yönetim merkezinde bulmak için Microsoft Entra yönetim merkezinde oturum açın ve ardından:

  1. Uygulama Uç Noktalarınız>> Uygulama kayıtları>< Kimlik>Uygulamaları'na >göz atın.
  2. OpenID Bağlan meta veri belgesi altında URI'yi bulun.

Örnek isteği

Aşağıdaki istek, Yetkilinin Azure genel bulutundaki common OpenID yapılandırma belgesi uç noktasından OpenID yapılandırma meta verilerini alır:

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

İpucu

Deneyin! Bir uygulamanın common yetkilisinin OpenID yapılandırma belgesini görmek için adresine https://login.microsoftonline.com/common/v2.0/.well-known/openid-configurationgidin.

Örnek yanıt

Yapılandırma meta verileri, aşağıdaki örnekte gösterildiği gibi JSON biçiminde döndürülür (kısa olması için kesilir). JSON yanıtında döndürülen meta veriler OpenID Bağlan 1.0 bulma belirtiminde ayrıntılı olarak açıklanmıştır.

{
  "authorization_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize",
  "token_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token",
  "token_endpoint_auth_methods_supported": [
    "client_secret_post",
    "private_key_jwt"
  ],
  "jwks_uri": "https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys",
  "userinfo_endpoint": "https://graph.microsoft.com/oidc/userinfo",
  "subject_types_supported": [
      "pairwise"
  ],
  ...
}

Oturum açma isteğini gönderme

Bir kullanıcının kimliğini doğrulamak ve uygulamanızda kullanmak üzere bir kimlik belirteci istemek için kullanıcı aracısını Microsoft kimlik platformu /authorize uç noktasına yönlendirin. İstek, OAuth 2.0 yetkilendirme kodu akışının ilk ayağına benzer ancak şu ayrımlara sahiptir:

  • openid Kapsamı parametresine scope ekleyin.
  • parametresinde response_type belirtinid_token.
  • parametresini nonce ekleyin.

Örnek oturum açma isteği (yalnızca okunabilirlik için dahil edilen satır sonları):

GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&response_type=id_token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=form_post
&scope=openid
&state=12345
&nonce=678910
Parametre Koşul Açıklama
tenant Gerekli Uygulamada kimlerin {tenant} oturum açabileceğini denetlemek için isteğin yolundaki değeri kullanabilirsiniz. İzin verilen değerler , organizations, consumersve kiracı tanımlayıcılarıdırcommon. Daha fazla bilgi için bkz . protokolle ilgili temel bilgiler. Kritik olarak, bir kullanıcıyı bir kiracıdan başka bir kiracıya imzaladığınız konuk senaryoları için, bu kullanıcıyı kaynak kiracıda doğru şekilde oturum açmak için kiracı tanımlayıcısını sağlamanız gerekir .
client_id Zorunlu Microsoft Entra yönetim merkezinin uygulamanıza atanmış Uygulama kayıtları deneyimi olan Uygulama (istemci) kimliği.
response_type Zorunlu OpenID Bağlan oturum açma için dahil id_token edilmelidir.
redirect_uri Önerilir Kimlik doğrulama yanıtlarının uygulamanız tarafından gönderilip alınabildiği uygulamanızın yeniden yönlendirme URI'si. URL ile kodlanmış olması dışında portalda kaydettiğiniz yeniden yönlendirme URI'lerinden biriyle tam olarak eşleşmelidir. Mevcut değilse, uç nokta kullanıcıyı geri göndermek için rastgele kaydedilmiş redirect_uri bir tane seçer.
scope Zorunlu Boşlukla ayrılmış kapsam listesi. OpenID Bağlan için kapsamı içermesi gerekir ve bu kapsamopenid, onay kullanıcı arabiriminde Oturum açın iznine çevrilir. Onay istemek için bu isteğe başka kapsamlar da ekleyebilirsiniz.
nonce Zorunlu Uygulamanız tarafından oluşturulan ve kimlik belirteci isteğinde gönderilen değer. Aynı nonce değer, Microsoft kimlik platformu tarafından uygulamanıza döndürülen kimlik belirtecine eklenir. Belirteç yeniden yürütme saldırılarını azaltmak için, uygulamanız kimlik belirtecindeki değerin nonce belirteci talep ederken gönderdiği değerle aynı olduğunu doğrulamalıdır. Değer genellikle benzersiz, rastgele bir dizedir.
response_mode Önerilir Sonuçta elde edilen yetkilendirme kodunu uygulamanıza geri göndermek için kullanılacak yöntemi belirtir. form_post veya fragment olabilir. Web uygulamaları için, belirteçlerin uygulamanıza en güvenli aktarımını sağlamak için kullanmanızı response_mode=form_postöneririz.
state Önerilir İstekte bulunan ve belirteç yanıtında da döndürülecek bir değer. İstediğiniz herhangi bir içeriğin dizesi olabilir. Rastgele oluşturulan benzersiz bir değer genellikle siteler arası istek sahteciliği saldırılarını önlemek için kullanılır. Durum, kullanıcının kimlik doğrulama isteği gerçekleşmeden önceki durumuyla ilgili bilgileri (kullanıcının açık olduğu sayfa veya görünüm gibi) kodlamak için de kullanılır.
prompt İsteğe bağlı Gerekli kullanıcı etkileşiminin türünü gösterir. Şu anda tek geçerli değerler , , noneconsentve select_accountdeğerleridirlogin. Talep, prompt=login kullanıcıyı bu istekte kimlik bilgilerini girmeye zorlar ve bu da çoklu oturum açmayı olumsuzlar. prompt=none parametresi tam tersidir ve hangi kullanıcının oturum açması gerektiğini belirtmek için ile login_hint eşleştirilmelidir. Bu parametreler, kullanıcıya hiçbir etkileşimli istem sunulmamasını sağlar. İstek çoklu oturum açma yoluyla sessizce tamamlanamazsa, Microsoft kimlik platformu bir hata döndürür. Bunun nedenleri arasında oturum açmış kullanıcı olmaması, ipucu verilen kullanıcının oturum açmaması veya birden çok kullanıcının oturum açmasının yanı sıra hiçbir ipucu sağlanmamıştır. Talep, prompt=consent kullanıcı oturum açtıktan sonra OAuth onayı iletişim kutusunu tetikler. İletişim kutusu kullanıcıdan uygulamaya izin vermesini ister. Son olarak, select_account kullanıcıya sessiz SSO'nun yetkisini veren ancak kullanıcının kimlik bilgisi girişi gerektirmeden oturum açmayı amaçladığı hesabı seçmesine izin veren bir hesap seçicisi gösterir. hem hem select_accountde login_hint kullanamazsınız.
login_hint İsteğe bağlı Kullanıcı adını önceden biliyorsanız, kullanıcının oturum açma sayfasının kullanıcı adı ve e-posta adresi alanını önceden doldurmak için bu parametreyi kullanabilirsiniz. Genellikle, uygulamalar önceden bir oturum açmadan isteğe bağlı talebi ayıkladıktan sonra yeniden kimlik doğrulaması sırasında bu parametreyi login_hintkullanır.
domain_hint İsteğe bağlı Federasyon dizinindeki kullanıcının bölgesi. Bu, daha kolay bir kullanıcı deneyimi için kullanıcının oturum açma sayfasından geçtiği e-posta tabanlı bulma işlemini atlar. AD FS gibi bir şirket içi dizin aracılığıyla birleştirilmiş kiracılar için, bu durum genellikle mevcut oturum açma oturumu nedeniyle sorunsuz bir oturum açma işlemine neden olur.

Bu noktada kullanıcıdan kimlik bilgilerini girmesi ve kimlik doğrulamasını tamamlaması istenir. Microsoft kimlik platformu, kullanıcının sorgu parametresinde scope belirtilen izinlere onay vermiş olduğunu doğrular. Kullanıcı bu izinlerden hiçbirini onaylamadıysa, Microsoft kimlik platformu kullanıcıdan gerekli izinleri onaylamasını ister. İzinler, onay ve çok kiracılı uygulamalar hakkında daha fazla bilgi edinebilirsiniz.

Kullanıcı kimlik doğrulaması yaptıktan ve onay verdikten sonra, Microsoft kimlik platformu parametresinde belirtilen yöntemi kullanarak belirtilen yeniden yönlendirme URI'sinde response_mode uygulamanıza bir yanıt döndürür.

Başarılı yanıt

Kullandığınızda response_mode=form_post başarılı bir yanıt şuna benzer:

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNB...&state=12345
Parametre Açıklama
id_token Uygulamanın istediği kimlik belirteci. kullanıcının kimliğini doğrulamak ve kullanıcıyla oturum başlatmak için parametresini kullanabilirsiniz id_token . Kimlik belirteçleri ve içerikleri hakkında daha fazla bilgi için bkz . Kimlik belirteci başvurusu.
state İstekte bir state parametre varsa, yanıtta aynı değer görünmelidir. Uygulama, istek ve yanıttaki durum değerlerinin aynı olduğunu doğrulamalıdır.

Hata yanıtı

Hata yanıtları, uygulamanın bunları işleyebilmesi için yeniden yönlendirme URI'sine de gönderilebilir, örneğin:

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

error=access_denied&error_description=the+user+canceled+the+authentication
Parametre Açıklama
error Oluşan hata türlerini sınıflandırmak ve hatalara tepki vermek için kullanabileceğiniz bir hata kodu dizesi.
error_description Kimlik doğrulama hatasının kök nedenini belirlemenize yardımcı olabilecek belirli bir hata iletisi.

Yetkilendirme uç noktası hataları için hata kodları

Aşağıdaki tabloda, hata yanıtının error parametresinde döndürülebilecek hata kodları açıklanmaktadır:

Hata kodu Açıklama İstemci eylemi
invalid_request Gerekli parametre eksik gibi protokol hatası. İsteği düzeltin ve yeniden gönderin. Uygulama testi sırasında bu geliştirme hatası yakalanmalıdır.
unauthorized_client İstemci uygulaması yetkilendirme kodu isteyemez. İstemci uygulaması Microsoft Entra Kimliği'ne kaydedilmediğinde veya kullanıcının Microsoft Entra kiracısına eklenmediğinde bu hata oluşabilir. Uygulama, kullanıcıdan uygulamayı yükleme ve Microsoft Entra Kimliği'ne ekleme yönergelerini isteyebilir.
access_denied Kaynak sahibi onayı reddetti. İstemci uygulaması, kullanıcı onay vermediği sürece devam edilemeyeceklerini kullanıcıya bildirebilir.
unsupported_response_type Yetkilendirme sunucusu istekteki yanıt türünü desteklemiyor. İsteği düzeltin ve yeniden gönderin. Uygulama testi sırasında bu geliştirme hatası yakalanmalıdır.
server_error Sunucu beklenmeyen bir hatayla karşılaştı. İsteği yeniden deneyin. Bu hatalar geçici koşullardan kaynaklanabilir. İstemci uygulaması kullanıcıya geçici bir hata nedeniyle yanıtının geciktirildiğini açıklayabilir.
temporarily_unavailable Sunucu geçici olarak isteği işleyemeyecek kadar meşgul. İsteği yeniden deneyin. İstemci uygulaması kullanıcıya yanıtının geçici bir koşul nedeniyle geciktirildiğini açıklayabilir.
invalid_resource Hedef kaynak mevcut olmadığından, Microsoft Entra Kimliği bulamadığını veya yanlış yapılandırıldığından geçersiz. Bu hata, kaynağın varsa kiracıda yapılandırılmadığını gösterir. Uygulama, kullanıcıdan uygulamayı yükleme ve Microsoft Entra Id'ye ekleme yönergelerini isteyebilir.

Kimlik belirtecini doğrulama

Uygulamanızda kimlik belirteci almak her zaman kullanıcının kimliğini tam olarak doğrulamak için yeterli olmayabilir. Ayrıca kimlik belirtecinin imzasını ve taleplerini uygulamanızın gereksinimlerine göre doğrulamanız gerekebilir. Tüm OpenID sağlayıcıları gibi Microsoft kimlik platformu kimlik belirteçleri de ortak anahtar şifrelemesi kullanılarak imzalanan JSON Web Belirteçleridir (JWT).

Kimlik belirteçlerini yetkilendirme için kullanan web uygulamaları ve web API'leri, bu tür uygulamalar verilere erişim sağladığından bunları doğrulamalıdır. Ancak diğer uygulama türleri kimlik belirteci doğrulamasından yararlanamayabilir. Örneğin yerel ve tek sayfalı uygulamalar (SPA' lar), cihaz veya tarayıcıya fiziksel erişimi olan herhangi bir varlık doğrulamayı atlayabileceğinden kimlik belirteci doğrulamasından nadiren yararlanabilir.

Belirteç doğrulamayı atlamanın iki örneği şunlardır:

  • Cihaza yönelik ağ trafiğini değiştirerek sahte belirteçler veya anahtarlar sağlama
  • Uygulamada hata ayıklama ve program yürütme sırasında doğrulama mantığının üzerine adımlama.

Uygulamanızda kimlik belirteçlerini doğrularsanız, bunu el ile yapmamanızı öneririz. Bunun yerine, belirteçleri ayrıştırmak ve doğrulamak için bir belirteç doğrulama kitaplığı kullanın. Belirteç doğrulama kitaplıkları çoğu geliştirme dili, çerçeve ve platform için kullanılabilir.

Kimlik belirtecinde doğrulanması gerekenler

Kimlik belirtecinin imzasını doğrulamaya ek olarak, kimlik belirtecini doğrulama bölümünde açıklandığı gibi çeşitli taleplerini doğrulamanız gerekir. Ayrıca bkz . Anahtar geçişi imzalama hakkında önemli bilgiler.

Diğer birçok doğrulama yaygındır ve aşağıdakiler de dahil olmak üzere uygulama senaryosuna göre farklılık gösterir:

  • Kullanıcının/kuruluşun uygulamaya kaydolmasını sağlama.
  • Kullanıcının uygun yetkilendirme/ayrıcalıklara sahip olmasını sağlama
  • Çok faktörlü kimlik doğrulaması gibi belirli bir kimlik doğrulaması gücünün oluştuğundan emin olun.

Kimlik belirtecini doğruladıktan sonra kullanıcıyla oturum başlatabilir ve belirtecin taleplerindeki bilgileri uygulama kişiselleştirme, görüntüleme veya verilerini depolama amacıyla kullanabilirsiniz.

Protokol diyagramı: Erişim belirteci alma

Birçok uygulamanın yalnızca bir kullanıcıda oturum açması değil, aynı zamanda kullanıcı adına web API'si gibi korumalı bir kaynağa erişmesi de gerekir. Bu senaryo, kullanıcının kimliğini doğrulamak için bir kimlik belirteci almak için OpenID Bağlan ve korumalı bir kaynak için erişim belirteci almak için OAuth 2.0'ı birleştirir.

Tam OpenID Bağlan oturum açma ve belirteç alma akışı şu diyagrama benzer:

OpenID Connect protocol: Token acquisition

UserInfo uç noktası için erişim belirteci alma

Kimlik belirtecine ek olarak, kimliği doğrulanmış kullanıcının bilgileri de OIDC UserInfo uç noktasında kullanılabilir hale gelir.

OIDC UserInfo uç noktasına erişim belirteci almak için oturum açma isteğini burada açıklandığı gibi değiştirin:

// Line breaks are for legibility only.

GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=535fb089-9ff3-47b6-9bfb-4f1264799865        // Your app registration's Application (client) ID
&response_type=id_token%20token                       // Requests both an ID token and access token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F       // Your application's redirect URI (URL-encoded)
&response_mode=form_post                              // 'form_post' or 'fragment'
&scope=openid+profile+email                           // 'openid' is required; 'profile' and 'email' provide information in the UserInfo endpoint as they do in an ID token. 
&state=12345                                          // Any value - provided by your app
&nonce=678910                                         // Any value - provided by your app

Uygulamanıza erişim belirteci almak için yetkilendirme kodu akışını, cihaz kodu akışını veya yerine yenileme belirteciniresponse_type=token kullanabilirsiniz.

Başarılı belirteç yanıtı

kullanarak response_mode=form_postbaşarılı bir yanıt:

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
 access_token=eyJ0eXAiOiJKV1QiLCJub25jZSI6I....
 &token_type=Bearer
 &expires_in=3598
 &scope=email+openid+profile
 &id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI....
 &state=12345

Yanıt parametreleri, bunları almak için kullanılan akış ne olursa olsun aynı anlama gelir.

Parametre Açıklama
access_token UserInfo uç noktasını çağırmak için kullanılacak belirteç.
token_type Her zaman "Taşıyıcı"
expires_in Erişim belirtecinin süresinin saniyeler içinde dolmasına ne kadar süreyle devam eder?
scope Erişim belirtecinde verilen izinler. UserInfo uç noktası Microsoft Graph'ta barındırılıyor olduğundan scope , uygulamaya daha önce verilmiş olan diğer kişileri (örneğin, User.Read) içerebilir.
id_token Uygulamanın istediği kimlik belirteci. Kimlik belirtecini kullanarak kullanıcının kimliğini doğrulayabilir ve kullanıcıyla oturum başlatabilirsiniz. Kimlik belirteçleri ve bunların içeriği hakkında daha fazla ayrıntıyı kimlik belirteci başvurusunda bulabilirsiniz.
state İstekte bir durum parametresi varsa, yanıtta aynı değer görünmelidir. Uygulama, istek ve yanıttaki durum değerlerinin aynı olduğunu doğrulamalıdır.

Uyarı

Bu örnekteki belirteçler de dahil olmak üzere sahip olmadığınız API'lerin belirteçlerini kodunuzda doğrulamayı veya okumayı denemeyin. Microsoft hizmetleri belirteçleri JWT olarak doğrulanmayacak özel bir biçim kullanabilir ve tüketici (Microsoft hesabı) kullanıcıları için de şifrelenebilir. Belirteçleri okumak yararlı bir hata ayıklama ve öğrenme aracı olsa da, kodunuzda buna bağımlılıkları almayın veya denetlediğiniz bir API için olmayan belirteçlerle ilgili belirli bilgileri varsaymayın.

Hata yanıtı

Hata yanıtları, uygulamanın bunları uygun şekilde işleyebilmesi için yeniden yönlendirme URI'sine de gönderilebilir:

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

error=access_denied&error_description=the+user+canceled+the+authentication
Parametre Açıklama
error Oluşan hata türlerini sınıflandırmak ve hatalara tepki vermek için kullanabileceğiniz bir hata kodu dizesi.
error_description Kimlik doğrulama hatasının kök nedenini belirlemenize yardımcı olabilecek belirli bir hata iletisi.

Olası hata kodlarının ve önerilen istemci yanıtlarının açıklaması için bkz . Yetkilendirme uç noktası hataları için hata kodları.

Yetkilendirme kodunuz ve kimlik belirtecimiz olduğunda, kullanıcının oturumunu açabilir ve onun adına erişim belirteçleri alabilirsiniz. Kullanıcıyı oturum açmak için kimlik belirtecini doğrulama belirteçlerinde açıklandığı gibi doğrulamanız gerekir. Erişim belirteçlerini almak için OAuth kod akışı belgelerinde açıklanan adımları izleyin.

UserInfo uç noktasını çağırma

Bu belirteçle UserInfo uç noktasını çağırmayı öğrenmek için UserInfo belgelerini gözden geçirin.

Oturum kapatma isteği gönderme

Bir kullanıcının oturumunu kapatmak için şu işlemlerin ikisini de gerçekleştirin:

  • Kullanıcının kullanıcı aracısını Microsoft kimlik platformu oturum kapatma URI'sine yeniden yönlendirme
  • Uygulamanızın tanımlama bilgilerini temizleyin veya uygulamanızda kullanıcının oturumunu başka bir şekilde sonlandırın.

herhangi bir işlemi gerçekleştiremezseniz, kullanıcı kimliğinin doğrulanmış olarak kalabilir ve uygulamanızı bir sonraki kullanışında oturum açması istenmeyebilir.

Kullanıcı aracısını end_session_endpoint OpenID Bağlan yapılandırma belgesinde gösterildiği gibi öğesine yeniden yönlendirin. hem end_session_endpoint HTTP GET hem de POST isteklerini destekler.

GET https://login.microsoftonline.com/common/oauth2/v2.0/logout?
post_logout_redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
Parametre Koşul Açıklama
post_logout_redirect_uri Önerilir Kullanıcının başarıyla oturumu kapatıldıktan sonra yeniden yönlendirildiği URL. Parametresi dahil değilse, kullanıcıya Microsoft kimlik platformu tarafından oluşturulan genel bir ileti gösterilir. Bu URL, uygulama kayıt portalında uygulamanız için kaydedilen yeniden yönlendirme URI'lerinden biriyle eşleşmelidir.
logout_hint İsteğe bağlı Kullanıcıdan bir hesap seçmesini istemeden oturumu kapatmanın gerçekleşmesini sağlar. kullanmak logout_hintiçin, istemci uygulamanızda isteğe bağlı talebi etkinleştirinlogin_hint ve isteğe bağlı talebin login_hint değerini parametre olarak logout_hint kullanın. Parametrenin değeri logout_hint olarak UPN'leri veya telefon numaralarını kullanmayın.

Not

Oturum başarıyla kapatıldıktan sonra etkin oturumlar devre dışı olarak ayarlanır. Oturumu kapatılan kullanıcı için geçerli bir Birincil Yenileme Belirteci (PRT) varsa ve yeni bir oturum açma işlemi yürütülürse, SSO kesintiye uğrar ve kullanıcı hesap seçici ile bir istem görür. Seçilen seçenek PRT'ye başvuran bağlı hesapsa, yeni kimlik bilgileri eklemeye gerek kalmadan oturum açma işlemi otomatik olarak devam eder.

Çoklu oturum kapatma

kullanıcıyı öğesine end_session_endpointyönlendirdiğinizde, Microsoft kimlik platformu kullanıcının oturumunu tarayıcıdan temizler. Ancak, kullanıcı kimlik doğrulaması için Microsoft hesaplarını kullanan diğer uygulamalarda oturum açmış olabilir. Bu uygulamaların aynı anda oturumu kapatmasını sağlamak için, Microsoft kimlik platformu kullanıcının şu anda oturum açtığı tüm uygulamaların kayıtlısına LogoutUrl bir HTTP GET isteği gönderir. Uygulamalar, kullanıcıyı tanımlayan tüm oturumları temizleyerek ve bir 200 yanıt döndürerek bu isteğe yanıt vermelidir. Uygulamanızda çoklu oturumu kapatmayı desteklemek istiyorsanız, uygulamanızın kodunda böyle bir LogoutUrl uygulamanız gerekir. uygulamasını uygulama kayıt portalından ayarlayabilirsiniz LogoutUrl .

Sonraki adımlar