Azure Active Directory B2C'de OpenID Bağlan ile web oturumu açma

OpenID Bağlan, kullanıcıların web uygulamalarında güvenli bir şekilde oturum açmasını sağlamak için kullanılabilen, OAuth 2.0'ın üzerine kurulmuş bir kimlik doğrulama protokolüdür. OpenID Bağlan Azure Active Directory B2C (Azure AD B2C) uygulamasını kullanarak, web uygulamalarınızdaki kaydolma, oturum açma ve diğer kimlik yönetimi deneyimlerini Microsoft Entra Id'ye dış kaynak olarak atayabilirsiniz. Bu kılavuzda, bunu dilden bağımsız bir şekilde nasıl yapabileceğiniz gösterilmektedir. Açık kaynak kitaplıklarımızdan herhangi birini kullanmadan HTTP iletileri göndermeyi ve almayı açıklar.

Dekont

Açık kaynak kimlik doğrulama kitaplıklarının çoğu uygulamanız için JWT belirteçlerini alır ve doğrular. Kendi kodunuzu uygulamak yerine bu seçenekleri incelemenizi öneririz. Daha fazla bilgi için bkz . Microsoft Kimlik Doğrulama Kitaplığı'na (MSAL) ve Microsoft Identity Web kimlik doğrulama kitaplığına genel bakış.

OpenID Bağlan, kimlik doğrulama protokolü olarak kullanmak üzere OAuth 2.0 yetkilendirme protokolunu genişletir. Bu kimlik doğrulama protokolü çoklu oturum açma işlemi gerçekleştirmenizi sağlar. İstemcinin kullanıcının kimliğini doğrulamasını ve kullanıcı hakkında temel profil bilgilerini almasını sağlayan kimlik belirteci kavramını tanıtır.

OpenID Bağlan, uygulamaların erişim belirteçlerini güvenli bir şekilde almasını da sağlar. Yetkilendirme sunucusunun güvenli olduğu kaynaklara erişmek için erişim belirteçlerini kullanabilirsiniz. Sunucuda barındırdığınız ve tarayıcı üzerinden erişilen bir web uygulaması oluşturuyorsanız OpenID Bağlan önerilir. Belirteçler hakkında daha fazla bilgi için bkz . Azure Active Directory B2C'de belirteçlere genel bakış

Azure AD B2C, basit kimlik doğrulaması ve yetkilendirmeden fazlasını yapmak için standart OpenID Bağlan protokollerini genişletir. Uygulamanıza kaydolma, oturum açma ve profil yönetimi gibi kullanıcı deneyimleri eklemek için OpenID Bağlan kullanmanızı sağlayan kullanıcı akışı parametresini tanıtır.

Kimlik doğrulama istekleri gönderme

Web uygulamanızın kullanıcının kimliğini doğrulaması ve bir kullanıcı akışı çalıştırması gerektiğinde, kullanıcıyı /authorize uç noktaya yönlendirebilir. Kullanıcı, kullanıcı akışına bağlı olarak eylemde bulunur.

Bu istekte istemci, parametresinde scope kullanıcıdan alması gereken izinleri belirtir ve çalıştırılacak kullanıcı akışını belirtir. İsteğin nasıl çalıştığını öğrenmek için isteği tarayıcınıza yapıştırın ve çalıştırın. Değiştirme:

  • {tenant} kiracınızın adıyla birlikte.
  • 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6kiracınıza kaydettiğiniz bir uygulamanın uygulama kimliğiyle.
  • {application-id-uri}/{scope-name} uygulama kimliği URI'si ve kiracınıza kaydettiğiniz bir uygulamanın kapsamıyla.
  • {policy} kiracınızda bulunan ilke adıyla ( örneğin b2c_1_sign_in) .
