Sdílet prostřednictvím


Správa přístupu uživatelů v Azure Active Directory B2C

Tento článek popisuje, jak spravovat uživatelský přístup k aplikacím pomocí Azure Active Directory B2C (Azure AD B2C). Správa přístupu ve vaší aplikaci zahrnuje:

  • Identifikace nezletilých osob a řízení přístupu uživatelů k vaší aplikaci
  • Vyžadování souhlasu rodičů pro nezletilé osoby s používáním vašich aplikací
  • Shromažďování dat o narození a zemi/oblasti od uživatelů
  • Zachycení smlouvy o podmínkách použití a nastavení přístupu

Poznámka

V Azure Active Directory B2C jsou vlastní zásady navržené primárně tak, aby řešily složité scénáře. U většiny scénářů doporučujeme používat předdefinované toky uživatelů. Pokud jste to ještě neudělali, přečtěte si o úvodním balíčku vlastních zásad v tématu Začínáme s vlastními zásadami v Active Directory B2C.

Řízení menšího přístupu

Aplikace a organizace se můžou rozhodnout blokovat používání aplikací a služeb, které nejsou určené pro tuto cílovou skupinu. Případně se mohou aplikace a organizace rozhodnout přijmout nezletilé osoby a následně spravovat souhlas rodičů a poskytovat pro nezletilé osoby přípustné zkušenosti podle obchodních pravidel a povoleného nařízením.

Pokud je uživatel identifikován jako nezletilý, můžete nastavit tok uživatele v Azure AD B2C na jednu ze tří možností:

  • Odešlete podepsanou id_token JWT zpět do aplikace: Uživatel je zaregistrovaný v adresáři a do aplikace se vrátí token. Aplikace pak pokračuje použitím obchodních pravidel. Aplikace může například pokračovat v procesu souhlasu rodiče. Pokud chcete použít tuto metodu, zvolte, že chcete z aplikace přijímat deklarace identity ageGroup a consentProvidedForMinor .

  • Odešlete aplikaci nepodepsaný token JSON: Azure AD B2C aplikaci oznámí, že uživatel je nezletilý, a poskytne stav souhlasu rodiče uživatele. Aplikace pak pokračuje použitím obchodních pravidel. Token JSON nedokon čte úspěšné ověřování s aplikací. Aplikace musí neověřeného uživatele zpracovat podle deklarací identity, které jsou součástí tokenu JSON, což může zahrnovat jméno, e-mail, ageGroup a consentProvidedForMinor.

  • Blokovat uživatele: Pokud je uživatel nezletilý a souhlas rodiče nebyl poskytnut, Azure AD B2C může uživatele upozornit, že je zablokovaný. Nevystaví se žádný token, přístup se zablokuje a během cesty registrace se nevytvořil uživatelský účet. K implementaci tohoto oznámení poskytnete vhodnou stránku obsahu HTML/CSS, která uživatele informuje a nabídne příslušné možnosti. Aplikace nevyžaduje žádnou další akci pro nové registrace.

V závislosti na nařízení o aplikaci může souhlas rodiče potřebovat udělit uživatel, který je ověřený jako dospělý. Azure AD B2C neposkytuje prostředí k ověření věku jednotlivce a pak ověřenému dospělému neumožní udělit souhlas rodiče s nezletilou osobou. Toto prostředí musí poskytovat aplikace nebo jiný poskytovatel služeb.

