Delen via


Accounts en huurdersprofielen (Android)

Dit artikel bevat een overzicht van wat een account is in het Microsoft Identity Platform.

De MSAL-API (Microsoft Authentication Library) vervangt de term gebruiker door de term account. Een van de redenen is dat een gebruiker (menselijke of softwareagent) meerdere accounts kan hebben of kan gebruiken. Deze accounts bevinden zich mogelijk in de eigen organisatie van de gebruiker en/of in andere organisaties waarvan de gebruiker lid is.

Een account in het Microsoft Identity Platform bestaat uit:

  • Een unieke id.
  • Een of meer referenties die worden gebruikt om het eigendom/beheer van het account te demonstreren.
  • Een of meer profielen die bestaan uit kenmerken zoals:
    • Afbeelding, Voornaam, Familienaam, Titel, Office-locatie
  • Een account heeft een bron van autoriteit of recordsysteem. Dit is het systeem waarin het account wordt gemaakt en waar de met dat account gekoppelde referenties worden opgeslagen. In systemen met meerdere tenants, zoals het Microsoft Identity Platform, is het recordsysteem de tenant locatie waar het account is gemaakt. Deze tenant wordt ook wel de home tenant genoemd.
  • Accounts in het Microsoft Identity Platform hebben de volgende recordsystemen:
    • Microsoft Entra ID, waaronder Azure Active Directory B2C.
    • Microsoft-account (Live).
  • Accounts uit primaire bronsystemen buiten het Microsoft Identity Platform worden binnen het Microsoft Identity Platform weergegeven, inclusief:
    • identiteiten uit verbonden on-premises mappen (Windows Server Active Directory)
    • externe identiteiten van LinkedIn, GitHub, enzovoort. In deze gevallen heeft een account zowel een oorsprongssysteem van record als een recordsysteem binnen het Microsoft Identity Platform.
  • Met het Microsoft Identity Platform kan één account worden gebruikt voor toegang tot resources die behoren tot meerdere organisaties (Microsoft Entra-tenants).
    • Als u wilt vastleggen dat een account van het ene recordsysteem (Microsoft Entra-tenant A) toegang heeft tot een resource in een ander recordsysteem (Microsoft Entra-tenant B), moet het account worden weergegeven in de tenant waarin de resource is gedefinieerd. Dit wordt gedaan door een lokale record van het account te maken van systeem A in systeem B.
    • Deze lokale record, de weergave van het account, is gebonden aan het oorspronkelijke account.
    • MSAL maakt deze lokale record beschikbaar als een Tenant Profile.
    • Tenantprofiel kan verschillende kenmerken hebben die geschikt zijn voor de lokale context, zoals functie, kantoorlocatie, contactgegevens, enzovoort.
  • Omdat een account mogelijk aanwezig is in een of meer tenants, kan een account meerdere profielen hebben.

Notitie

MSAL behandelt het Microsoft-accountsysteem (Live, MSA) als een andere tenant binnen het Microsoft Identity Platform. De tenant-id van de Microsoft-accounttenant is: 9188040d-6c67-4c5b-b112-36a304b66dad

Diagram van accountoverzicht

Overzichtsdiagram van account

In het bovenstaande diagram:

  • Het account bob@contoso.com is aangemaakt in de lokale Windows Server Active Directory (lokale bron).
  • Het account tom@live.com is aangemaakt bij de tenant van het Microsoft-account.
  • bob@contoso.com heeft toegang tot ten minste één resource in de volgende Microsoft Entra-tenants:
    • contoso.com (een cloud-systeem van registratie - verbonden met een on-premises registratiesysteem)
    • fabrikam.com
    • woodgrovebank.com
    • Er bestaat een tenantprofiel voor bob@contoso.com in elk van deze tenants.
  • tom@live.com heeft toegang tot resources in de volgende Microsoft-tenants:
    • contoso.com
    • fabrikam.com
    • Er bestaat een tenantprofiel voor tom@live.com in elk van deze tenants.
  • Informatie over Tom en Bob in andere tenants kan verschillen van die in het recordsysteem. Ze kunnen verschillen per kenmerk, zoals Functie, Office-locatie, enzovoort. Ze kunnen lid zijn van groepen en/of rollen binnen elke organisatie (Microsoft Entra-tenant). We verwijzen naar deze informatie als bob@contoso.com tenantprofiel.