GET /{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?
Host: {tenant}.b2clogin.com

client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6
&response_type=code+id_token
&redirect_uri=https%3A%2F%2Fjwt.ms%2F
&response_mode=fragment
&scope=openid%20offline_access%20{application-id-uri}/{scope-name}
&state=arbitrary_data_you_can_receive_in_the_response
&nonce=12345
Parametre Zorunlu Açıklama
{tenant} Evet Azure AD B2C kiracınızın adı. Özel bir etki alanı kullanıyorsanız, değerini gibi fabrikam.cometki alanınızla değiştirintenant.b2clogin.com.
{policy} Evet Uygulamanın çalıştır olduğu kullanıcı akışı veya ilkesi. Azure AD B2C kiracınızda oluşturduğunuz kullanıcı akışının adını belirtin. Örneğin: b2c_1_sign_in, b2c_1_sign_upveya b2c_1_edit_profile.
client_id Evet Azure portalının uygulamanıza atadığı uygulama kimliği.
nonce Evet İstekte bulunan (uygulama tarafından oluşturulan) ve sonuçta elde edilen kimlik belirtecinde talep olarak bulunan bir değer. Uygulama daha sonra belirteç yeniden yürütme saldırılarını azaltmak için bu değeri doğrulayabilir. değeri genellikle isteğin kaynağını tanımlamak için kullanılabilecek rastgele bir benzersiz dizedir.
response_type Evet OpenID Bağlan için bir kimlik belirteci içermelidir. Web uygulamanızın da bir web API'sini çağırmak için belirteçlere ihtiyacı varsa kullanabilirsiniz code+id_token.
kapsam Evet Boşlukla ayrılmış kapsam listesi. Kapsam, openid kullanıcıda oturum açma ve kullanıcı hakkında kimlik belirteci biçiminde veri alma iznini gösterir. Kapsam offline_access , web uygulamaları için isteğe bağlıdır. Uygulamanızın kaynaklara genişletilmiş erişim için yenileme belirtecine ihtiyacı olduğunu gösterir. , https://{tenant-name}/{app-id-uri}/{scope} web API'si gibi korumalı kaynaklara bir izin gösterir. Daha fazla bilgi için bkz . Erişim belirteci isteme.
Istemi No Gereken kullanıcı etkileşiminin türü. Şu anda geçerli olan tek değer, kullanıcıyı bu istekte kimlik bilgilerini girmeye zorlayan değeridir login.
redirect_uri Evet redirect_uri Sunucunun uygulamanıza kimlik doğrulama yanıtları gönderdiği uygulamanızın parametresi. URL ile kodlanmış olması dışında, Azure portalına kaydettiğiniz parametrelerden biriyle redirect_uri tam olarak eşleşmelidir.
response_mode No Sonuçta elde edilen yetkilendirme kodunu uygulamanıza geri göndermek için kullanılan yöntem. , veya fragmentolabilirqueryform_post. En iyi güvenlik için yanıt modunu kullanmanızı form_post öneririz.
semt No Yetkilendirme sunucusunun belirteç yanıtında döndürdüğü isteğe ekleyebileceğiniz 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, kimlik doğrulama isteği gerçekleşmeden önce kullanıcının uygulamadaki durumuyla ilgili bilgileri (örneğin, bulunduğu sayfa) kodlamak için de kullanılır. Azure portalınıza birden çok yeniden yönlendirme URL'sini kaydetmek istemiyorsanız, farklı istekler nedeniyle uygulamanızdaki yanıtları Azure AD B2C hizmetinden ayırt etmek için parametresini kullanabilirsiniz state .
login_hint No Oturum açma sayfasının oturum açma adı alanını önceden doldurmak için kullanılabilir. Daha fazla bilgi için bkz . Oturum açma adını önceden doldurma.
domain_hint No Azure AD B2C'ye oturum açmak için kullanılması gereken sosyal kimlik sağlayıcısı hakkında bir ipucu sağlar. Geçerli bir değer eklenirse, kullanıcı doğrudan kimlik sağlayıcısı oturum açma sayfasına gider. Daha fazla bilgi için bkz . Oturum açmayı sosyal bir sağlayıcıya yeniden yönlendirme.
Özel parametreler No Özel ilkelerle kullanılabilecek özel parametreler. Örneğin, dinamik özel sayfa içeriği URI'si veya anahtar-değer talebi çözümleyicileri.

Bu noktada kullanıcıdan iş akışını tamamlaması istenir. Kullanıcının kullanıcı adını ve parolasını girmesi, sosyal kimlikle oturum açması veya dizine kaydolması gerekebilir. Kullanıcı akışının nasıl tanımlandığına bağlı olarak başka sayıda adım olabilir.

Kullanıcı akışı tamamlandıktan sonra, parametrede belirttiğiniz response_mode yöntem kullanılarak belirtilen redirect_uri parametrede uygulamanıza bir yanıt döndürülür. Yanıt, kullanıcı akışından bağımsız olarak önceki durumların her biri için aynıdır.

kullanarak response_mode=fragment başarılı bir yanıt şöyle görünür:

GET https://jwt.ms/#
id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&state=arbitrary_data_you_can_receive_in_the_response
Parametre Açıklama
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.
kod kullandıysanız response_type=code+id_tokenuygulamanın istediği yetkilendirme kodu. Uygulama, bir hedef kaynak için erişim belirteci istemek üzere yetkilendirme kodunu kullanabilir. Yetkilendirme kodlarının süresi genellikle yaklaşık 10 dakika sonra dolar.
semt İstekte bir state parametre varsa, yanıtta aynı değer görünmelidir. Uygulama, istek ve yanıttaki değerlerin aynı olduğunu state doğrulamalıdır.

Hata yanıtları, uygulamanın bunları uygun şekilde işleyebilmesi için redirect_uri parametresine de gönderilebilir:

GET https://jwt.ms/#
error=access_denied
&error_description=AADB2C90091%3a+The+user+has+cancelled+entering+self-asserted+information.%0d%0aCorrelation+ID%3a+xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx%0d%0aTimestamp%3a+xxxx-xx-xx+xx%3a23%3a27Z%0d%0a
&state=arbitrary_data_you_can_receive_in_the_response
Parametre Açıklama
error Oluşan hata türlerini sınıflandırmak için kullanılabilecek bir kod.
error_description Kimlik doğrulama hatasının kök nedenini belirlemeye yardımcı olabilecek belirli bir hata iletisi.
semt İstekte bir state parametre varsa, yanıtta aynı değer görünmelidir. Uygulama, istek ve yanıttaki değerlerin aynı olduğunu state doğrulamalıdır.

Kimlik belirtecini doğrulama

Kimlik belirtecinin alınması kullanıcının kimliğini doğrulamak için yeterli değildir. Kimlik belirtecinin imzasını doğrulayın ve uygulamanızın gereksinimlerine göre belirteçteki talepleri doğrulayın. Azure AD B2C, belirteçleri imzalamak ve geçerli olduklarını doğrulamak için JSON Web Belirteçleri (JWT) ve ortak anahtar şifrelemesi kullanır.

Dekont

Açık kaynak kimlik doğrulama kitaplıklarının çoğu uygulamanız için JWT belirteçlerini doğrular. Kendi doğrulama mantığınızı uygulamak yerine bu seçenekleri incelemenizi öneririz. Daha fazla bilgi için bkz . Microsoft Kimlik Doğrulama Kitaplığı'na (MSAL) ve Microsoft Identity Web kimlik doğrulama kitaplığına genel bakış.

Azure AD B2C'de, bir uygulamanın çalışma zamanında Azure AD B2C hakkında bilgi almasına olanak tanıyan bir OpenID Bağlan meta veri uç noktası vardır. Bu bilgiler uç noktaları, belirteç içeriklerini ve belirteç imzalama anahtarlarını içerir. B2C kiracınızda her kullanıcı akışı için bir JSON meta veri belgesi vardır. Örneğin, içindeki fabrikamb2c.onmicrosoft.com kullanıcı akışının b2c_1_sign_in meta veri belgesi şu konumda bulunur:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/v2.0/.well-known/openid-configuration

Bu yapılandırma belgesinin özelliklerinden biri, jwks_uriaynı kullanıcı akışı için değeri şu şekilde olacaktır:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/discovery/v2.0/keys

Kimlik belirtecini imzalamak için hangi kullanıcı akışının kullanıldığını belirlemek için iki seçeneğiniz vardır. İlk olarak, kullanıcı akışı adı kimlik belirtecindeki acr talepte yer alır. Bkz . Kullanıcı akışını temsil eden talep. Diğer seçeneğiniz, isteği gönderdiğinizde kullanıcı akışını parametrenin değerinde state kodlamak ve ardından hangi kullanıcı akışının kullanıldığını belirlemek için kodunu çözmektir. Her iki yöntem de geçerlidir.

Meta veri belgesini OpenID Bağlan meta veri uç noktasından aldıktan sonra, kimlik belirtecinin imzasını doğrulamak için RSA 256 ortak anahtarlarını kullanabilirsiniz. Bu uç noktada her birinin bir kid talep tarafından tanımlanan birden çok anahtarı olabilir. Kimlik belirtecinin üst bilgisi, kimlik belirtecini imzalamak için bu anahtarlardan hangisinin kullanıldığını gösteren bir kid talep de içerir.

Azure AD B2C'den belirteçleri doğrulamak için üs (e) ve modulus(n) kullanarak ortak anahtarı oluşturmanız gerekir. Bunu yapmak için ortak anahtarı istediğiniz programlama dilinde oluşturmayı öğrenmeniz gerekir. RSA protokolü ile Ortak Anahtar oluşturma ile ilgili resmi belgelere buradan ulaşabilirsiniz: https://tools.ietf.org/html/rfc3447#section-3.1

Kimlik belirtecinin imzasını doğruladıktan sonra, doğrulamanız gereken çeşitli talepler vardır. Örneğin:

  • nonce Belirteç yeniden yürütme saldırılarını önlemek için talebi doğrulayın. Değeri, oturum açma isteğinde belirttiğiniz değer olmalıdır.
  • Kimlik belirtecinin aud uygulamanız için verildiğinden emin olmak için talebi doğrulayın. Değeri uygulamanızın uygulama kimliği olmalıdır.
  • Kimlik belirtecinin iat süresinin dolmadığından emin olmak için ve exp taleplerini doğrulayın.

Ayrıca gerçekleştirmeniz gereken birkaç doğrulama daha vardır. Doğrulamalar OpenID Bağlan Çekirdek Belirtiminde ayrıntılı olarak açıklanmıştır. Senaryonuza bağlı olarak daha fazla talep doğrulamak da isteyebilirsiniz. Bazı yaygın doğrulamalar şunlardır:

  • Kullanıcının/kuruluşun uygulamaya kaydolduğunu doğrulayın.
  • Kullanıcının uygun yetkilendirme/ayrıcalıklara sahip olduğundan emin olun.
  • Microsoft Entra çok faktörlü kimlik doğrulaması gibi belirli bir kimlik doğrulaması gücünün oluştuğundan emin olun.

Kimlik belirteci doğrulandıktan sonra kullanıcıyla oturum başlatabilirsiniz. Uygulamanızdaki kullanıcı hakkında bilgi edinmek için kimlik belirtecindeki talepleri kullanabilirsiniz. Bu bilgilerin kullanım alanları görüntüleme, kayıtlar ve yetkilendirmedir.

Belirteç alma

Web uygulamanızın yalnızca kullanıcı akışlarını çalıştırması gerekiyorsa, sonraki birkaç bölümü atlayabilirsiniz. Bu bölümler yalnızca Azure AD B2C tarafından korunan bir web API'sine kimliği doğrulanmış çağrılar yapması gereken web uygulamaları için geçerlidir.

Uç noktaya istek /token göndererekPOST, belirteç için aldığınız yetkilendirme kodunu (kullanarakresponse_type=code+id_token) istenen kaynağa kullanabilirsiniz. Azure AD B2C'de, istekte kapsamlarını belirterek diğer API'ler için her zamanki gibi erişim belirteçleri isteyebilirsiniz.

Uygulamanızın kendi arka uç Web API'si için erişim belirteci de isteyebilirsiniz. Bu durumda, istenen kapsam olarak uygulamanın istemci kimliğini kullanırsınız ve bu da bu istemci kimliğine sahip bir erişim belirtecinin "hedef kitle" olarak kullanılmasına neden olur:

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

grant_type=authorization_code
&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6
&scope=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
Parametre Zorunlu Açıklama
{tenant} Evet Azure AD B2C kiracınızın adı
{policy} Evet Yetkilendirme kodunu almak için kullanılan kullanıcı akışı. Bu istekte farklı bir kullanıcı akışı kullanamazsınız. Bu parametreyi POST gövdesine değil sorgu dizesine ekleyin.
client_id Evet Azure portalının uygulamanıza atadığı uygulama kimliği.
client_secret Evet, Web Apps'te Azure portalında oluşturulan uygulama gizli dizisi. İstemci gizli dizileri, istemcinin güvenli bir şekilde bir istemci gizli dizisini depoladığı Web Uygulaması senaryoları için bu akışta kullanılır. Yerel Uygulama (genel istemci) senaryolarında istemci gizli dizileri güvenli bir şekilde depolanamaz, bu nedenle bu akışta kullanılmaz. İstemci gizli dizisi kullanıyorsanız, bunu düzenli aralıklara göre değiştirin.
kod Evet Kullanıcı akışının başında edindiğiniz yetkilendirme kodu.
grant_type Evet Yetkilendirme kodu akışı için olması authorization_code gereken verme türü.
redirect_uri No redirect_uri Yetkilendirme kodunu aldığınız uygulamanın parametresi.
kapsam No Boşlukla ayrılmış kapsam listesi. Kapsam, openid kullanıcıda oturum açma ve kullanıcı hakkındaki verileri id_token parametreleri biçiminde alma iznini gösterir. İstemciyle aynı uygulama kimliğiyle temsil edilen, uygulamanızın kendi arka uç web API'sine belirteç almak için kullanılabilir. Kapsam, offline_access uygulamanızın kaynaklara genişletilmiş erişim için yenileme belirtecine ihtiyacı olduğunu gösterir.

Başarılı bir belirteç yanıtı şöyle görünür:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access",
    "expires_in": "3600",
    "expires_on": "1644254945",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
}
Parametre Açıklama
not_before Belirtecin geçerli olduğu dönem süresi.
token_type Belirteç türü değeri. Bearer desteklenen tek türdür.
access_token İstediğiniz imzalı JWT belirteci.
kapsam Belirteç için geçerli kapsamlar.
expires_in Erişim belirtecinin geçerli olduğu süre (saniye cinsinden).
expires_on Erişim belirtecinin geçersiz hale geldiği dönem süresi.
refresh_token OAuth 2.0 yenileme belirteci. Uygulama, geçerli belirtecin süresi dolduktan sonra daha fazla belirteç almak için bu belirteci kullanabilir. Yenileme belirteçleri, kaynaklara erişimi uzun süreler boyunca korumak için kullanılabilir. offline_access Kapsam, yenileme belirtecini almak için hem yetkilendirme hem de belirteç isteklerinde kullanılmış olmalıdır.

