Azure Active Directory B2C'de belirteçlere genel bakış

Azure Active Directory B2C (Azure AD B2C), her kimlik doğrulama akışını işlerken farklı türlerde güvenlik belirteçleri yayar. Bu makalede, her belirteç türünün biçimi, güvenlik özellikleri ve içeriği açıklanmaktadır.

Belirteç türleri

Azure AD B2C, kimlik doğrulaması ve kaynaklara güvenli erişim için belirteçleri kullanan OAuth 2.0 ve OpenID Connect protokollerini destekler. Azure AD B2C'de kullanılan tüm belirteçler, taşıyıcı ve belirtecin konusu hakkında bilgi onaylamaları içeren JSON web belirteçleridir (JWT).

Aşağıdaki belirteçler Azure AD B2C ile iletişimde kullanılır:

  • Kimlik belirteci - Uygulamanızdaki kullanıcıları tanımlamak için kullanabileceğiniz talepleri içeren bir JWT. Bu belirteç, aynı uygulama veya hizmetin iki bileşeni arasında iletişim için HTTP isteklerinde güvenli bir şekilde gönderilir. Talepleri uygun gördüğünüz şekilde bir kimlik belirtecinde kullanabilirsiniz. Bunlar genellikle hesap bilgilerini görüntülemek veya uygulamada erişim denetimi kararları almak için kullanılır. Azure AD B2C tarafından verilen kimlik belirteçleri imzalanmış ancak şifrelenmemiştir. Uygulamanız veya API'niz kimlik belirteci aldığında, belirtecin orijinal olduğunu kanıtlamak için imzayı doğrulamalıdır. Uygulamanızın veya API'nizin de geçerli olduğunu kanıtlamak için belirteçteki birkaç talebi doğrulaması gerekir. Senaryo gereksinimlerine bağlı olarak, bir uygulama tarafından doğrulanan talepler farklılık gösterebilir, ancak uygulamanızın her senaryoda bazı yaygın talep doğrulamaları gerçekleştirmesi gerekir.

  • Erişim belirteci - API'lerinize verilen izinleri tanımlamak için kullanabileceğiniz talepleri içeren bir JWT. Erişim belirteçleri imzalanmış ancak şifrelenmemiştir. Erişim belirteçleri, API'lere ve kaynak sunucularına erişim sağlamak için kullanılır. API'niz bir erişim belirteci aldığında, belirtecin orijinal olduğunu kanıtlamak için imzayı doğrulaması gerekir. API'nizin geçerli olduğunu kanıtlamak için belirteçteki birkaç talebi de doğrulaması gerekir. Senaryo gereksinimlerine bağlı olarak, bir uygulama tarafından doğrulanan talepler farklılık gösterebilir, ancak uygulamanızın her senaryoda bazı yaygın talep doğrulamaları gerçekleştirmesi gerekir.

  • Yenileme belirteci - Yenileme belirteçleri, OAuth 2.0 akışında yeni kimlik belirteçleri almak ve belirteçlere erişmek için kullanılır. Uygulamanıza, kullanıcılarla etkileşime gerek kalmadan kullanıcılar adına kaynaklara uzun süreli erişim sağlar. Yenileme belirteçleri uygulamanızda opaktır. Bunlar Azure AD B2C tarafından verilir ve yalnızca Azure AD B2C tarafından incelenebilir ve yorumlanabilir. Bunlar uzun ömürlü olsa da uygulamanızın yenileme belirtecinin belirli bir süre boyunca devam edeceği beklentisiyle yazılmaması gerekir. Yenileme belirteçleri çeşitli nedenlerle herhangi bir anda geçersiz kılınabilir. Uygulamanızın yenileme belirtecinin geçerli olup olmadığını bilmesinin tek yolu, B2C'yi Azure AD için belirteç isteğinde bulunarak bu belirteci kullanmaya çalışmaktır. Yeni bir belirteç için yenileme belirteci kullandığınızda, belirteç yanıtında yeni bir yenileme belirteci alırsınız. Yeni yenileme belirtecini kaydedin. İstekte daha önce kullandığınız yenileme belirtecinin yerini alır. Bu eylem, yenileme belirteçlerinizin mümkün olduğunca uzun süre geçerli kalmasını garanti altına alır. PKCE ile yetkilendirme kodu akışını kullanan tek sayfalı uygulamalar her zaman 24 saatlik yenileme belirteci ömrüne sahiptir. Tarayıcıda yenileme belirteçlerinin güvenlik üzerindeki etkileri hakkında daha fazla bilgi edinin.

