Kimlik belirteci talep başvurusu

Kimlik belirteçleri JSON web belirteçleridir (JWT). v1.0 ve v2.0 kimlik belirteçlerinin taşıdığı bilgilerde farklılıklar vardır. Sürüm, istenen uç noktayı temel alır. Mevcut uygulamalar büyük olasılıkla Azure AD v1.0 uç noktasını kullansa da, yeni uygulamaların v2.0 uç noktasını kullanması gerekir.

  • v1.0: https://login.microsoftonline.com/common/oauth2/authorize
  • v2.0: https://login.microsoftonline.com/common/oauth2/v2.0/authorize

Aşağıdaki bölümlerde listelenen tüm JWT talepleri, aksi belirtilmedikçe hem v1.0 hem de v2.0 belirteçlerinde görünür. Kimlik belirteçleri üst bilgi, yük ve imzadan oluşur. Üst bilgi ve imza belirtecin orijinalliğini doğrulamak için kullanılırken, yük istemciniz tarafından istenen kullanıcı hakkındaki bilgileri içerir.

Üst bilgi talepleri

Aşağıdaki tabloda, kimlik belirteçlerinde bulunan üst bilgi talepleri gösterilmektedir.

Talep Biçimlendir Açıklama
typ Dize - her zaman "JWT" Belirtecin bir JWT belirteci olduğunu gösterir.
alg String Belirteci imzalamak için kullanılan algoritmayı gösterir. Örneğin: "RS256"
kid String Belirtecin imzasını doğrulamak için kullanılabilecek ortak anahtarın parmak izini belirtir. Hem v1.0 hem de v2.0 kimlik belirteçlerinde yayılan.
x5t String ile aynı (kullanımda ve değerde) kidçalışır. x5t yalnızca uyumluluk amacıyla v1.0 kimlik belirteçlerinde yayılan eski bir taleptir.

Yük talepleri

Aşağıdaki tabloda, varsayılan olarak çoğu kimlik belirtecinde bulunan talepler gösterilmektedir (not edilen durumlar dışında). Ancak uygulamanız, kimlik belirtecinde daha fazla talep istemek için isteğe bağlı talepleri kullanabilir. İsteğe bağlı talepler, talepten groups kullanıcının adıyla ilgili bilgilere kadar değişebilir.

Talep Biçimlendir Açıklama
aud Dize, Uygulama Kimliği GUID'si Belirtecin hedeflenen alıcısını tanımlar. 'de id_tokenshedef kitle, uygulamanızın Uygulama Kimliği'dir ve Azure portalında uygulamanıza atanır. Bu değer doğrulanmalıdır. Belirtecin uygulamanızın Uygulama Kimliği ile eşleşmemesi durumunda reddedilmesi gerekir.
iss Dize, veren bir URI Belirteci oluşturan ve döndüren vereni veya "yetkilendirme sunucusunu" tanımlar. Ayrıca, kullanıcının kimliğinin doğrulandığı kiracıyı da tanımlar. Belirteç v2.0 uç noktası tarafından verildiyse, URI ile /v2.0biter. Kullanıcının bir Microsoft hesabından bir tüketici kullanıcısı olduğunu gösteren GUID değeridir 9188040d-6c67-4c5b-b112-36a304b66dad. Uygulamanız, varsa uygulamada oturum açabilen kiracı kümesini kısıtlamak için talebin GUID bölümünü kullanmalıdır.
iat int, unix zaman damgası Belirteç için kimlik doğrulamasının ne zaman gerçekleştiğini gösterir.
idp Dize, genellikle bir STS URI'si Belirtecin öznesinin kimliğini doğrulayan kimlik sağlayıcısını kaydeder. Bu değer, kullanıcı hesabı verenle (örneğin konuklar) aynı kiracıda olmadığı sürece veren talebin değeriyle aynıdır. Talep mevcut değilse değerinin iss kullanılabileceğini gösterir. Kuruluş bağlamında kullanılan kişisel hesaplar için (örneğin, bir kiracıya davet edilen kişisel hesap), idp talep 'live.com' veya Microsoft hesabı kiracısını 9188040d-6c67-4c5b-b112-36a304b66dadiçeren bir STS URI'si olabilir.
nbf int, unix zaman damgası JWT'nin işlenmek üzere kabul edilememe süresini tanımlar.
exp int, unix zaman damgası JWT'nin işlenmek üzere kabul edilememesinde veya sonrasında sona erme süresini tanımlar. Belirli durumlarda, bir kaynak bu süreden önce belirteci reddedebilir. Örneğin, kimlik doğrulamasında bir değişiklik gerekiyorsa veya belirteç iptali algılandıysa.
c_hash String Kod karması, kimlik belirteçlerine yalnızca kimlik belirteci bir OAuth 2.0 yetkilendirme koduyla verildiğinde eklenir. Yetkilendirme kodunun orijinalliğini doğrulamak için kullanılabilir. Bu doğrulamanın nasıl yapılacağını anlamak için bkz . OpenID Connect belirtimi. Bu talep, /token uç noktasından kimlik belirteçlerinde döndürülmüyor.
at_hash String Erişim belirteci karması kimlik belirteçlerine yalnızca kimlik belirteci OAuth 2.0 erişim belirteci ile uç noktadan verildiğinde /authorize eklenir. Erişim belirtecinin orijinalliğini doğrulamak için kullanılabilir. Bu doğrulamanın nasıl yapılacağını anlamak için bkz . OpenID Connect belirtimi. Bu talep, uç noktadan kimlik belirteçlerinde /token döndürülmüyor.
aio Opak Dize Belirteç yeniden kullanımı için verileri kaydetmek için kullanılan iç talep. Yoksayılmalıdır.
preferred_username String Kullanıcıyı temsil eden birincil kullanıcı adı. Belirtilen biçime sahip olmayan bir e-posta adresi, telefon numarası veya genel bir kullanıcı adı olabilir. Değeri değişebilir ve zaman içinde değişebilir. Bu değer, değişebilir olduğundan yetkilendirme kararları almak için kullanılamaz. Kullanıcı adı ipuçları için ve kullanıcı tarafından okunabilen kullanıcı arabiriminde kullanıcı adı olarak kullanılabilir. Bu profile talebi almak için kapsam gereklidir. Yalnızca v2.0 belirteçlerinde sunulur.
email String E-posta adresi olan konuk hesapları için varsayılan olarak sunulur. Uygulamanız, isteğe bağlı talebi kullanarak email yönetilen kullanıcılar (kaynakla aynı kiracıdan) için e-posta talebi isteyebilir. Bu değerin doğru olduğu garanti edilmediğinden zaman içinde değişebilir. Hiçbir zaman yetkilendirme için veya bir kullanıcının verilerini kaydetmek için kullanmayın. Uygulamanızda adreslenebilir bir e-posta adresi gerekiyorsa, bu talebi UX'inizde öneri veya önceden doldurma olarak kullanarak doğrudan kullanıcıdan bu verileri isteyin. v2.0 uç noktasında uygulamanız OpenID Connect kapsamını da isteyebilir email . Talebi almak için hem isteğe bağlı talebi hem de kapsamı istemeniz gerekmez.
name String Talep, name belirtecin konusunu tanımlayan, insan tarafından okunabilir bir değer sağlar. Değerin benzersiz olduğu garanti değildir, değiştirilebilir ve yalnızca görüntüleme amacıyla kullanılmalıdır. Bu profile talebi almak için kapsam gereklidir.
nonce String Nonce, özgün yetkilendirme isteğinde yer alan parametreyle IDP ile eşleşir. Eşleşmiyorsa, uygulamanız belirteci reddetmelidir.
oid Dize, GUID Bir nesnenin sabit tanımlayıcısı ( bu örnekte, bir kullanıcı hesabı). Bu kimlik, kullanıcıyı uygulamalar arasında benzersiz olarak tanımlar. Aynı kullanıcıda oturum açmış iki farklı uygulama talepte oid aynı değeri alır. Microsoft Graph bu kimliği bir kullanıcı hesabının özelliği olarak id döndürür. oid birden çok uygulamanın kullanıcılarla bağıntı oluşturmasına izin verdiğindenprofile, bu talebi almak için kapsam gereklidir. Birden çok kiracıda tek bir kullanıcı varsa, kullanıcı her kiracıda farklı bir nesne kimliği içerir; kullanıcı her hesapta aynı kimlik bilgileriyle oturum açtığı halde farklı hesaplar olarak kabul edilir. Talep oid bir GUID'dir ve yeniden kullanılamaz.
roles Dizeler dizisi Oturum açan kullanıcıya atanan rol kümesi.
rh Opak Dize Belirteçleri yeniden doğrulamada kullanılan iç talep. Yoksayılmalıdır.
sub String Belirteçteki bilgilerin konusu. Örneğin, bir uygulamanın kullanıcısı. Bu değer sabittir ve yeniden atanamaz veya yeniden kullanılamaz. Konu çift tabanlı bir tanımlayıcıdır ve bir uygulama kimliği için benzersizdir. Tek bir kullanıcı iki farklı istemci kimliği kullanarak iki farklı uygulamada oturum açarsa, bu uygulamalar konu talebi için iki farklı değer alır. Mimarinize ve gizlilik gereksinimlerinize bağlı olarak iki değer isteyebilir veya istemeyebilirsiniz.
tid Dize, GUID Kullanıcının oturum açmakta olduğu kiracıyı temsil eder. İş ve okul hesapları için GUID, kullanıcının oturum açmakta olduğu kuruluşun sabit kiracı kimliğidir. Kişisel Microsoft hesabı kiracısında (Xbox, Yaşam için Teams veya Outlook gibi hizmetler) oturum açma işlemleri için değeri şeklindedir 9188040d-6c67-4c5b-b112-36a304b66dad.
unique_name String Yalnızca v1.0 belirteçlerinde bulunur. Belirtecin konusunu tanımlayan ve okunabilir bir değer sunar. Bu değerin bir kiracı içinde benzersiz olacağı garanti değildir ve yalnızca görüntüleme amacıyla kullanılmalıdır.
uti String JWT belirtimindeki ile jti eşdeğer belirteç tanımlayıcısı talebi. Büyük/küçük harfe duyarlı benzersiz, belirteç başına tanımlayıcı.
ver Dize, 1.0 veya 2.0 Kimlik belirtecinin sürümünü gösterir.
hasgroups Boolean Varsa, kullanıcının en az bir grupta olduğunu belirten her zaman true olur. İstemcinin kullanıcı gruplarını (https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects) belirlemek için Microsoft Graph API'sini kullanması gerektiğini gösterir.
groups:src1 JSON nesnesi Uzunluğu hasgroupssınırlı olmayan ancak belirteç için hala çok büyük olan belirteç istekleri için, kullanıcı için tam grup listesinin bağlantısı eklenir. Dağıtılmış talep olarak JWT'ler için, talep yerine groups yeni bir talep olarak SAML için.

Örnek JWT Değeri:
"groups":"src1"
"_claim_sources: "src1" : { "endpoint" : "https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects" }

Daha fazla bilgi için bkz . Gruplar fazla kullanım talebi.

Bir kullanıcıyı güvenilir bir şekilde tanımlamak için talepleri kullanma

Bir kullanıcıyı tanımlarken, zaman içinde sabit ve benzersiz kalan bilgileri kullanmak kritik önem taşır. Eski uygulamalar bazen e-posta adresi, telefon numarası veya UPN gibi alanlar kullanır. Bu alanların tümü zaman içinde değişebilir ve zaman içinde yeniden kullanılabilir. Örneğin, bir çalışan adını değiştirdiğinde veya bir çalışana, artık mevcut olmayan önceki bir çalışanla eşleşen bir e-posta adresi verildiğinde. Uygulamanızın bir kullanıcıyı tanımlamak için okunabilir verileri kullanmaması gerekir; genel olarak insan tarafından okunabilir olması, birinin okuyabileceği ve değiştirmek istediği anlamına gelir. Bunun yerine, OIDC standardı tarafından sağlanan talepleri veya Microsoft sub tarafından sağlanan uzantı taleplerini (ve oid talepleri) kullanın.

Kullanıcı başına bilgileri doğru bir şekilde depolamak için, gerekirse yönlendirme veya parçalama için kullanılan tek başına veya oid tek başına (GUID'ler benzersizdir) tid kullanınsub. Hizmetler oid arasında veri paylaşmanız gerekiyorsa ve tid tüm uygulamalar kiracıda hareket eden bir kullanıcı için aynı oid ve tid taleplere sahip olduğu için en iyisidir. Talep sub , benzersiz bir çifte göre değerdir. Değer, belirteç alıcısı, kiracı ve kullanıcı birleşimini temel alır. Bir kullanıcı için kimlik belirteci isteyen iki uygulama farklı sub talepler alır, ancak bu kullanıcı için aynı oid talepler alır.

Not

Kiracılar idp arasında kullanıcıları ilişkilendirmek amacıyla bir kullanıcı hakkındaki bilgileri depolamak için bu talebi kullanmayın. Bir kullanıcının ve sub talepleri, uygulamaların kiracılar arasında kullanıcıları izleyememelerini sağlamak için tasarım gereği kiracılar arasında değiştiğinden çalışmazoid.

Bir kullanıcının bir kiracıda barındırıldığı ve başka bir kiracıda kimlik doğrulaması yaptığı konuk senaryoları, kullanıcıya hizmet için yepyeni bir kullanıcı gibi davranmalıdır. Bir kiracıdaki belgeleriniz ve ayrıcalıklarınız başka bir kiracıda geçerli olmamalıdır. Bu kısıtlama, kiracılar arasında yanlışlıkla veri sızıntısını ve veri yaşam döngülerinin uygulanmasını önlemek için önemlidir. Bir konuğu kiracıdan çıkarmak, bu kiracıda oluşturduğu verilere erişimini de kaldırmalıdır.

Grup fazla kullanım talebi

Belirteç boyutunun HTTP üst bilgi boyutu sınırlarını aşmadığından emin olmak için, talepte groups içerdiği nesne kimliklerinin sayısı sınırlıdır. Bir kullanıcı fazla kullanım sınırından (SAML belirteçleri için 150, JWT belirteçleri için 200) daha fazla grubun üyesiyse, grup talebi belirteçte yer almaz. Bunun yerine, belirteçte kullanıcının grup üyeliğini almak için Microsoft Graph API'sini sorgulamak için uygulamaya işaret eden bir fazla kullanım talebi içerir.

{
  ...
  "_claim_names": {
   "groups": "src1"
    },
    {
  "_claim_sources": {
    "src1": {
        "endpoint":"[Url to get this user's group membership from]"
        }
       }
     }
  ...
}

Sonraki adımlar

  • Microsoft Entra Id'de kullanılan kimlik belirteçleri hakkında daha fazla bilgi edinin.