Hata yanıtları şöyle görünür:

{
    "error": "invalid_grant",
    "error_description": "AADB2C90080: The provided grant has expired. Please re-authenticate and try again. Current time: xxxxxxxxxx, Grant issued time: xxxxxxxxxx, Grant expiration time: xxxxxxxxxx\r\nCorrelation ID: xxxxxxxx-xxxx-xxxX-xxxx-xxxxxxxxxxxx\r\nTimestamp: xxxx-xx-16 xx:10:52Z\r\n"
}
Parametre Açıklama
error Oluşan hata türlerini sınıflandırmak için kullanılabilecek bir kod.
error_description Kimlik doğrulama hatasının kök nedenini belirlemeye yardımcı olabilecek bir ileti.

Belirteci kullanma

Bir erişim belirtecini başarıyla aldıktan sonra, üst bilgisine ekleyerek arka uç web API'lerinize yönelik isteklerde belirteci Authorization kullanabilirsiniz:

GET /tasks
Host: mytaskwebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...

Belirteci yenileme

Erişim belirteçleri ve kimlik belirteçleri kısa sürelidir. Süresi dolduktan sonra, kaynaklara erişmeye devam etmek için bunları yenilemeniz gerekir. Erişim belirtecini yenilediğinizde Azure AD B2C yeni bir belirteç döndürür. Yenilenen erişim belirteci güncelleştirilmiş nbf (daha önce değil), iat (adresinde verilmiştir) ve exp (süre sonu) talep değerlerine sahip olacaktır. Diğer tüm talep değerleri, önceki erişim belirtecindekilere benzer.

