Definiowanie jednorazowego profilu technicznego hasła w zasadach niestandardowych usługi Azure AD B2C

Uwaga

W usłudze Azure Active Directory B2C zasady niestandardowe są przeznaczone głównie do rozwiązywania złożonych scenariuszy. W przypadku większości scenariuszy zalecamy używanie wbudowanych przepływów użytkowników. Jeśli nie zostało to zrobione, dowiedz się więcej o niestandardowym pakiecie startowym zasad w temacie Wprowadzenie do zasad niestandardowych w usłudze Active Directory B2C.

Usługa Azure Active Directory B2C (Azure AD B2C) zapewnia obsługę zarządzania generowaniem i weryfikacją jednorazowego hasła. Użyj profilu technicznego, aby wygenerować kod, a następnie zweryfikuj go później.

Jednorazowy profil techniczny hasła może również zwrócić komunikat o błędzie podczas weryfikacji kodu. Zaprojektuj integrację z jednorazowym hasłem przy użyciu profilu technicznego Walidacja. Profil techniczny weryfikacji wywołuje jednorazowy profil techniczny hasła w celu zweryfikowania kodu. Profil techniczny weryfikacji weryfikuje dane dostarczone przez użytkownika przed kontynuowaniem podróży użytkownika. W przypadku profilu technicznego weryfikacji na stronie z potwierdzeniem własnym jest wyświetlany komunikat o błędzie.

Protokół

Atrybut Name elementu Protocol musi być ustawiony na Proprietarywartość . Atrybut programu obsługi musi zawierać w pełni kwalifikowaną nazwę zestawu programu obsługi protokołu, który jest używany przez Azure AD B2C:

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

W poniższym przykładzie przedstawiono jednorazowy profil techniczny hasła:

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

Generowanie kodu

Pierwszym trybem tego profilu technicznego jest wygenerowanie kodu. Poniżej przedstawiono opcje, które można skonfigurować dla tego trybu. Kody generowane i próby są śledzone w ramach sesji.

Oświadczenia wejściowe

Element InputClaims zawiera listę oświadczeń wymaganych do wysłania do jednorazowego dostawcy protokołu haseł. Możesz również zamapować nazwę oświadczenia na nazwę zdefiniowaną poniżej.

ClaimReferenceId Wymagane Opis
identyfikator Tak Identyfikator identyfikujący użytkownika, który musi później zweryfikować kod. Jest on często używany jako identyfikator miejsca docelowego, do którego jest dostarczany kod, na przykład adres e-mail lub numer telefonu.

Element InputClaimsTransformations może zawierać kolekcję elementów InputClaimsTransformation , które są używane do modyfikowania oświadczeń wejściowych lub generowania nowych przed wysłaniem do jednorazowego dostawcy protokołu haseł.

Oświadczenia wyjściowe

Element OutputClaims zawiera listę oświadczeń wygenerowanych przez jednorazowego dostawcę protokołu haseł. Możesz również zamapować nazwę oświadczenia na nazwę zdefiniowaną poniżej.

ClaimReferenceId Wymagane Opis
otpGenerated Tak Wygenerowany kod, którego sesja jest zarządzana przez Azure AD B2C.

Element OutputClaimsTransformations może zawierać kolekcję elementów OutputClaimsTransformation , które są używane do modyfikowania oświadczeń wyjściowych lub generowania nowych.

Metadane

Do konfigurowania trybu generowania kodu można użyć następujących ustawień:

Atrybut Wymagane Opis
Operacja Tak Operacja do wykonania. Możliwa wartość: GenerateCode.
CodeExpirationInSeconds Nie Czas w sekundach do wygaśnięcia kodu. Minimum: 60; Maksimum: 1200; Ustawienie domyślne: 600. Za każdym razem, gdy kod jest dostarczany (ten sam kod przy użyciu ReuseSameCodemetody lub nowego kodu), wygasanie kodu jest przedłużane. Ten czas jest również używany do ustawiania limitu czasu ponawiania próby (po osiągnięciu maksymalnej liczby prób użytkownik jest zablokowany przed próbą uzyskania nowych kodów do momentu wygaśnięcia tego czasu)
CodeLength Nie Długość kodu. Wartość domyślna to 6.
Characterset Nie Zestaw znaków dla kodu sformatowany do użycia w wyrażeniu regularnym. Na przykład a-z0-9A-Z. Wartość domyślna to 0-9. Zestaw znaków musi zawierać co najmniej 10 różnych znaków w określonym zestawie.
NumRetryAttempts Nie Liczba prób weryfikacji, zanim kod zostanie uznany za nieprawidłowy. Wartość domyślna to 5. Jeśli na przykład ustawisz wartość NumRetryAttempts na 2, będzie to zezwalać tylko na 2 próby łącznie (pierwsze + 1 ponawianie próby). W przypadku 3. próby zostanie zgłoszonych maksymalnie osiągniętych prób niezależnie od tego, czy kod jest poprawny, czy nie.
NumCodeGenerationAttempts Nie Maksymalna liczba prób generowania kodu na identyfikator. Wartość domyślna to 10 , jeśli nie zostanie określona.
ReuseSameCode Nie Określa, czy ten sam kod powinien być podany zamiast generować nowy kod, gdy dany kod nie wygasł i jest nadal prawidłowy. Wartość domyślna to false.