Uç Noktalar

Kayıtlı bir uygulama belirteçleri alır ve şu uç noktalara istek göndererek Azure AD B2C ile iletişim kurar:

  • https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize
  • https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/token

Uygulamanızın Azure AD B2C'den aldığı güvenlik belirteçleri veya /token uç noktalarından /authorize gelebilir. Kimlik belirteçleri şu kaynaktan alındığında:

  • /authorize uç nokta, genellikle JavaScript tabanlı web uygulamalarında oturum açan kullanıcılar için kullanılan örtük akış kullanılarak gerçekleştirilir. Ancak uygulamanız MSAL.js 2.0 veya sonraki bir sürümü kullanıyorsa, MSAL.js 2.0+ PKCE ile yetkilendirme kodu akışını desteklediğinden uygulama kaydınızda örtük akış iznini etkinleştirmeyin.
  • /token uç nokta, belirteci tarayıcıdan gizleyen yetkilendirme kodu akışı kullanılarak yapılır.

Talepler

Azure AD B2C kullandığınızda belirteçlerinizin içeriği üzerinde ayrıntılı denetime sahip olursunuz. Uygulamanız için gerekli olan taleplerde belirli kullanıcı veri kümelerini göndermek için kullanıcı akışlarını ve özel ilkeleri yapılandırabilirsiniz. Bu talepler displayName ve emailAddress gibi standart özellikleri içerebilir. Uygulamalarınız, kullanıcıların ve isteklerin kimliğini güvenli bir şekilde doğrulamak için bu talepleri kullanabilir.

Kimlik belirteçlerindeki talepler belirli bir sırada döndürülmüyor. Yeni talepler, herhangi bir zamanda kimlik belirteçlerine eklenebilir. Yeni talepler sunulduğunda uygulamanız bozulmamalıdır. Taleplerinize özel kullanıcı öznitelikleri de ekleyebilirsiniz.

Aşağıdaki tabloda, Azure AD B2C tarafından verilen kimlik belirteçleri ve erişim belirteçlerinde bekleyebileceğiniz talepler listelenmiştir.