Uç noktaya başka bir POST istek göndererek belirteci /token yenileyin. Bu kez parametresi yerine parametresini code sağlayınrefresh_token:

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

grant_type=refresh_token
&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6
&scope=openid offline_access
&refresh_token=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
Parametre Zorunlu Açıklama
{tenant} Evet Azure AD B2C kiracınızın adı
{policy} Evet Özgün yenileme belirtecini almak için kullanılan kullanıcı akışı. Bu istekte farklı bir kullanıcı akışı kullanamazsınız. Bu parametreyi POST gövdesine değil sorgu dizesine ekleyin.
client_id Evet Azure portalının uygulamanıza atadığı uygulama kimliği.
client_secret Evet, Web Apps'te Azure portalında oluşturulan uygulama gizli dizisi. İstemci gizli dizileri, istemcinin güvenli bir şekilde bir istemci gizli dizisini depoladığı Web Uygulaması senaryoları için bu akışta kullanılır. Yerel Uygulama (genel istemci) senaryolarında istemci gizli dizileri güvenli bir şekilde depolanamaz, bu nedenle bu çağrıda kullanılmaz. İstemci gizli dizisi kullanıyorsanız, lütfen bunu düzenli aralıklara göre değiştirin.
grant_type Evet Yetkilendirme kodu akışının bu bölümü için olması refresh_token gereken verme türü.
refresh_token Evet Akışın ikinci bölümünde alınan özgün yenileme belirteci. Kapsam, offline_access yenileme belirtecini almak için hem yetkilendirme hem de belirteç isteklerinde kullanılmalıdır.
redirect_uri No redirect_uri Yetkilendirme kodunu aldığınız uygulamanın parametresi.
kapsam No Boşlukla ayrılmış kapsam listesi. Kapsam, openid kullanıcıda oturum açma ve kullanıcı hakkında kimlik belirteci biçiminde veri alma iznini gösterir. İstemciyle aynı uygulama kimliğiyle temsil edilen, uygulamanızın kendi arka uç web API'sine belirteç göndermek için kullanılabilir. Kapsam, offline_access uygulamanızın kaynaklara genişletilmiş erişim için yenileme belirtecine ihtiyacı olduğunu gösterir.

