Definování technického profilu jednorázového hesla ve vlastních zásadách Azure AD B2C

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.

Azure Active Directory B2C (Azure AD B2C) poskytuje podporu pro správu generování a ověřování jednorázového hesla. Pomocí technického profilu vygenerujte kód a později ho ověřte.

Při ověřování kódu může také vrátit chybovou zprávu technický profil s jednorázovým heslem. Navrhnou integraci s jednorázovým heslem pomocí technického profilu ověření. Ověřovací technický profil volá technický profil jednorázového hesla k ověření kódu. Ověřovací technický profil před pokračováním cesty uživatelem ověří data poskytnutá uživatelem. U technického profilu ověření se na stránce s vlastním potvrzením zobrazí chybová zpráva.

Protokol

Atribut Name elementu Protocol musí být nastaven na Proprietaryhodnotu . Atribut obslužné rutiny musí obsahovat plně kvalifikovaný název sestavení obslužné rutiny protokolu, které používá Azure AD B2C:

Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Následující příklad ukazuje jednorázový technický profil hesla:

<TechnicalProfile Id="VerifyCode">
  <DisplayName>Validate user input verification code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...

Generování kódu

Prvním režimem tohoto technického profilu je vygenerování kódu. Níže jsou uvedené možnosti, které je možné pro tento režim nakonfigurovat. Vygenerované kódy a pokusy se sledují v rámci relace.

Vstupní deklarace identity

Element InputClaims obsahuje seznam deklarací identity vyžadovaných k odeslání jednorázovému zprostředkovateli protokolu hesla. Název deklarace identity můžete také namapovat na název definovaný níže.

Id deklarace identity Povinné Popis
identifikátor Yes Identifikátor pro identifikaci uživatele, který bude později potřebovat kód ověřit. Běžně se používá jako identifikátor cíle, kam se kód doručuje, například e-mailovou adresu nebo telefonní číslo.

Element InputClaimsTransformations může obsahovat kolekci elementů InputClaimsTransformation, které se používají k úpravě vstupních deklarací identity nebo generování nových před odesláním do jednorázového zprostředkovatele protokolu hesla.

Výstupní deklarace identity

Element OutputClaims obsahuje seznam deklarací identity vygenerovaných jednorázovým zprostředkovatelem protokolu hesla. Název deklarace identity můžete také namapovat na název definovaný níže.

Id deklarace identity Povinné Popis
otpGenerated Yes Vygenerovaný kód, jehož relaci spravuje Azure AD B2C.

OutputClaimsTransformations element může obsahovat kolekci OutputClaimsTransformation elementů, které se používají k úpravě výstupních deklarací identity nebo generování nových.

Metadata

Ke konfiguraci režimu generování kódu je možné použít následující nastavení:

Atribut Povinné Popis
Operace Yes Operace, která se má provést. Možná hodnota: GenerateCode.
CodeExpirationInSeconds No Doba v sekundách do vypršení platnosti kódu. Minimum: 60; Maximum: 1200; Výchozí: 600. Při každém poskytnutí kódu (stejný kód pomocí ReuseSameCodenebo nového kódu) se platnost kódu prodlouží. Tento čas se také používá k nastavení časového limitu opakování (po dosažení maximálního počtu pokusů je uživatel uzamčen před pokusy o získání nových kódů, dokud tato doba nevyprší).
CodeLength No Délka kódu. Výchozí hodnota je 6.
Znaková sada No Znaková sada kódu, naformátovaná pro použití v regulárním výrazu. Například, a-z0-9A-Z. Výchozí hodnota je 0-9. Znaková sada musí obsahovat minimálně 10 různých znaků v zadané sadě.
NumRetryAttempts No Počet pokusů o ověření před tím, než se kód považuje za neplatný. Výchozí hodnota je 5. Pokud například nastavíte NumRetryAttempts na 2, umožní vám to celkem jenom 2 pokusy (první + 1 opakování). U třetího pokusu vyvolá maximální počet dosažených pokusů bez ohledu na to, jestli je kód správný nebo ne.
NumCodeGenerationAttempts No Počet maximálních pokusů o generování kódu na identifikátor. Výchozí hodnota je 10 , pokud není zadána.
Opakované použitíSameCode No Zda by se měl stejný kód dát místo generování nového kódu, pokud jeho platnost nevypršela a je stále platný. Výchozí hodnota je false.

