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.
Bu makalede, Microsoft kimlik platformunda bir account
'nin ne olduğuna dair genel bir bakış sağlanır.
Microsoft Authentication Library (MSAL) API'sinde kullanıcı terimini hesap terimiyle değiştirir. Bunun bir nedeni, bir kullanıcının (insan veya yazılım aracısı) birden çok hesabı olması veya kullanabilmesidir. Bu hesaplar kullanıcının kendi kuruluşunda ve/veya kullanıcının üyesi olduğu diğer kuruluşlarda olabilir.
Microsoft kimlik platformu bir hesap şunlardan oluşur:
- Benzersiz bir tanımlayıcı.
- Hesabın sahipliğini/denetimini göstermek için kullanılan bir veya daha fazla kimlik bilgisi.
- Aşağıdaki gibi özniteliklerden oluşan bir veya daha fazla profil:
- Resim, Ad, Soyadı, Ünvan, Ofis Konumu
- Bir hesabın yetki kaynağı veya kayıt sistemi vardır. Bu, hesabın oluşturulduğu ve bu hesapla ilişkili kimlik bilgilerinin depolandığı sistemdir. Microsoft kimlik platformu gibi çok kiracılı sistemlerde kayıt sistemi hesabın
tenant
oluşturulduğu yerdir. Bu kiracıhome tenant
olarak da adlandırılır. - Microsoft kimlik platformu hesaplarda aşağıdaki kayıt sistemleri vardır:
- Azure Active Directory B2C'yi içeren Microsoft Entra ID.
- Microsoft hesabı (Live).
- Microsoft kimlik platformu dışındaki kayıt sistemlerinden hesaplar, aşağıdakiler dahil olmak üzere Microsoft kimlik platformu içinde temsil edilir:
- bağlantılı şirket içi dizinlerden kimlikler (Windows Server Active Directory)
- LinkedIn, GitHub ve benzeri platformlardan dış kimlikler. Böyle durumlarda, bir hesabın hem bir kaynak kayıt sistemi hem de Microsoft kimlik platformu içinde bir kayıt sistemi vardır.
- Microsoft kimlik platformu, birden çok kuruluşa (Microsoft Entra kiracıları) ait kaynaklara erişmek için tek bir hesabın kullanılmasına izin verir.
- Bir kayıt sisteminden (Microsoft Entra kiracısı A) bir hesabın başka bir kayıt sistemindeki (Microsoft Entra kiracısı B) bir kaynağa erişimi olduğunu kaydetmek için, hesabın kaynağın tanımlandığı kiracıda temsil edilmesi gerekir. Bu, B sistemindeki A sisteminden hesabın yerel kaydını oluşturarak yapılır.
- Hesabın gösterimi olan bu yerel kayıt, özgün hesaba bağlıdır.
- MSAL bu yerel kayıtı
Tenant Profile
olarak kullanıma sunar. - Kiracı Profili,İş Unvanı, Office Konumu, Kişi Bilgileri gibi yerel bağlama uygun farklı özniteliklere sahip olabilir.
- Bir hesap bir veya daha fazla kiracıda mevcut olabileceğinden, bir hesabın birden fazla profili olabilir.
Not
MSAL, Microsoft hesap sistemini (Live, MSA) Microsoft kimlik platformu içinde başka bir kiracı olarak ele alır. Microsoft hesabı kiracısının kiracı kimliği: 9188040d-6c67-4c5b-b112-36a304b66dad
Hesaba genel bakış diyagramı
Yukarıdaki diyagramda:
- Hesap
bob@contoso.com
, şirket içi Windows Server Active Directory'de (kaynak şirket içi kayıt sistemi) oluşturulur. - Hesap
tom@live.com
, Microsoft hesabı kiracısında oluşturulur. -
bob@contoso.com
aşağıdaki Microsoft Entra kiracılarında en az bir kaynağa erişebilir:- contoso.com (bulut kayıt sistemi - şirket içi kayıt sistemine bağlı)
- fabrikam.com
- woodgrovebank.com
- Bu kiracıların her birinde için
bob@contoso.com
bir kiracı profili vardır.
-
tom@live.com
aşağıdaki Microsoft kiracılarındaki kaynaklara erişebilir:- contoso.com
- fabrikam.com
- Bu kiracıların her birinde için
tom@live.com
bir kiracı profili vardır.
- Diğer kiracılardaki Tom ve Bob hakkındaki bilgiler kayıt sistemindekinden farklı olabilir. bunlar İş unvanı, Office Konumu gibi özniteliklere göre farklılık gösterebilir. Her kuruluştaki (Microsoft Entra kiracısı) grupların ve/veya rollerin üyesi olabilirler. Bu bilgileri kiracı profili olarak bob@contoso.com adlandırıyoruz.
Diyagramda bob@contoso.com ve tom@live.com farklı Microsoft Entra kiracılarındaki kaynaklara erişebilirsiniz. Daha fazla bilgi için Azure portalında Microsoft Entra B2B işbirliği kullanıcıları ekleme konusuna bakın.
Hesaplar ve çoklu oturum açma (SSO)
MSAL belirteci önbelleği, hesap başına tek bir yenileme belirteci depolar. Bu yenileme belirteci, birden çok Microsoft kimlik platformu kiracısından sessizce erişim belirteçleri istemek için kullanılabilir. Bir cihaza bir aracı yüklendiğinde, hesap aracı tarafından yönetilir ve cihaz genelinde çoklu oturum açma mümkün hale gelir.
Önemli
İşletmeden Müşteriye (B2C) hesabı ve yenileme belirteci davranışı, Microsoft kimlik platformu geri kalanından farklıdır. Daha fazla bilgi için bkz . B2C İlkeleri ve Hesapları.
Hesap tanımlayıcıları
MSAL hesap kimliği bir hesap nesne kimliği değildir. Microsoft kimlik platformundaki benzersizliği iletmek dışında başka bir amaç için ayrıştırılması veya güvenilmesi düşünülmemiştir.
MSAL, MSAL önbelleğinde bulunan hesap için geçerli bir tanımlayıcı kullanarak hesapları arayabilir. Örneğin, tanımlayıcıların her biri geçerli olduğundan aşağıdakiler her zaman için tom@live.com aynı hesap nesnesini alır:
// The following would always retrieve the same account object for tom@live.com because each identifier is valid
IAccount account = app.getAccount("<tome@live.com msal account id>");
IAccount account = app.getAccount("<tom@live.com contoso user object id>");
IAccount account = app.getAccount("<tom@live.com woodgrovebank user object id>");
Bir hesap hakkındaki taleplere erişme
MSAL, erişim belirteci istemenin yanı sıra her kiracıdan her zaman bir kimlik belirteci de istemektedir. Bunu her zaman aşağıdaki kapsamları isteyerek yapar:
- Açık Kimlik
- profil
Kimlik belirteci taleplerin listesini içerir.
Claims
hesap hakkındaki ad/değer çiftleridir ve istekte bulunmak için kullanılır.
Daha önce de belirtildiği gibi, bir hesabın bulunduğu her kiracı hesap hakkında farklı bilgiler depolar; bunlarla sınırlı olmamak üzere iş unvanı, ofis konumu vb. öznitelikler.
Bir hesap birden çok kuruluşta üye veya konuk olabilir ancak MSAL, hesabın üyesi olduğu kiracıların listesini almak için bir hizmeti sorgulamaz. Bunun yerine, MSAL, gerçekleştirilen belirteç isteklerinin bir sonucu olarak hesabın bulunduğu kiracıların bir listesini oluşturur.
Hesap nesnesinde kullanıma sunulan talepler her zaman bir hesap için 'ev kiracısı'/{authority}'den gelen taleplerdir. Bu hesap, ev kiracısı için belirteç istemek için kullanılmadıysa, MSAL hesap nesnesi aracılığıyla talep sağlayamaz. Örneğin:
// Pseudo Code
IAccount account = getAccount("accountid");
String username = account.getClaims().get("preferred_username");
String tenantId = account.getClaims().get("tid"); // tenant id
String objectId = account.getClaims().get("oid"); // object id
String issuer = account.getClaims().get("iss"); // The tenant specific authority that issued the id_token
İpucu
Hesap nesnesinden kullanılabilen taleplerin listesini görmek için kimlik belirteci talep başvurusuna bakın.
İpucu
id_token'a ek talepler dahil etmek için Nasıl yapılır: Microsoft Entra uygulamanıza isteğe bağlı talepler sağlama makalesindeki isteğe bağlı talepler belgelerine başvurun
Kiracı profili taleplerine erişme
Bir hesap hakkındaki taleplere diğer kiracılarda göründükleri gibi erişmek için önce hesap nesnenizi IMultiTenantAccount
öğesine atamanız gerekir. Tüm hesaplar çok kiracılı olabilir, ancak MSAL aracılığıyla kullanılabilen kiracı profillerinin sayısı, geçerli hesabı kullanarak belirteç isteğinde bulunduğunuz kiracılara bağlıdır. Örneğin:
// Pseudo Code
IAccount account = getAccount("accountid");
IMultiTenantAccount multiTenantAccount = (IMultiTenantAccount)account;
multiTenantAccount.getTenantProfiles().get("tenantid for fabrikam").getClaims().get("family_name");
multiTenantAccount.getTenantProfiles().get("tenantid for contoso").getClaims().get("family_name");
B2C ilkeleri ve hesapları
Bir hesabın yenileme belirteçleri B2C ilkeleri arasında paylaşılamaz. Sonuç olarak, belirteçleri kullanarak çoklu oturum açma mümkün değildir. Bu, çoklu oturum açmanın mümkün olmadığı anlamına gelmez. Bu, çoklu oturum açma özelliğinin çoklu oturum açmayı etkinleştirmek için tanımlama bilgisinin kullanılabildiği etkileşimli bir deneyim kullanması anlamına gelir.
Bu, MSAL söz konusu olduğunda, farklı B2C ilkeleri kullanarak belirteçler alırsanız, bunların her biri kendi tanımlayıcısına sahip ayrı hesaplar olarak ele alındığı anlamına gelir. kullanarak acquireTokenSilent
belirteç istemek için bir hesap kullanmak istiyorsanız, belirteç isteğiyle kullandığınız ilkeyle eşleşen hesaplar listesinden hesabı seçmeniz gerekir. Örneğin:
// Get Account For Policy
String policyId = "SignIn";
IAccount signInPolicyAccount = getAccountForPolicyId(app, policyId);
private IAccount getAccountForPolicy(IPublicClientApplication app, String policyId)
{
List<IAccount> accounts = app.getAccounts();
foreach(IAccount account : accounts)
{
if (account.getClaims().get("tfp").equals(policyId))
{
return account;
}
}
return null;
}