Başarılı bir belirteç yanıtı şöyle görünür:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access",
    "expires_in": "3600",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
    "refresh_token_expires_in": "1209600"
}
Parametre Açıklama
not_before Belirtecin geçerli olduğu dönem süresi.
token_type Belirteç türü değeri. Bearer desteklenen tek türdür.
access_token İstenen imzalı JWT belirteci.
kapsam Belirteç için geçerli kapsamlar.
expires_in Erişim belirtecinin geçerli olduğu süre (saniye cinsinden).
refresh_token OAuth 2.0 yenileme belirteci. Uygulama, geçerli belirtecin süresi dolduktan sonra ek belirteçler almak için bu belirteci kullanabilir. Yenileme belirteçleri, kaynaklara erişimi uzun süreler boyunca korumak için kullanılabilir.
refresh_token_expires_in Yenileme belirtecinin geçerli olduğu süre (saniye cinsinden).

Hata yanıtları şöyle görünür:

{
    "error": "invalid_grant",
    "error_description": "AADB2C90129: The provided grant has been revoked. Please reauthenticate and try again.\r\nCorrelation ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\r\nTimestamp: xxxx-xx-xx xx:xx:xxZ\r\n",
}
Parametre Açıklama
error Oluşan hata türlerini sınıflandırmak için kullanılabilecek bir kod.
error_description Kimlik doğrulama hatasının kök nedenini belirlemeye yardımcı olabilecek bir ileti.

Oturum kapatma isteği gönderme

Kullanıcının uygulama oturumunu kapatmak istediğinizde, uygulamanın tanımlama bilgilerini temizlemek veya kullanıcıyla oturumu başka bir şekilde sonlandırmak yeterli değildir. Oturumu kapatmak için kullanıcıyı Azure AD B2C'ye yeniden yönlendirin. Bunu yapmazsanız, kullanıcı kimlik bilgilerini yeniden girmeden uygulamanıza yeniden kimlik doğrulaması yapabilir. Daha fazla bilgi için bkz . Azure AD B2C oturum davranışı.

Kullanıcıyı oturumu kapatmak içinend_session_endpoint, kullanıcıyı daha önce açıklanan OpenID Bağlan meta veri belgesinde listelenene yeniden yönlendirin:

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/logout?post_logout_redirect_uri=https%3A%2F%2Fjwt.ms%2F
Parametre Zorunlu Açıklama
{tenant} Evet Azure AD B2C kiracınızın adı. Özel bir etki alanı kullanıyorsanız, değerini gibi fabrikam.cometki alanınızla değiştirintenant.b2clogin.com.
{policy} Evet Yetkilendirme isteğinde belirttiğiniz kullanıcı akışı. Örneğin, kullanıcı kullanıcı akışıyla b2c_1_sign_in oturum açtıysa, oturum kapatma isteğinde belirtin b2c_1_sign_in .
id_token_hint No Son kullanıcının istemciyle geçerli kimliği doğrulanmış oturumu hakkında ipucu olarak oturumu kapatma uç noktasına geçirmek için daha önce verilmiş bir kimlik belirteci. , id_token_hint Azure AD B2C uygulama ayarlarınızda kayıtlı bir yanıt URL'si olmasını sağlar post_logout_redirect_uri . Daha fazla bilgi için bkz . Oturumu kapatma yeniden yönlendirmenizin güvenliğini sağlama.
client_id No* Azure portalının uygulamanıza atadığı uygulama kimliği.