Příklad

Následující příklad TechnicalProfile slouží k vygenerování kódu:

<TechnicalProfile Id="GenerateCode">
  <DisplayName>Generate Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">GenerateCode</Item>
    <Item Key="CodeExpirationInSeconds">600</Item>
    <Item Key="CodeLength">6</Item>
    <Item Key="CharacterSet">0-9</Item>
    <Item Key="NumRetryAttempts">5</Item>
    <Item Key="NumCodeGenerationAttempts">10</Item>
    <Item Key="ReuseSameCode">false</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpGenerated" />
  </OutputClaims>
</TechnicalProfile>

Ověřit kód

Druhým režimem tohoto technického profilu je ověření kódu. Níže jsou uvedené možnosti, které je možné pro tento režim nakonfigurovat.

Vstupní deklarace identity

Element InputClaims obsahuje seznam deklarací identity vyžadovaných k odeslání jednorázovému zprostředkovateli protokolu hesla. Název deklarace identity můžete také namapovat na název definovaný níže.

Id deklarace identity Povinné Popis
identifikátor Yes Identifikátor pro identifikaci uživatele, který dříve vygeneroval kód. Běžně se používá jako identifikátor cíle, kam se kód doručuje, například e-mailovou adresu nebo telefonní číslo.
otpToVerify Yes Ověřovací kód poskytnutý uživatelem

Element InputClaimsTransformations může obsahovat kolekci elementů InputClaimsTransformation, které se používají k úpravě vstupních deklarací identity nebo generování nových před odesláním do jednorázového zprostředkovatele protokolu hesla.

Výstupní deklarace identity

Při ověřování kódu tohoto zprostředkovatele protokolu nejsou k dispozici žádné výstupní deklarace identity.

OutputClaimsTransformations element může obsahovat kolekci OutputClaimsTransformation elementů, které se používají k úpravě výstupních deklarací identity nebo generování nových.

Metadata

K režimu ověření kódu je možné použít následující nastavení:

Atribut Povinné Popis
Operace Yes Operace, která se má provést. Možná hodnota: VerifyCode.

Prvky uživatelského rozhraní

Následující metadata lze použít ke konfiguraci chybových zpráv, které se zobrazí při selhání ověření kódu. Metadata by měla být nakonfigurovaná v technickém profilu s vlastním uplatněním . Chybové zprávy lze lokalizovat.

Atribut Povinné Popis
UserMessageIfSessionDoesNotExist No Zpráva, která se zobrazí uživateli, pokud vypršela platnost relace ověření kódu. Buď vypršela platnost kódu, nebo se kód pro daný identifikátor nikdy nevygeneroval.
UserMessageIfMaxRetryAttempted No Zpráva, která se zobrazí uživateli, pokud překročí maximální povolený počet pokusů o ověření.
UserMessageIfMaxNumberOfCodeGenerated No Zpráva, která se zobrazí uživateli v případě, že generování kódu překročilo maximální povolený počet pokusů.
UserMessageIfInvalidCode No Zpráva, která se zobrazí uživateli, pokud zadal neplatný kód.
UserMessageIfVerificationFailedRetryAllowed No Zpráva, která se zobrazí uživateli, pokud zadal neplatný kód a uživatel může zadat správný kód.
UserMessageIfSessionConflict No Zpráva, která se zobrazí uživateli, pokud kód nelze ověřit.

Příklad

Následující příklad TechnicalProfile slouží k ověření kódu:

<TechnicalProfile Id="VerifyCode">
  <DisplayName>Verify Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">VerifyCode</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" />
    <InputClaim ClaimTypeReferenceId="otpGenerated" PartnerClaimType="otpToVerify" />
  </InputClaims>
</TechnicalProfile>

Další kroky

V následujícím článku najdete příklad použití technického profilu jednorázového hesla s vlastním ověřením e-mailu:

  • Vlastní ověření e-mailu v Azure Active Directory B2C (Mailjet, SendGrid)