Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
1 Mayıs 2025 tarihinden itibaren Azure AD B2C artık yeni müşteriler için satın alınamayacak. SSS bölümünden daha fazla bilgi edinebilirsiniz.
Birçok modern uygulamada öncelikli olarak JavaScript'te yazılmış tek sayfalı bir uygulama (SPA) ön ucu vardır. Uygulama genellikle React, Angular veya Vue.jsgibi bir çerçeve kullanılarak yazılır. Öncelikli olarak tarayıcıda çalışan SPA'lar ve diğer JavaScript uygulamaları kimlik doğrulaması için bazı ek zorluklara sahiptir:
Bu uygulamaların güvenlik özellikleri geleneksel sunucu tabanlı web uygulamalarından farklıdır.
Birçok yetkilendirme sunucusu ve kimlik sağlayıcısı çıkış noktaları arası kaynak paylaşımı (CORS) isteklerini desteklemez.
Tam sayfa tarayıcının uygulamadan uzağa yönlendirilmesi, kullanıcı deneyimine invaziv olabilir.
Uyarı
Microsoft örtük verme akışını kullanmamanızı önerir. SPA'ları desteklemenin önerilen yolu OAuth 2.0 Yetkilendirme kodu akışıdır (PKCE ile). Bu akışın belirli yapılandırmaları, uygulamada çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca diğer daha güvenli akışlar uygun olmadığında kullanmalısınız. Daha fazla bilgi için örtük izin akışıyla ilgili güvenlik endişelerine bakın.
MSAL.js 1.x gibi bazı çerçeveler yalnızca örtük izin akışını destekler. Bu gibi durumlarda Azure Active Directory B2C (Azure AD B2C), OAuth 2.0 yetkilendirme örtük izin akışını destekler. Akış, OAuth 2.0 belirtiminin 4.2 bölümünde açıklanmıştır. Örtük akışta uygulama, sunucudan sunucuya alışveriş yapmadan doğrudan Azure AD B2C yetkilendirme uç noktasından belirteçler alır. Tüm kimlik doğrulama mantığı ve oturum işleme, sayfa yeniden yönlendirmesi veya açılır kutu ile tamamen JavaScript istemcisinde gerçekleştirilir.
Azure AD B2C, standart OAuth 2.0 örtük akışını basit kimlik doğrulaması ve yetkilendirmeden daha fazlasına genişletir. Azure AD B2C ilke parametresini tanıtır. İlke parametresiyle, OAuth 2.0'ı kullanarak uygulamanıza kaydolma, oturum açma ve profil yönetimi kullanıcı akışları gibi ilkeler ekleyebilirsiniz. Bu makaledeki örnek HTTP isteklerinde çizim için {tenant}.onmicrosoft.com kullanılır.
{tenant}'ı kiracınızın adıyla değiştirin, eğer varsa. Ayrıca , bir kullanıcı akışı oluşturmuş olmanız gerekir.
Örtük oturum açma akışını göstermek için aşağıdaki figürü kullanıyoruz. Her adım makalenin devamında ayrıntılı olarak açıklanmış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ı Azure AD B2C'nin /authorize uç noktasına yönlendirir. Kullanıcı, kullanıcı akışına bağlı olarak eylemde bulunur.
Bu istekte istemci, parametresindeki scope kullanıcıdan ve çalıştırılacak kullanıcı akışından alması gereken izinleri gösterir. İsteğin nasıl çalıştığı hakkında bilgi edinmek için isteği bir tarayıcıya yapıştırmayı ve çalıştırmayı deneyin. Değiştir:
{tenant}azure AD B2C kiracınızın adıyla birlikte.00001111-aaaa-2222-bbbb-3333cccc4444kiracınıza kaydettiğiniz uygulamanın uygulama kimliğiyle birlikte.{policy}kiracınızda oluşturduğunuz bir ilkenin adıyla , örneğinb2c_1_sign_in.
GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=id_token+token
&redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F
&response_mode=fragment
&scope=openid%20offline_access
&state=arbitrary_data_you_can_receive_in_the_response
&nonce=12345
HTTP GET isteğindeki parametreler aşağıdaki tabloda açıklanmıştır.
| Parametre | Gerekli | Açıklama |
|---|---|---|
| {kiracı} | Evet | Azure AD B2C kiracınızın adı |
| {politika} | Evet | Çalıştırmak istediğiniz kullanıcı akışının adı. 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. |
| müşteri_kimlik | Evet | Azure portalının uygulamanıza atadığı uygulama kimliği. |
| yanıt_türü | Evet | OpenID Connect girişi için id_token dahil edilmelidir. Ayrıca yanıt türünü tokende içerebilir. kullanıyorsanız token, uygulamanız yetkilendirme uç noktasına ikinci bir istekte bulunmadan yetkilendirme uç noktasından hemen bir erişim belirteci alabilir. Yanıt türünü kullanırsanız token parametresi, scope belirteci hangi kaynak için verebileceğinizi gösteren bir kapsam içermelidir. |
| yönlendirme_uri | Hayı | 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 kayıtlı bir uygulamaya eklediğiniz yeniden yönlendirme URI'lerinden biriyle tam olarak eşleşmelidir. |
| yanıt_modu | Hayı | Sonuçta elde edilen belirteci uygulamanıza geri göndermek için kullanılacak yöntemi belirtir. Örtük akışlar için kullanın fragment. |
| kapsam | Evet | Boşlukla ayrılmış öğelerden oluşan kapsam listesi. Tek bir kapsam değeri, istenen izinlerin her ikisini de Microsoft Entra Kimliği'ne gösterir. Kapsam, openid kullanıcının oturum açmasına ve kullanıcı hakkında kimlik belirteci biçiminde veri edinme iznini gösterir. Kapsam offline_access , web uygulamaları için isteğe bağlıdır. Uygulamanızın kaynaklara uzun süreli erişim için yenileme belirtecine ihtiyacı olduğunu gösterir. |
| devlet | Hayı | İstekte bulunan ve belirteç yanıtında da döndürülen bir değer. Kullanmak istediğiniz herhangi bir içeriğin dizesi olabilir. Genellikle siteler arası istek sahteciliği saldırılarını önlemek için rastgele oluşturulan ve benzersiz bir değer kullanılır. Durum, kimlik doğrulama isteği gerçekleşmeden önce kullanıcının uygulamadaki durumuyla ilgili bilgileri (örneğin, kullanıcının üzerinde olduğu sayfa veya yürütülmekte olan kullanıcı akışı) kodlamak için de kullanılır. |
| Nonce | Evet | İstekte bulunan (uygulama tarafından oluşturulan) ve sonuçta elde edilen kimlik belirtecinde hak olarak yer alan bir değer. Uygulama daha sonra token yenileme saldırılarını önlemek için bu değeri doğrulayabilir. Genellikle değer, isteğin kaynağını tanımlamak için kullanılabilecek rastgele, benzersiz bir dizedir. |
| Uyarı | Hayı | Gerekli kullanıcı etkileşiminin türü. Şu anda tek geçerli değerdir login. Bu parametre kullanıcıyı bu istekte kimlik bilgilerini girmeye zorlar. Tek Sign-On etkili olmaz. |
Bu, akışın etkileşimli bölümüdür. Kullanıcıdan politikanın iş akışını tamamlaması talep edilir. Kullanıcının kullanıcı adını ve parolasını girmesi, sosyal kimlikle oturum açması, yerel bir hesaba kaydolması veya başka bir dizi adımı olması gerekebilir. Kullanıcı eylemleri, kullanıcı akışının nasıl tanımlandığına bağlıdır.
Kullanıcı kullanıcı akışını tamamladıktan sonra Azure AD B2C, uygulamanıza redirect_uri aracılığıyla bir yanıt döndürür.
response_mode parametresinde belirtilen yöntemini kullanır. Yanıt, yürütülen kullanıcı akışından bağımsız olarak kullanıcı eylem senaryolarının her biri için tamamen aynıdır.
Başarılı yanıt
response_mode=fragment ve response_type=id_token+token kullanan başarılı bir yanıt, okunabilirlik için satır sonlarıyla birlikte aşağıdaki gibi görünür:
GET https://aadb2cplayground.azurewebsites.net/#
access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&token_type=Bearer
&expires_in=3599
&scope="00001111-aaaa-2222-bbbb-3333cccc4444 offline_access",
&id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&state=arbitrary_data_you_sent_earlier
| Parametre | Açıklama |
|---|---|
| erişim_token | Uygulamanın Azure AD B2C'den istediği erişim belirteci. |
| belirteç_tipi | Belirteç türü değeri. Azure AD B2C'nin desteklediği tek tür Taşıyıcı'dır. |
| son_kullanma_süresi | Erişim belirtecinin geçerli olduğu süre (saniye cinsinden). |
| kapsam | Belirtecin geçerli olduğu yetki alanları. Ayrıca kapsamları kullanarak belirteçleri daha sonra kullanılmak üzere önbelleğe alabilirsiniz. |
| kimlik belirteci (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 içerikleri hakkında daha fazla bilgi için bkz. Azure AD B2C belirteç dokümantasyonu. |
| devlet | İstekte bir state parametre varsa, yanıtta aynı değer görünmelidir. Uygulama, istek ve yanıttaki state değerlerinin aynı olduğunu doğrulamalıdır. |
Hata yanıtı
Hata yanıtları, uygulamanın bunları uygun şekilde işleyebilmesi için yeniden yönlendirme URI'sine de gönderilebilir:
GET https://aadb2cplayground.azurewebsites.net/#
error=access_denied
&error_description=the+user+canceled+the+authentication
&state=arbitrary_data_you_can_receive_in_the_response
| Parametre | Açıklama |
|---|---|
| hata | Oluşan hata türlerini sınıflandırmak için kullanılan kod. |
| hata açıklaması | Kimlik doğrulama hatasının kök nedenini belirlemenize yardımcı olabilecek belirli bir hata iletisi. |
| devlet | İstekte bir state parametre varsa, yanıtta aynı değer görünmelidir. Uygulama, istek ve yanıttaki state değerlerinin aynı olduğunu 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.
Kullanmayı tercih ettiğiniz dile bağlı olarak, JWT'leri doğrulamak için birçok açık kaynak kitaplığı kullanılabilir. Kendi doğrulama mantığınızı uygulamak yerine kullanılabilir açık kaynak kitaplıkları keşfetmeyi göz önünde bulundurun. Bu kitaplıkları düzgün kullanmayı öğrenmenize yardımcı olması için bu makaledeki bilgileri kullanabilirsiniz.
Azure AD B2C'de OpenID Connect meta veri uç noktası vardır. Bir uygulama, çalışma zamanında Azure AD B2C hakkında bilgi getirmek için uç noktayı kullanabilir. Bu bilgiler uç noktaları, belirteç içeriklerini ve belirteç imzalama anahtarlarını içerir. Azure AD B2C kiracınızda her kullanıcı akışı için bir JSON meta veri belgesi vardır. Örneğin, b2c_1_sign_in adındaki kiracıdaki fabrikamb2c.onmicrosoft.com kullanıcı akışının 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 de 'dir jwks_uri. Aynı kullanıcı akışının değeri şu şekilde olabilir:
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ı (ve meta verilerin nereden getirileceğini) belirlemek için aşağıdaki seçeneklerden herhangi birini kullanabilirsiniz:
Kullanıcı akışı adı
acrtalepteid_tokendahil edilir. Kimlik belirtecinden talepleri ayrıştırma hakkında bilgi almak için Azure AD B2C belirteci referansı'na bakın.İsteği gönderdiğinizde kullanıcı akışını parametresinin
statedeğerinde kodlar. Ardından, hangi kullanıcı akışının kullanıldığını belirlemek için parametresininstatekodunu çöz.
OpenID Connect meta veri uç noktasından meta veri belgesini aldıktan sonra, kimlik belirtecinin imzasını doğrulamak için RSA-256 ortak anahtarlarını (bu uç noktada bulunur) kullanabilirsiniz. Bu uç noktada herhangi bir zamanda kid tarafından tanımlanan birden çok anahtar listelenmiş olabilir. Başlık id_token, aynı zamanda bir kid talep içerir. Kimlik belirtecini imzalamak için bu anahtarlardan hangisinin kullanıldığını gösterir.
Belirteçleri doğrulama hakkında bilgi edinmek de dahil olmak üzere daha fazla bilgi için bkz. Azure AD B2C belirteç başvurusu.
Kimlik belirtecinin imzasını doğruladıktan sonra, birkaç iddianın doğrulanması gerekir. Örneğin:
nonceToken tekrar yürütme saldırılarını önlemek için hak talebini doğrulayın. Değeri, oturum açma isteğinde belirttiğiniz değer olmalıdır.audUygulamanız için kimlik belirtecinin verildiğinden emin olmak için talebi doğrulayın. Değeri uygulamanızın uygulama kimliği olmalıdır.iatveexptaleplerini doğrulayarak kimlik belirtecinin süresi dolmadığından emin olun.
Gerçekleştirmeniz gereken birkaç doğrulama daha OpenID Connect Core Belirtiminde ayrıntılı olarak açıklanmıştır. Senaryonuza bağlı olarak ek talepleri de doğrulamak isteyebilirsiniz. Bazı yaygın doğrulamalar şunlardır:
Kullanıcının veya kuruluşun uygulamaya kaydolduğunu güvence altına alma.
Kullanıcının uygun yetkilendirme ve ayrıcalıklara sahip olduğundan emin olun.
Microsoft Entra çok faktörlü kimlik doğrulamasını kullanma gibi belirli bir kimlik doğrulaması gücünün oluştuğundan emin olma.
Kimlik belirtecindeki talepler hakkında daha fazla bilgi için Azure AD B2C belirteç başvurusu sayfasına bakın.
Kimlik belirtecini doğruladıktan sonra kullanıcıyla oturum başlatabilirsiniz. Uygulamanızda, kullanıcı hakkında bilgi edinmek için kimlik belirtecindeki talepleri kullanın. Bu bilgiler görüntüleme, kayıtlar, yetkilendirme vb. için kullanılabilir.
Erişim belirteçlerini alma
Web uygulamalarınızın yapması gereken tek şey kullanıcı akışlarını yürütmekse, sonraki birkaç bölümü atlayabilirsiniz. Aşağıdaki bölümlerdeki bilgiler 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.
Artık kullanıcıyı SPA'nızda oturum açtığınıza göre, Microsoft Entra Id ile güvenliği sağlanan web API'lerini çağırmak için erişim belirteçleri alabilirsiniz. Yanıt türünü kullanarak token zaten bir belirteç almış olsanız bile, kullanıcıyı yeniden oturum açmaya yönlendirmeden ek kaynaklara yönelik belirteçleri almak için bu yöntemi kullanabilirsiniz.
Tipik bir web uygulaması akışında /token uç noktasına bir istek gönderirsiniz. Ancak uç nokta CORS isteklerini desteklemediğinden yenileme belirteci almak için AJAX çağrıları yapmak bir seçenek değildir. Bunun yerine, diğer web API'leri için yeni belirteçler almak için gizli bir HTML iframe öğesinde örtük akışı kullanabilirsiniz. Okunaklılık için satır sonları içeren bir örnek aşağıda verilmiştir:
https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=token
&redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F
&scope=https%3A%2F%2Fapi.contoso.com%2Ftasks.read
&response_mode=fragment
&state=arbitrary_data_you_can_receive_in_the_response
&nonce=12345
&prompt=none
Parametresini prompt=none ayarlayarak, bu istek hemen başarılı olur veya başarısız olur ve uygulamanıza geri döner. Parametresinde response_mode belirtilen yöntem kullanılarak yeniden yönlendirme URI'si aracılığıyla uygulamanıza başarılı bir yanıt gönderilir.
Başarılı yanıt
"response_mode=fragment kullanılarak verilen başarılı bir yanıt şu örneğe benzer:"
GET https://aadb2cplayground.azurewebsites.net/#
access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&state=arbitrary_data_you_sent_earlier
&token_type=Bearer
&expires_in=3599
&scope=https%3A%2F%2Fapi.contoso.com%2Ftasks.read
| Parametre | Açıklama |
|---|---|
| erişim_token | Uygulamanın istediği belirteç. |
| belirteç_tipi | Belirteç türü her zaman Bearer olacaktır. |
| devlet | İstekte bir state parametre varsa, yanıtta aynı değer görünmelidir. Uygulama, istek ve yanıttaki state değerlerinin aynı olduğunu doğrulamalıdır. |
| son_kullanma_süresi | Erişim belirtecinin geçerli olduğu süre (saniye). |
| kapsam | Erişim belirtecinin geçerli olduğu kapsamlar. |
Hata yanıtı
Hata yanıtları, uygulamanın bunları uygun şekilde işleyebilmesi için yeniden yönlendirme URI'sine de gönderilebilir. için prompt=none, beklenen bir hata şu örneğe benzer:
GET https://aadb2cplayground.azurewebsites.net/#
error=user_authentication_required
&error_description=the+request+could+not+be+completed+silently
| Parametre | Açıklama |
|---|---|
| hata | Oluşan hata türlerini sınıflandırmak için kullanılabilecek bir hata kodu dizesi. Hatalara tepki vermek için dizeyi de kullanabilirsiniz. |
| hata açıklaması | Kimlik doğrulama hatasının kök nedenini belirlemenize yardımcı olabilecek belirli bir hata iletisi. |
iframe isteğinde bu hatayı alırsanız, kullanıcının yeni bir belirteç almak için etkileşimli olarak yeniden oturum açması gerekir.
Belirteçleri yenileme
Kimlik belirteçlerinin ve erişim belirteçlerinin her ikisi de kısa bir süre sonra sona erer. Uygulamanız bu belirteçleri düzenli aralıklarla yenilemeye hazır olmalıdır. Örtük akışlar, güvenlik nedeniyle yenileme jetonu almanıza izin vermez. İki belirteç türünü de yenilemek için gizli bir HTML iframe öğesinde örtük akışı kullanın. Yetkilendirme isteğine parametresini prompt=none ekleyin. Yeni bir id_token değeri almak için response_type=id_token ve scope=openid öğelerini ve bir nonce parametresini kullandığınızdan emin olun.
Oturum kapatma isteği gönderme
Kullanıcının oturumunu kapatmak istediğinizde kullanıcıyı Azure AD B2C'nin oturum kapatma uç noktasına yönlendirin. Daha sonra uygulamada kullanıcının oturumunu temizleyebilirsiniz. Kullanıcıyı yeniden yönlendirmezseniz, Azure AD B2C ile geçerli bir Tek Sign-On oturumuna sahip olduklarından, kimlik bilgilerini yeniden girmeden uygulamanızda yeniden kimlik doğrulaması yapabilirler.
Kullanıcıyı, end_session_endpoint doğrulama bölümünde açıklanan OpenID Connect meta veri belgesinde listelenene yönlendirebilirsiniz. Örneğin:
GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/logout?post_logout_redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F
| Parametre | Gerekli | Açıklama |
|---|---|---|
| {kiracı} | Evet | Azure AD B2C kiracınızın adı. |
| {politika} | Evet | Kullanıcının uygulamanızda oturumunu kapatmak için kullanmak istediğiniz kullanıcı akışı. Bunun, uygulamanın kullanıcının oturumunu açmak için kullandığı kullanıcı akışıyla aynı olması gerekir. |
| çıkış sonrası yönlendirme URI | Hayı | Kullanıcının oturumu başarıyla kapattıktan sonra yönlendirileceği URL. Eğer dahil edilmezse, Azure AD B2C kullanıcıya genel bir mesaj gösterir. |
| devlet | Hayı | İ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. |
Uyarı
Kullanıcıyı Azure end_session_endpoint AD B2C'ye yönlendirmek, kullanıcının Tek Sign-On durumunun bir kısmını temizler. Ancak kullanıcının sosyal kimlik sağlayıcısı oturumunu kapatmaz. Kullanıcı bir sonraki oturum açma sırasında aynı kimlik sağlayıcısını seçerse, kullanıcının kimlik bilgileri girilmeden kimliği yeniden doğrulanır. Bir kullanıcı Azure AD B2C uygulamanızın oturumunu kapatmak istiyorsa, örneğin Facebook hesabında tamamen oturumunu kapatmak istediği anlamına gelmez. Ancak, yerel hesaplar için kullanıcının oturumu düzgün bir şekilde sonlandırılacaktır.
Sonraki Adımlar
Kod örneğine bakın: JavaScript SPA'da Azure AD B2C ile oturum açma.