Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera omówienie, czym jest account
w platformie tożsamości Microsoft.
Interfejs API biblioteki Microsoft Authentication Library (MSAL) zastępuje termin użytkownik terminem konto. Jednym z powodów jest to, że użytkownik (użytkownik lub agent oprogramowania) może mieć lub używać wielu kont. Te konta mogą znajdować się we własnej organizacji użytkownika i/lub w innych organizacjach, których członkiem jest użytkownik.
Konto na platformie tożsamości Microsoft składa się z:
- Unikatowy identyfikator.
- Co najmniej jedno poświadczenia używane do zademonstrowania własności/kontroli konta.
- Co najmniej jeden profil składający się z atrybutów, takich jak:
- Zdjęcie, Imię, Nazwisko, Tytuł, Lokalizacja biura
- Konto ma źródło autorytetu lub system rejestru. Jest to system, w którym jest tworzone konto i gdzie są przechowywane poświadczenia skojarzone z tym kontem. W systemach wielodostępnych, takich jak platforma tożsamości firmy Microsoft, system, w którym zapisywane są dane, jest
tenant
miejscem utworzenia konta. Ten najemca jest również nazywany jakohome tenant
. - Konta w Platforma tożsamości Microsoft mają następujące systemy rekordów:
- Microsoft Entra ID, w tym Azure Active Directory B2C.
- Konto Microsoft (na żywo).
- Konta z systemów ewidencji spoza platformy tożsamości Microsoft są reprezentowane na platformie tożsamości Microsoft, w tym:
- tożsamości z połączonych katalogów lokalnych (Windows Server Active Directory)
- tożsamości zewnętrzne z LinkedIn, GitHub i innych serwisów. W takich przypadkach konto ma zarówno źródłowy system rejestrów, jak i system rejestrów w ramach platformy tożsamości Microsoft.
- Platforma tożsamości Microsoft umożliwia używanie jednego konta do uzyskiwania dostępu do zasobów należących do wielu organizacji (dzierżawcy Microsoft Entra).
- Aby zarejestrować, że konto z jednego systemu ewidencji (dzierżawa Microsoft Entra A) ma dostęp do zasobu w innym systemie ewidencji (dzierżawa Microsoft Entra B), konto musi być reprezentowane w dzierżawie, w której zasób jest zdefiniowany. Odbywa się to przez utworzenie lokalnego rekordu konta z systemu A w systemie B.
- Ten rekord lokalny, czyli reprezentacja konta, jest powiązany z oryginalnym kontem.
- Biblioteka MSAL udostępnia ten rekord lokalny jako
Tenant Profile
. - Profil najemcy może mieć różne atrybuty, które są odpowiednie dla kontekstu lokalnego, takie jak stanowisko, lokalizacja biura, informacje kontaktowe itd.
- Ponieważ konto może znajdować się w jednej lub więcej dzierżawach, może mieć więcej niż jeden profil.
Uwaga
Biblioteka MSAL traktuje system kont Microsoft (Live, MSA) jako innego dzierżawcę w ramach platformy tożsamości Microsoft. Identyfikator dzierżawy konta Microsoft to: 9188040d-6c67-4c5b-b112-36a304b66dad
Diagram przeglądu konta
Na powyższym diagramie:
- Konto
bob@contoso.com
jest tworzone w lokalnym środowisku Active Directory systemu Windows Server (oryginalny lokalny system rejestrowy). - Konto
tom@live.com
zostało utworzone w dzierżawie konta Microsoft. -
bob@contoso.com
ma dostęp do co najmniej jednego zasobu w następujących dzierżawach Microsoft Entra:- contoso.com (system rekordów w chmurze — połączony z lokalnym systemem rekordów)
- fabrikam.com
- woodgrovebank.com
- W każdej z tych dzierżaw istnieje profil najemcy
bob@contoso.com
.
-
tom@live.com
ma dostęp do zasobów w następujących dzierżawach firmy Microsoft:- contoso.com
- fabrikam.com
- W każdej z tych dzierżaw istnieje profil najemcy
tom@live.com
.
- Informacje o Tomie i Bobie w innych tenantach mogą się różnić od tych w systemie źródłowym. Mogą się różnić atrybutami, takimi jak stanowisko, lokalizacja biura i tym podobne. Mogą być członkami grup i/lub ról w każdej organizacji (dzierżawcy Microsoft Entra). Określamy te informacje jako profil najemcy bob@contoso.com.
Na diagramie bob@contoso.com i tom@live.com mają dostęp do zasobów w różnych dzierżawach firmy Microsoft Entra. Aby uzyskać więcej informacji, zobacz Dodawanie użytkowników współpracy Microsoft Entra B2B w portalu Azure.
Konta i logowanie jednokrotne (SSO)
Pamięć podręczna tokenów biblioteki MSAL przechowuje pojedynczy token odświeżania na konto. Token odświeżania może służyć do dyskretnego żądania tokenów dostępu z wielu dzierżaw Platforma tożsamości Microsoft. Po zainstalowaniu brokera na urządzeniu konto jest zarządzane przez brokera, a logowanie jednokrotne na całym urządzeniu staje się możliwe.
Ważne
Zachowanie konta Business to Consumer (B2C) i tokenu odświeżania różni się od pozostałej części platformy tożsamości Microsoft. Aby uzyskać więcej informacji, zobacz Zasady i konta B2C.
Identyfikatory kont
Identyfikator konta MSAL nie jest identyfikatorem obiektu konta. Nie jest przeznaczone do analizy ani polegania na nim w celu przekazywania czegokolwiek innego niż unikatowość w platformie tożsamości Microsoft.
MSAL może wyszukać konta przy użyciu dowolnego prawidłowego identyfikatora konta w pamięci podręcznej MSAL. Na przykład następujące elementy zawsze uzyskają ten sam obiekt konta dla tom@live.com, ponieważ każdy z identyfikatorów jest prawidłowy.
// 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>");
Uzyskiwanie dostępu do oświadczeń dotyczących konta
Oprócz żądania tokenu dostępu, MSAL zawsze żąda także tokenu identyfikacyjnego od każdego dzierżawcy. Robi to, zawsze żądając następujących zakresów:
- openid (identyfikator otwarcia)
- profil
Token identyfikatora zawiera listę oświadczeń.
Claims
to pary nazwa/wartość dotyczące konta i są używane do tworzenia żądania.
Jak wspomniano wcześniej, każdy najemca, który posiada konto, może przechowywać różne informacje o koncie, w tym między innymi atrybuty, takie jak: stanowisko, lokalizacja biura itd.
Chociaż konto może być członkiem lub gościem w wielu organizacjach, biblioteka MSAL nie wysyła zapytań do usługi w celu uzyskania listy dzierżawców, do których należy konto. Zamiast tego biblioteka MSAL buduje listę dzierżawców, w których znajduje się konto, w wyniku żądań tokenów, które zostały wykonane.
Oświadczenia uwidocznione w obiekcie konta są zawsze oświadczeniami z "dzierżawy macierzystej"/{authority} dla konta. Jeśli to konto nie zostało użyte do żądania tokenu dla tenantu głównego, biblioteka MSAL nie może podać roszczeń za pośrednictwem obiektu konta. Na przykład:
// 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
Wskazówka
Aby wyświetlić listę oświadczeń dostępnych z obiektu konta, zapoznaj się z referencją oświadczeń tokenu ID ID token claims reference.
Wskazówka
Aby uwzględnić dodatkowe oświadczenia w id_token, zapoznaj się z opcjonalną dokumentacją oświadczeń w temacie Instrukcje: podawanie opcjonalnych oświadczeń do aplikacji Microsoft Entra
Uzyskiwanie dostępu do uprawnień profilu najemcy
Aby uzyskać dostęp do oświadczeń dotyczących konta w miarę ich wyświetlania w innych dzierżawach, musisz najpierw rzutować obiekt konta na IMultiTenantAccount
. Wszystkie konta mogą być skonfigurowane dla wielu dzierżawców, ale liczba profilów dzierżawy dostępnych za pośrednictwem biblioteki MSAL opiera się na dzierżawcach, dla których żądano tokenów używając bieżącego konta. Na przykład:
// 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");
Zasady i konta B2C
Tokeny odnawiania dla konta nie są udostępniane pomiędzy zasadami B2C. W związku z tym logowanie jednokrotne przy użyciu tokenów nie jest możliwe. Nie oznacza to, że logowanie jednokrotne nie jest możliwe. Oznacza to, że logowanie jednokrotne musi korzystać z interaktywnego środowiska, w którym plik cookie jest dostępny do włączenia logowania jednokrotnego.
Oznacza to również, że w przypadku MSAL, jeśli uzyskujesz tokeny przy użyciu różnych zasad B2C, są one traktowane jako oddzielne konta, każde ze swoim własnym identyfikatorem. Jeśli chcesz użyć konta do zażądania tokenu przy użyciu acquireTokenSilent
metody, musisz wybrać konto z listy kont, która odpowiada używanej polityce z żądaniem tokenu. Na przykład:
// 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;
}