Následuje příklad toku uživatele pro shromažďování souhlasu rodičů:

  1. Operace Microsoft Graph API identifikuje uživatele jako minoritního uživatele a vrátí data uživatele do aplikace ve formě nepodepsaného tokenu JSON.

  2. Aplikace zpracuje token JSON a zobrazí obrazovku pro nezletilou, oznámí jí, že se vyžaduje souhlas rodiče, a požádá o souhlas rodiče online.

  3. Azure AD B2C ukazuje cestu přihlášení, ke které se uživatel může normálně přihlásit, a vydá token aplikaci, která je nastavená tak, aby zahrnovala legalAgeGroupClassification = "minorWithParentalConsent". Aplikace shromáždí e-mailovou adresu rodiče a ověří, že je rodič dospělý. K tomu používá důvěryhodný zdroj, například národní/regionální identifikační kancelář, ověření licence nebo doklad o platební kartě. Pokud je ověření úspěšné, aplikace vyzve nezletilou k přihlášení pomocí toku uživatele Azure AD B2C. Pokud je souhlas odepřen (například pokud legalAgeGroupClassification = "minorWithoutParentalConsent"), vrátí Azure AD B2C do aplikace token JSON (ne přihlášení), aby se proces souhlasu restartoval. Volitelně je možné přizpůsobit tok uživatele tak, aby nezletilí nebo dospělí mohli znovu získat přístup k účtu nezletilé osoby odesláním registračního kódu na e-mailovou adresu nebo e-mailovou adresu dospělého.

  4. Aplikace nabízí nezletilé sadě možnost souhlas odvolat.

  5. Pokud nezletilá osoba nebo dospělá osoba odvolá souhlas, můžete použít Graph API Microsoftu ke změně souhlasuProvidedForMinor na odepření. Případně se aplikace může rozhodnout odstranit nezletilou, jejíž souhlas byl odvolán. Volitelně je možné přizpůsobit tok uživatele tak, aby ověřený nezletilý (nebo nadřazený, který používá účet nezletilé osoby) mohl odvolat souhlas. Azure AD B2C zaznamenává souhlasProvidedForMinor jako odepřený.

Další informace o legalAgeGroupClassification, consentProvidedForMinor a ageGroup najdete v tématu Typ prostředku uživatele. Další informace o vlastních atributech najdete v tématu Použití vlastních atributů ke shromažďování informací o vašich uživatelích. Pokud řešíte rozšířené atributy pomocí microsoft Graph API, musíte použít dlouhou verzi atributu, například extension_18b70cf9bb834edd8f38521c2583cd86_dateOfBirth: 2011-01-01T00:00:00Z.

Shromáždění dat o datu narození a zemi/oblasti

Aplikace se můžou při registraci od všech uživatelů spoléhat na Azure AD B2C, aby shromáždily informace o datu narození (DOB) a zemi/oblasti od všech uživatelů. Pokud tyto informace ještě neexistují, může si je aplikace vyžádat od uživatele během další cesty ověřování (přihlášení). Uživatelé nemohou pokračovat bez zadání informací o dob a zemi/oblasti. Azure AD B2C používá informace k určení, zda je osoba považována za nezletilou podle regulačních norem dané země nebo oblasti.

Přizpůsobený tok uživatele může shromáždit dob a informace o zemi/oblasti a použít transformaci deklarací identity Azure AD B2C k určení ageGroup a zachování výsledku (nebo uchování informací o dob a zemi/oblasti přímo) v adresáři.

Následující kroky ukazují logiku, která se používá k výpočtu ageGroup z data narození uživatele:

  1. Zkuste najít zemi nebo oblast podle kódu země/oblasti v seznamu. Pokud se země nebo oblast nenajde, vraťte se na Výchozí.

  2. Pokud se uzel MinorConsent nachází v elementu země/oblast:

    a. Vypočítejte datum, kdy se uživatel musí narodit, aby byl považován za dospělého. Pokud je například aktuální datum 14. března 2015 a MinorConsent je 18, datum narození nesmí být pozdější než 14. března 2000.

    b. Porovnejte minimální datum narození se skutečným datem narození. Pokud je minimální datum narození před datem narození uživatele, vrátí výpočet minor jako výpočet věkové skupiny.

  3. Pokud se uzel MinorNoConsentRequired nachází v elementu country/region, opakujte kroky 2a a 2b s použitím hodnoty z MinorNoConsentRequired. Výstup 2b vrátí MinorNoConsentRequired , pokud je minimální datum narození před datem narození uživatele.

  4. Pokud ani jeden z výpočtů nevrátí hodnotu true, vrátí výpočet hodnotu Dospělá osoba.

Pokud aplikace spolehlivě shromáždila data dob nebo země/oblasti jinými metodami, může pomocí Graph API aktualizovat záznam uživatele pomocí těchto informací. Například:

  • Pokud je o uživateli známo, že je dospělý, aktualizujte atribut adresáře ageGroup hodnotou Adult.
  • Pokud je známo, že uživatel je nezletilý, aktualizujte atribut adresáře ageGroup hodnotou Minor a podle potřeby nastavte consentProvidedForMinor.

Menší pravidla výpočtu

Určení věku zahrnuje dvě věkové hodnoty: věk, ve kterém už není osoba považována za nezletilou, a věk, kdy musí mít nezletilý souhlas rodiče. V následující tabulce jsou uvedena věková pravidla, která se používají k definování nezletilých a nezletilých vyžadujících souhlas.

Země/oblast Název země nebo oblasti Věk nezletilého souhlasu Nezletilí věk
Výchozí Žádné Žádné 18
AE Spojené arabské emiráty Žádné 21
AT Rakousko 14 18
BE Belgie 14 18
BG Bulharsko 16 18
BH Bahrajn Žádné 21
CM Kamerun Žádné 21
CY Kypr 16 18
CZ Česká republika 16 18
DE Německo 16 18
DK Dánsko 16 18
EE Estonsko 16 18
EG Egypt Žádné 21
ES Španělsko 13 18
FR Francie 16 18
GB Spojené království 13 18
GR Řecko 16 18
HR Chorvatsko 16 18
HU Maďarsko 16 18
IE Irsko 13 18
IT Itálie 16 18
KR Korejská republika 14 18
LT Litva 16 18
LU Lucembursko 16 18
LV Lotyšsko 16 18
MT Malta 16 18
NA Namibie Žádné 21
NL Nizozemsko 16 18
PL Polsko 13 18
PT Portugalsko 16 18
RO Rumunsko 16 18
SE Švédsko 13 18
SG Singapur Žádné 21
SI Slovinsko 16 18
SK Slovensko 16 18
TD Čad Žádné 21
TH Thajsko Žádné 20
TW Tchaj-wan Žádné 20
USA USA 13 18

Zachytávání podmínek použití

Při vývoji aplikace obvykle zaznamenáváte souhlas uživatelů s podmínkami použití v rámci jejich aplikací bez účasti nebo pouze malé účasti z adresáře uživatelů. Je však možné použít tok uživatele Azure AD B2C ke shromáždění souhlasu uživatele s podmínkami použití, omezení přístupu, pokud není souhlas udělen, a vynucení přijetí budoucích změn podmínek použití na základě data posledního přijetí a data nejnovější verze podmínek použití.

Podmínky použití mohou také zahrnovat "Souhlas se sdílením dat s třetími stranami". V závislosti na místních předpisech a obchodních pravidlech můžete shromáždit souhlas uživatele s oběma podmínkami dohromady nebo můžete uživateli povolit, aby přijal jednu podmínku, a ne druhou.

Následující kroky popisují, jak můžete spravovat podmínky použití:

  1. Zaznamenejte přijetí podmínek použití a datum přijetí pomocí Graph API a rozšířených atributů. Můžete to udělat pomocí předdefinovaných toků uživatelů i vlastních zásad. Doporučujeme vytvořit a používat atributy extension_termsOfUseConsentDateTime a extension_termsOfUseConsentVersion .

  2. Vytvořte povinné zaškrtávací políčko s názvem Přijmout podmínky použití a během registrace si poznamenejte výsledek. Můžete to udělat pomocí předdefinovaných toků uživatelů i vlastních zásad.

  3. Azure AD B2C ukládá smlouvu o podmínkách použití a souhlas uživatele. Pomocí Graph API se můžete dotazovat na stav libovolného uživatele přečtením atributu rozšíření, který se používá k zaznamenání odpovědi (například čtení termsOfUseTestUpdateDateTime). Můžete to udělat pomocí předdefinovaných toků uživatelů i vlastních zásad.

  4. Vyžadovat přijetí aktualizovaných podmínek použití porovnáním data přijetí s datem nejnovější verze podmínek použití. Data můžete porovnat pouze pomocí vlastního toku uživatele. Použijte rozšířený atribut extension_termsOfUseConsentDateTime a porovnejte hodnotu s deklaracemi výrazu termsOfUseTextUpdateDateTime. Pokud je přijetí staré, vynuťte nové přijetí zobrazením obrazovky s vlastním potvrzením. V opačném případě zablokujte přístup pomocí logiky zásad.

  5. Vyžadovat přijetí aktualizovaných podmínek použití porovnáním čísla verze přijetí s nejnovějším přijatým číslem verze. Čísla verzí můžete porovnat pouze pomocí vlastního toku uživatele. Použijte rozšířený atribut extension_termsOfUseConsentDateTime a porovnejte hodnotu s deklarací identity extension_termsOfUseConsentVersion. Pokud je přijetí staré, vynuťte nové přijetí zobrazením obrazovky s vlastním potvrzením. V opačném případě zablokujte přístup pomocí logiky zásad.

