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 Proprietary
wartość . 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 ReuseSameCode metody 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: