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_tokens hedef 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.0 biter. 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-36a304b66dad iç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 hasgroups sı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]"
}
}
}
...
}