Microsoft kimlik platformu üzerinde OpenID Connect
OpenID Connect (OIDC), OAuth 2.0 yetkilendirme protokolunu başka bir kimlik doğrulama protokolü olarak kullanmak üzere 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 için tam belirtim OpenID Foundation'ın web sitesinde OpenID Connect Core 1.0 belirtiminde mevcuttur.
Protokol akışı: Oturum açma
Aşağıdaki diyagramda temel OpenID Connect oturum açma akışı gösterilmektedir. Akıştaki adımlar makalenin sonraki bölümlerinde daha ayrıntılı olarak açıklanmıştır.
Kimlik belirteçlerini etkinleştirme
OpenID Connect 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:
- Microsoft Entra yönetim merkezinde oturum açın.
- Kimlik>Uygulamaları'na> göz atın Uygulama kayıtları<> Uygulam>>Kimlik Doğrulamanız.
- Platform yapılandırmaları'nın altında Platform ekle'yi seçin.
- Açılan bölmede uygulamanız için uygun platformu seçin. Örneğin, web uygulaması için Web'i seçin.
- Yeniden yönlendirme URI'leri'nin altında uygulamanızın yeniden yönlendirme URI'sini ekleyin. Örneğin,
https://localhost:8080/
. - Ö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:
- Kimlik>Uygulamaları> Uygulama kayıtları<> Uygula bildirimini>> seçin.
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. |
Directory (tenant) ID 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. |
İ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:
- Uygulama Uç Noktalarınız>> Uygulama kayıtları>< Kimlik>Uygulamaları'na >göz atın.
- OpenID Connect 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 Connect 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ı parametresinescope
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=00001111-aaaa-2222-bbbb-3333cccc4444
&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 , consumers ve 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 Connect 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 Connect için kapsamı içermelidir. Bu kapsamopenid , onay kullanıcı arabiriminde Oturum açın iznine çevrilmelidir. 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ülen 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 , , none consent ve select_account değ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 bir hesap seçicisi gösterir ve çoklu oturum kapatmayı olumsuz olarak gösterir, ancak kullanıcının kimlik bilgisi girişi gerektirmeden hangi hesapla oturum açmayı planladığını seçmesine izin verir. hem hem select_account de 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_hint kullanı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), 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 olma.
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 Connect'i ve korumalı bir kaynak için erişim belirteci almak için OAuth 2.0'ı birleştirir.
Tam OpenID Connect oturum açma ve belirteç alma akışı şu diyagrama benzer:
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=00001111-aaaa-2222-bbbb-3333cccc4444 // 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 belirtecini response_type=token
kullanabilirsiniz.
Başarılı belirteç yanıtı
kullanarak response_mode=form_post
baş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.
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 aşağıdaki 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önlendirin.
- Uygulamanızın tanımlama bilgilerini temizleyin veya uygulamanızda kullanıcının oturumunu sonlandırın.
Bu işlemlerden herhangi birini gerçekleştiremezseniz, kullanıcı kimliği doğrulanmış olarak kalabilir ve uygulamanızı bir sonraki kullanışında oturum açması istenmeyebilir.
OpenID Connect yapılandırma belgesinde gösterildiği gibi kullanıcı aracısını end_session_endpoint
öğ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_hint için, istemci uygulamanızda isteğe bağlı talebi etkinleştirin login_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, çoklu oturum kapatma 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ı bir uygulamadaki öğesine end_session_endpoint
yeniden yönlendirdiğinizde, Microsoft kimlik platformu bu uygulama için kullanıcı oturumunu sonlandırır. Ancak, kullanıcı kimlik doğrulaması için aynı Microsoft hesaplarını kullanan diğer uygulamalarda oturum açmış olabilir.
Bir kullanıcı bu dizinde kayıtlı birden çok web veya SPA uygulamasında oturum açtığında (kiracı olarak da bilinir) çoklu oturum kapatma, bu kullanıcının uygulamalardan birinde oturumunu kapatarak tüm uygulamalardan anında oturumunu kapatmasına olanak tanır.
Entra uygulamanızda çoklu oturum kapatmayı etkinleştirmek için OpenID Connect ön kanal oturumu kapatma özelliğini kullanmanız gerekir. Bu özellik, bir uygulamanın kullanıcının oturumu kapattığını diğer uygulamalara bildirmesine olanak tanır. Kullanıcı bir uygulamanın oturumunu kapattığında, Microsoft kimlik platformu kullanıcının şu anda oturum açtığı her uygulamanın ön kanal oturumu kapatma URL'sine bir HTTP GET isteği gönderir.
Bu uygulamaların, çoklu oturumu kapatma işleminin başarılı olması için aşağıdaki iki eylemi gerçekleştirerek bu isteğe yanıt vermesi gerekir:
- Kullanıcıyı tanımlayan tüm oturumları temizleyin.
- Uygulamalar, kullanıcıyı tanımlayan tüm oturumları temizleyerek ve bir
200
yanıt döndürerek bu isteğe yanıt vermelidir.
Ön kanal oturumu kapatma URL'si nedir?
Ön kanal oturumu kapatma URL'si, web veya SPA uygulamanızın Entra kimlik doğrulama sunucusundan oturumu kapatma isteğini aldığı ve çoklu oturum kapatma işlevi gerçekleştirdiği yerdir. Her uygulamanın bir ön kanal oturumu kapatma URL'si vardır.
Ön kanal oturumu kapatma URL'sini ne zaman ayarlamalısınız?
Siz veya geliştiriciniz bir uygulama için çoklu oturum kapatmanın gerekli olduğunu belirlediyseniz, bu uygulamanın uygulama kaydı için ön kanal oturumu kapatma URL'sini ayarlamanız gerekir. Bu uygulamanın uygulama kaydı için ön kanal oturumu kapatma URL'si ayarlandıktan sonra, oturum açan kullanıcı başka bir uygulamanın oturumunu kapattığında Microsoft kimlik platformu bu uygulamanın ön kanal oturumu kapatma URL'sine bir HTTP GET isteği gönderir.
Ön kanal oturumu kapatma özelliğini kullanarak çoklu oturumu kapatmayı ayarlama
Bir dizi uygulama için ön kanal oturumu kapatma özelliğini kullanmak için aşağıdaki iki görevi tamamlamanız gerekir:
- Aynı anda oturumu kapatılması gereken tüm uygulamalar için Microsoft Entra yönetim merkezinde ön kanal oturumu kapatma URL'sini ayarlayın. Her uygulamanın genellikle kendi ayrılmış ön kanal oturumu kapatma URL'si vardır.
- Uygulama kodunu, Microsoft kimlik platformu tarafından ön kanal oturumu kapatma URL'sine gönderilen HTTP GET isteğini dinleyecek şekilde düzenleyin ve kullanıcıyı tanımlayan tüm oturumları temizleyip 200 yanıt döndürerek bu isteğe yanıt verin.
Ön kanal oturumu kapatma URL'si seçme
Ön kanal oturumu kapatma URL'si, HTTP GET isteklerini alıp yanıtlayabilen ve kullanıcıyı tanımlayan tüm oturumları temizleyebilen bir URL olmalıdır. Ön kanal oturumu kapatma URL'si örnekleri şunlar olabilir ancak bunlarla sınırlı değildir:
Sonraki adımlar
- UserInfo uç nokta belgelerini gözden geçirin.
- Bir belirteçteki talep değerlerini şirket içi sistemlerden alınan verilerle doldurun.
- Belirteçlere kendi taleplerinizi ekleyin.