Přijetí podmínek použití můžete zaznamenat v následujících scénářích:

  • Zaregistruje se nový uživatel. Zobrazí se podmínky použití a uloží se výsledek přijetí.
  • Přihlašuje se uživatel, který dříve přijal nejnovější nebo aktivní podmínky použití. Podmínky použití se nezobrazují.
  • Přihlašuje se uživatel, který ještě nepřijal nejnovější nebo aktivní podmínky použití. Zobrazí se podmínky použití a uloží se výsledek přijetí.
  • Přihlašuje se uživatel, který už přijal starší verzi podmínek použití, které se teď aktualizují na nejnovější verzi. Zobrazí se podmínky použití a uloží se výsledek přijetí.

Následující obrázek znázorňuje doporučený tok uživatele:

Diagram vývojového diagramu znázorňující doporučený tok přijetí uživatele

Následuje příklad vyjádření souhlasu s podmínkami použití v deklaraci identity na základě data. extension_termsOfUseConsentDateTime Pokud je deklarace identity starší než 2025-01-15T00:00:00, vynuťte nové přijetí kontrolou termsOfUseConsentRequired logické deklarace identity a zobrazením obrazovky s vlastním prohlášením.

<ClaimsTransformations>
  <ClaimsTransformation Id="GetNewUserAgreeToTermsOfUseConsentDateTime" TransformationMethod="GetCurrentDateTime">
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="extension_termsOfUseConsentDateTime" TransformationClaimType="currentDateTime" />
    </OutputClaims>
  </ClaimsTransformation>
  <ClaimsTransformation Id="IsTermsOfUseConsentRequired" TransformationMethod="IsTermsOfUseConsentRequired">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="extension_termsOfUseConsentDateTime" TransformationClaimType="termsOfUseConsentDateTime" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="termsOfUseTextUpdateDateTime" DataType="dateTime" Value="2025-01-15T00:00:00" />
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="result" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>

Následuje příklad souhlasu s podmínkami použití založenými na verzi v deklaraci identity. Pokud se extension_termsOfUseConsentVersion deklarace identity nerovná V1, vynuťte nové přijetí kontrolou termsOfUseConsentRequired logické deklarace identity a zobrazením obrazovky s vlastním prohlášením.

<ClaimsTransformations>
  <ClaimsTransformation Id="GetEmptyTermsOfUseConsentVersionForNewUser" TransformationMethod="CreateStringClaim">
    <InputParameters>
      <InputParameter Id="value" DataType="string" Value=""/>
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="extension_termsOfUseConsentVersion" TransformationClaimType="createdClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  <ClaimsTransformation Id="GetNewUserAgreeToTermsOfUseConsentVersion" TransformationMethod="CreateStringClaim">
    <InputParameters>
      <InputParameter Id="value" DataType="string" Value="V1"/>
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="extension_termsOfUseConsentVersion" TransformationClaimType="createdClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  <ClaimsTransformation Id="IsTermsOfUseConsentRequiredForVersion" TransformationMethod="CompareClaimToValue">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="extension_termsOfUseConsentVersion" TransformationClaimType="inputClaim1" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="compareTo" DataType="string" Value="V1" />
      <InputParameter Id="operator" DataType="string" Value="not equal" />
      <InputParameter Id="ignoreCase" DataType="string" Value="true" />
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>

Další kroky