*Bu, yalıtım SSO yapılandırması kullanılırken Application gereklidir ve Oturum kapatma isteğinde Kimlik Belirteci gerektir ayarı olarak Noayarlanır.
post_logout_redirect_uri No Başarılı bir şekilde oturumu kapatıldıktan sonra kullanıcının yeniden yönlendirileceği URL. Dahil değilse, Azure AD B2C kullanıcıya genel bir ileti gösterir. sağlamadığınız id_token_hintsürece, bu URL'yi Azure AD B2C uygulama ayarlarınıza yanıt URL'si olarak kaydetmemelisiniz.
semt No Yetkilendirme isteğine bir state parametre eklerseniz, yetkilendirme sunucusu yanıtındaki post_logout_redirect_uriaynı değeri döndürür. Uygulama, istek ve yanıttaki değerin state aynı olduğunu doğrulamalıdır.

Oturum kapatma isteği üzerine Azure AD B2C, Azure AD B2C tanımlama bilgisi tabanlı oturumu geçersiz kılır ve federasyon kimlik sağlayıcılarının oturumunu kapatmaya çalışır. Daha fazla bilgi için bkz . Çoklu oturum kapatma.

Oturumu kapatma yeniden yönlendirmenizin güvenliğini sağlama

Oturumu kapatıldıktan sonra kullanıcı, uygulama için belirttiğiniz yanıt URL'lerinden bağımsız olarak parametresinde post_logout_redirect_uri belirttiğiniz URI'ye yönlendirilir. Ancak geçerli id_token_hint bir ileti geçirilirse ve oturum kapatma isteklerinde Kimlik Belirteci Gerektir seçeneği açıksa Azure AD B2C, yeniden yönlendirmeyi gerçekleştirmeden önce değerinin post_logout_redirect_uri uygulamanın yapılandırılmış yeniden yönlendirme URI'lerinden biriyle eşleşip eşleşmediğini doğrular. Uygulama için eşleşen yanıt URL'si yapılandırılmadıysa, bir hata iletisi görüntülenir ve kullanıcı yeniden yönlendirilmiyor.

Oturum kapatma isteklerinde gerekli Kimlik Belirtecini ayarlamak için bkz . Azure Active Directory B2C'de oturum davranışını yapılandırma.

Sonraki adımlar

  • Azure AD B2C oturumu hakkında daha fazla bilgi edinin.