Name İste Örnek değer Description
Hedef kitle aud 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 Belirtecin hedeflenen alıcısını tanımlar. Azure AD B2C için hedef kitle, uygulama kimliğidir. Uygulamanız bu değeri doğrulamalı ve eşleşmiyorsa belirteci reddetmelidir. Hedef kitle, kaynakla eş anlamlıdır.
Veren iss https://<tenant-name>.b2clogin.com/775527ff-9a37-4307-8b3d-cc311f58d925/v2.0/ Belirteci oluşturan ve döndüren güvenlik belirteci hizmetini (STS) tanımlar. Ayrıca kullanıcının kimliğinin doğrulandığı dizini de tanımlar. Uygulamanız belirtecin uygun uç noktadan geldiğinden emin olmak için verenin iddiasını doğrulamalıdır.
Verilen yer: iat 1438535543 Belirtecin verildiği zaman, dönem süresinde temsil edilir.
Süre sonu exp 1438539443 Belirtecin geçersiz hale geldiği zaman, dönem süresiyle gösterilir. Uygulamanız belirteç ömrünün geçerliliğini doğrulamak için bu talebi kullanmalıdır.
Daha önce değil nbf 1438535543 Belirtecin geçerli hale geldiği zaman, dönem süresiyle gösterilir. Bu süre genellikle belirtecin verildiği saatle aynıdır. Uygulamanız belirteç ömrünün geçerliliğini doğrulamak için bu talebi kullanmalıdır.
Sürüm ver 1.0 Azure AD B2C tarafından tanımlanan kimlik belirtecinin sürümü.
Kod karması c_hash SGCPtt01wxwfgnYZy2VJtQ Kimlik belirtecinde bulunan kod karması, yalnızca belirtecin OAuth 2.0 yetkilendirme koduyla birlikte verilmesidir. Kod karması, yetkilendirme kodunun orijinalliğini doğrulamak için kullanılabilir. Bu doğrulamayı gerçekleştirme hakkında daha fazla bilgi için bkz. OpenID Connect belirtimi.
Erişim belirteci karması at_hash SGCPtt01wxwfgnYZy2VJtQ Kimlik belirtecinde bulunan erişim belirteci karması, yalnızca belirteç OAuth 2.0 erişim belirteci ile birlikte verildiğinde kullanılır. Erişim belirteci karması, erişim belirtecinin orijinalliğini doğrulamak için kullanılabilir. Bu doğrulamayı gerçekleştirme hakkında daha fazla bilgi için bkz. OpenID Connect belirtimi
Nonce nonce 12345 Nonce, belirteç yeniden yürütme saldırılarını azaltmak için kullanılan bir stratejidir. Uygulamanız, sorgu parametresini kullanarak nonce yetkilendirme isteğinde bir nonce belirtebilir. İstekte sağladığınız değer, yalnızca kimlik belirteci talebinde değiştirilmeden nonce yayılır. Bu talep, uygulamanızın istekte belirtilen değere göre değeri doğrulamasını sağlar. Uygulamanızın kimlik belirteci doğrulama işlemi sırasında bu doğrulamayı gerçekleştirmesi gerekir.
Konu sub 884408e1-2918-4cz0-b12d-3aa027d7563b Belirtecin, bir uygulamanın kullanıcısı gibi bilgileri onayladığı sorumlu. Bu değer sabittir ve yeniden atanamaz veya yeniden kullanılamaz. Belirteç bir kaynağa erişmek için kullanıldığında olduğu gibi, yetkilendirme denetimlerini güvenli bir şekilde gerçekleştirmek için kullanılabilir. Varsayılan olarak, konu talebi dizindeki kullanıcının nesne kimliğiyle doldurulur.
Kimlik doğrulaması bağlam sınıfı başvurusu acr Geçerli değil Yalnızca eski ilkelerle kullanılır.
Güven çerçevesi ilkesi tfp b2c_1_signupsignin1 Kimlik belirtecini almak için kullanılan ilkenin adı.
Kimlik doğrulama süresi auth_time 1438535543 Bir kullanıcının kimlik bilgilerini son girdiği zaman, dönem süresiyle temsil edilir. Bu kimlik doğrulamasının yeni oturum açma, çoklu oturum açma (SSO) oturumu veya başka bir oturum açma türü olması arasında ayrım yoktur. auth_time, uygulamanın (veya kullanıcının) Azure AD B2C'ye karşı kimlik doğrulama girişimini en son başlatışıdır. Kimlik doğrulaması için kullanılan yöntem farklı değildir.
Kapsam scp Read Erişim belirteci için kaynağa verilen izinler. Verilen birden çok izin bir boşlukla ayrılır.
Yetkili Taraf azp 975251ed-e4f5-4efd-abcb-5f1a8f566ab7 İsteği başlatan istemci uygulamanın uygulama kimliği .

Yapılandırma

Aşağıdaki özellikler, Azure AD B2C tarafından yayılan güvenlik belirteçlerinin yaşamlarını yönetmek için kullanılır:

  • Erişim & Kimlik belirteci yaşam süreleri (dakika) - Korumalı bir kaynağa erişim kazanmak için kullanılan OAuth 2.0 taşıyıcı belirtecinin ömrü. Varsayılan değer 60 dakikadır. Minimum (dahil) 5 dakikadır. Maksimum (dahil) 1440 dakikadır.

  • Yenileme belirteci yaşam süresi (gün) - Yenileme belirtecinin yeni erişim veya kimlik belirteci almak için kullanılabilmesi için en uzun süre. Bu süre, uygulamanıza kapsam verildiyse offline_access yeni bir yenileme belirteci alma işlemini de kapsar. Varsayılan değer 14 gündür. Minimum (dahil) bir gündür. Maksimum (dahil) 90 gündür.

  • Yenileme belirteci kayan pencere ömrü (gün) - Bu süre geçtikten sonra, uygulama tarafından alınan en son yenileme belirtecinin geçerlilik süresinden bağımsız olarak kullanıcı yeniden kimlik doğrulaması yapmaya zorlanır. Yalnızca anahtar Sınırlandı olarak ayarlandıysa sağlanabilir. Yenileme belirteci yaşam süresi (gün) değerinden büyük veya bu değere eşit olmalıdır. Anahtar Süre sonu yok olarak ayarlandıysa, belirli bir değer sağlayamazsınız. Varsayılan değer 90 gündür. Minimum (dahil) bir gündür. Maksimum (dahil) 365 gündür.