Przykład

Poniższy przykład TechnicalProfile służy do generowania kodu:

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

Zweryfikuj kod

Drugim trybem tego profilu technicznego jest zweryfikowanie kodu. Poniżej przedstawiono opcje, które można skonfigurować dla tego trybu.

Oświadczenia wejściowe

Element InputClaims zawiera listę oświadczeń wymaganych do wysłania do jednorazowego dostawcy protokołu haseł. Możesz również zamapować nazwę oświadczenia na nazwę zdefiniowaną poniżej.

ClaimReferenceId Wymagane Opis
identyfikator Tak Identyfikator identyfikujący użytkownika, który wcześniej wygenerował kod. Jest on często używany jako identyfikator miejsca docelowego, do którego jest dostarczany kod, na przykład adres e-mail lub numer telefonu.
otpToVerify Tak Kod weryfikacyjny dostarczony przez użytkownika.

Element InputClaimsTransformations może zawierać kolekcję elementów InputClaimsTransformation , które są używane do modyfikowania oświadczeń wejściowych lub generowania nowych przed wysłaniem do dostawcy jednorazowego protokołu haseł.

Oświadczenia wyjściowe

Podczas weryfikacji kodu tego dostawcy protokołu nie podano żadnych oświadczeń wyjściowych.

Element OutputClaimsTransformations może zawierać kolekcję elementów OutputClaimsTransformation , które są używane do modyfikowania oświadczeń wyjściowych lub generowania nowych.

Metadane

Następujące ustawienia mogą służyć do trybu weryfikacji kodu:

Atrybut Wymagane Opis
Operacja Tak Operacja do wykonania. Możliwa wartość: VerifyCode.

Elementy interfejsu użytkownika

Następujące metadane mogą służyć do konfigurowania komunikatów o błędach wyświetlanych po niepowodzeniu weryfikacji kodu. Metadane należy skonfigurować w profilu technicznym asertywnego . Komunikaty o błędach można lokalizować.

Atrybut Wymagane Opis
UserMessageIfSessionDoesNotExist Nie Komunikat wyświetlany użytkownikowi, jeśli sesja weryfikacji kodu wygasła. Kod wygasł lub kod nigdy nie został wygenerowany dla danego identyfikatora.
UserMessageIfMaxRetryAttempted Nie Komunikat wyświetlany użytkownikowi, jeśli przekroczył maksymalną dozwoloną liczbę prób weryfikacji.
UserMessageIfMaxNumberOfCodeGenerated Nie Komunikat wyświetlany użytkownikowi, jeśli generowanie kodu przekroczyło maksymalną dozwoloną liczbę prób.
UserMessageIfInvalidCode Nie Komunikat wyświetlany użytkownikowi, jeśli podano nieprawidłowy kod.
UserMessageIfVerificationFailedRetryAllowed Nie Komunikat wyświetlany użytkownikowi, jeśli podano nieprawidłowy kod, a użytkownik może podać prawidłowy kod.
UserMessageIfSessionConflict Nie Komunikat wyświetlany użytkownikowi, jeśli nie można zweryfikować kodu.

Przykład

Poniższy przykład TechnicalProfile służy do weryfikowania kodu:

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

Następne kroki

Zapoznaj się z następującym artykułem, aby zapoznać się z przykładem użycia profilu technicznego jednorazowego hasła z niestandardową weryfikacją poczty e-mail:

  • Niestandardowa weryfikacja poczty e-mail w usłudze Azure Active Directory B2C (Mailjet, SendGrid)