In het diagram bob@contoso.com en tom@live.com toegang hebben tot resources in verschillende Microsoft Entra-tenants. Zie Microsoft Entra B2B-samenwerkingsgebruikers toevoegen in Azure Portal voor meer informatie.

Accounts en eenmalige aanmelding (SSO)

In de MSAL-tokencache wordt één vernieuwingstoken per account opgeslagen. Dit refresh-token kan worden gebruikt om stilletjes toegangstokens aan te vragen bij meerdere tenants van het Microsoft Identity Platform. Wanneer een broker op een apparaat is geïnstalleerd, wordt het account beheerd door de broker en wordt eenmalige aanmelding voor het hele apparaat mogelijk.

Belangrijk

Het B2C-account (Business to Consumer) en het gedrag van het vernieuwingstoken verschilt van de rest van het Microsoft Identity Platform. Zie B2C-beleid en accounts voor meer informatie.

Account-id's

De MSAL-account-ID is geen accountobject-ID. Het is niet bedoeld om geparsed te worden of om erop vertrouwd te worden dat het iets anders overbrengt dan uniciteit binnen het Microsoft Identity Platform.

MSAL kan accounts opzoeken met een geldige id voor het account dat beschikbaar is in de MSAL-cache. Met het volgende wordt bijvoorbeeld altijd hetzelfde accountobject tom@live.com opgehaald omdat elk van de id's geldig is:

// 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>");

Toegang krijgen tot aanspraken op een account

Naast het aanvragen van een toegangstoken vraagt MSAL ook altijd een id-token aan bij elke tenant. Dit gebeurt door altijd de volgende scopes aan te vragen:

  • openid
  • profiel

Het id-token bevat een lijst met claims. Claims zijn naam-/waardeparen met betrekking tot het account en worden gebruikt om het verzoek te doen.

Zoals eerder vermeld, kan elke tenant waar een account bestaat verschillende gegevens over het account opslaan, waaronder maar niet beperkt tot kenmerken zoals: functie, kantoorlocatie, enzovoort.

Hoewel een account mogelijk lid of gast is in meerdere organisaties, voert MSAL geen query's uit op een service om een lijst op te halen met de tenants waarvan het account lid is. In plaats daarvan bouwt MSAL een lijst met tenants waarin het account aanwezig is, als gevolg van tokenaanvragen die zijn gedaan.

De claims die worden weergegeven op het accountobject zijn altijd de claims van de 'home tenant'/{authority} voor een account. Als dat account niet is gebruikt om een token aan te vragen voor hun thuistenant, kan MSAL geen claims opgeven via het accountobject. Voorbeeld:

// 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

Aanbeveling

Als u een lijst met claims wilt zien die beschikbaar zijn in het accountobject, raadpleegt u de referentie voor id-tokenclaims.

Aanbeveling

Als u extra claims wilt opnemen in uw id_token, raadpleegt u de documentatie over optionele claims in procedures: optionele claims opgeven voor uw Microsoft Entra-app

Toegang tot tenantprofielclaims

Als u claims over een account wilt openen zoals ze worden weergegeven in andere tenants, moet u eerst uw accountobject omzetten naar IMultiTenantAccount. Alle accounts kunnen multi-tenant zijn, maar het aantal tenantprofielen dat beschikbaar is via MSAL is gebaseerd op de tenants waarvoor u tokens hebt aangevraagd met het huidige account. Voorbeeld:

// 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-beleid en -accounts

Vernieuwingstokens voor een account worden niet gedeeld in B2C-beleid. Als gevolg hiervan is eenmalige aanmelding met tokens niet mogelijk. Dit betekent niet dat eenmalige aanmelding niet mogelijk is. Dit betekent dat eenmalige aanmelding een interactieve ervaring moet gebruiken waarin een cookie beschikbaar is om eenmalige aanmelding in te schakelen.

Dit betekent ook dat in het geval van MSAL, als u tokens verkrijgt met behulp van verschillende B2C-beleidsregels, deze worden beschouwd als afzonderlijke accounts, elk met hun eigen id. Als u een account wilt gebruiken om een token aan te vragen met behulp van acquireTokenSilent, moet u het account selecteren in de lijst met accounts die overeenkomen met het beleid dat u gebruikt voor de tokenaanvraag. Voorbeeld:

// 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;
}