Aşağıdaki kullanım örnekleri bu özellikler kullanılarak etkinleştirilir:

  • Kullanıcı uygulamada sürekli olarak etkin olduğu sürece kullanıcının bir mobil uygulamada oturumunu süresiz olarak açmasına izin verin. Oturum açma kullanıcı akışınızda Yenileme belirteci kayan penceresi yaşam süresini (gün)Süre sonu yok olarak ayarlayabilirsiniz.
  • Uygun erişim belirteci yaşam alanlarını ayarlayarak sektörünüzün güvenlik ve uyumluluk gereksinimlerini karşılayın.

Parola sıfırlama kullanıcı akışları için bu ayarlar kullanılamaz.

Uyumluluk

Belirteç uyumluluğunu yönetmek için aşağıdaki özellikler kullanılır:

  • Veren (iss) talebi - Bu özellik, belirteci veren Azure AD B2C kiracısını tanımlar. https://<domain>/{B2C tenant GUID}/v2.0/ varsayılan değerdir. değerihttps://<domain>/tfp/{B2C tenant GUID}/{Policy ID}/v2.0/, hem Azure AD B2C kiracısının hem de belirteç isteğinde kullanılan kullanıcı akışının kimliklerini içerir. Uygulamanızın veya kitaplığınızın OpenID Connect Discovery 1.0 belirtimiyle uyumlu olması Azure AD B2C gerekiyorsa, bu değeri kullanın.

  • Konu (alt) talebi - Bu özellik, belirtecin bilgileri onayladığı varlığı tanımlar. Varsayılan değer, belirteçteki talebi kullanıcının nesne kimliğiyle dolduran subObjectID değeridir. Desteklenmiyor değeri yalnızca geriye dönük uyumluluk için sağlanır. Mümkün olan en kısa sürede ObjectID'ye geçmeniz önerilir.

  • İlke kimliğini temsil eden talep - Bu özellik, belirteç isteğinde kullanılan ilke adının dolduruldığı talep türünü tanımlar. tfp varsayılan değerdir. değeri acr yalnızca geriye dönük uyumluluk için sağlanır.

Geçiş

Kullanıcı yolculuğu başladığında, Azure AD B2C bir kimlik sağlayıcısından erişim belirteci alır. Azure AD B2C, kullanıcı hakkındaki bilgileri almak için bu belirteci kullanır. Belirteci Azure AD B2C'de kaydettiğiniz uygulamalara geçirmek için kullanıcı akışınızda bir talebi etkinleştirirsiniz. Belirteci talep olarak geçirme avantajından yararlanmak için uygulamanızın önerilen bir kullanıcı akışı kullanıyor olması gerekir.

Azure AD B2C şu anda yalnızca Facebook ve Google dahil OAuth 2.0 kimlik sağlayıcılarının erişim belirtecinin geçirilmesini desteklemektedir. Diğer tüm kimlik sağlayıcıları için talep boş döndürülür.

Doğrulama

Bir belirteci doğrulamak için uygulamanızın belirtecin hem imzasını hem de taleplerini denetlemesi gerekir. 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 bu seçenekleri incelemeniz önerilir.

İmzayı doğrulama

JWT üç segment içerir: üst bilgi, gövde ve imza. İmza kesimi, belirtecin orijinalliğini doğrulamak için kullanılabilir ve böylece uygulamanız tarafından güvenilir olmasını sağlayabilirsiniz. Azure AD B2C belirteçleri, RSA 256 gibi endüstri standardı asimetrik şifreleme algoritmaları kullanılarak imzalıdır.

Belirtecin üst bilgisi, belirteci imzalamak için kullanılan anahtar ve şifreleme yöntemi hakkında bilgi içerir:

{
        "typ": "JWT",
        "alg": "RS256",
        "kid": "GvnPApfWMdLRi8PDmisFn7bprKg"
}

Alg talebi değeri, belirteci imzalamak için kullanılan algoritmadır. Çocuk talebi değeri, belirteci imzalamak için kullanılan ortak anahtardır. Belirli bir zamanda Azure AD B2C, bir dizi ortak-özel anahtar çiftinin herhangi birini kullanarak belirteci imzalayabilir. Azure AD B2C olası tuş kümesini düzenli aralıklarla döndürür. Uygulamanız bu anahtar değişikliklerini otomatik olarak işlemek için yazılmalıdır. Azure AD B2C tarafından kullanılan ortak anahtar güncelleştirmelerini denetlemek için makul bir sıklık 24 saatte bir kullanılır. Beklenmeyen anahtar değişikliklerini işlemek için uygulamanızın beklenmeyen bir çocuk değeri alması durumunda ortak anahtarları yeniden alacak şekilde yazılması gerekir.

Azure AD B2C'de OpenID Connect meta veri uç noktası vardır. Uygulamalar bu uç noktayı kullanarak çalışma zamanında Azure AD B2C hakkında bilgi isteyebilir. Bu bilgiler uç noktaları, belirteç içeriklerini ve belirteç imzalama anahtarlarını içerir. Azure AD B2C kiracınız her ilke için bir JSON meta veri belgesi içerir. Meta veri belgesi, birkaç yararlı bilgi parçası içeren bir JSON nesnesidir. Meta veriler, belirteçleri imzalamak için kullanılan ortak anahtar kümesinin konumunu sağlayan jwks_uri içerir. Bu konum burada sağlanır, ancak meta veri belgesini kullanarak ve jwks_uri ayrıştırarak konumu dinamik olarak getirmek en iyisidir:

https://contoso.b2clogin.com/contoso.onmicrosoft.com/b2c_1_signupsignin1/discovery/v2.0/keys

Bu URL'de bulunan JSON belgesi, belirli bir anda kullanımda olan tüm ortak anahtar bilgilerini içerir. Uygulamanız JWT üst bilgisindeki talebi kullanarak kid belirli bir belirteci imzalamak için kullanılan JSON belgesindeki ortak anahtarı seçebilir. Daha sonra doğru ortak anahtarı ve belirtilen algoritmayı kullanarak imza doğrulama gerçekleştirebilir.

Kiracıdaki contoso.onmicrosoft.com ilkenin B2C_1_signupsignin1 meta veri belgesi şu konumda bulunur:

https://contoso.b2clogin.com/contoso.onmicrosoft.com/b2c_1_signupsignin1/v2.0/.well-known/openid-configuration

Belirteci imzalamak için kullanılan ilkeyi (ve meta verileri istemek için nereye gidileceğini) belirlemek için iki seçeneğiniz vardır. İlk olarak, ilke adı belirteçteki tfp (varsayılan) veya acr talepte (yapılandırıldığı gibi) eklenir. Gövde kodunu çözen ve sonuçlanan JSON dizesini seri durumdan çıkararak JWT'nin gövdesinden talepleri ayrıştırabilirsiniz. tfp veya acr talebi, belirteci vermek için kullanılan ilkenin adıdır. Diğer seçenek, isteği gönderdiğinizde ilkeyi parametresinin state değerinde kodlamak ve ardından hangi ilkenin kullanıldığını belirlemek için kodu çözmektir. Her iki yöntem de geçerlidir.

Azure AD B2C, RFC 3447 belirtimini temel alan RS256 algoritmasını kullanır. Ortak anahtar iki bileşenden oluşur: RSA modulus (n) ve RSA ortak üssü (e). Belirteç doğrulaması için ve e değerlerini program aracılığıyla bir sertifika biçimine dönüştürebilirsinizn.

İmza doğrulama işleminin nasıl yapılacağının açıklaması bu belgenin kapsamı dışındadır. Bir belirteci doğrulamanıza yardımcı olmak için birçok açık kaynak kitaplığı kullanılabilir.

Talepleri doğrulama

Uygulamalarınız veya API'niz bir kimlik belirteci aldığında, kimlik belirtecindeki talepler üzerinde de çeşitli denetimler gerçekleştirmelidir. Aşağıdaki talepler denetlenmelidir:

  • audience - Kimlik belirtecinin uygulamanıza verilmesinin amaçlandığını doğrular.
  • önce değil ve süre sonu - Kimlik belirtecinin süresinin dolmadığını doğrular.
  • veren - Belirtecin Azure AD B2C tarafından uygulamanıza verildiğini doğrular.
  • nonce - Belirteç yeniden yürütme saldırısını azaltmaya yönelik bir strateji.

Uygulamanızın gerçekleştirmesi gereken doğrulamaların tam listesi için OpenID Connect belirtimine bakın.

Sonraki adımlar

Erişim belirteçlerini kullanma hakkında daha fazla bilgi edinin.