Definieren eines technischen Einmalkennwortprofils in einer benutzerdefinierten Azure AD B2C-Richtlinie
Hinweis
In Azure Active Directory B2C sind benutzerdefinierte Richtlinien in erster Linie für komplexe Szenarien konzipiert. Für die meisten Szenarien empfehlen wir die Verwendung von integrierten Benutzerflows. Informieren Sie sich, sofern noch nicht geschehen, unter Tutorial: Erstellen von Benutzerflows und benutzerdefinierten Richtlinien in Azure Active Directory B2C über das Starter Pack für benutzerdefinierte Richtlinien.
Azure Active Directory B2C (Azure AD B2C) bietet Unterstützung für die Verwaltung der Generierung und Überprüfung eines Einmalkennworts. Verwenden Sie ein technisches Profil, um einen Code zu generieren, und überprüfen Sie diesen Code später.
Das technische Einmalkennwortprofil kann bei der Codeüberprüfung auch eine Fehlermeldung zurückgeben. Entwerfen Sie die Integration in das Einmalkennwort, indem Sie ein technisches Validierungsprofil verwenden. Ein technisches Validierungsprofil ruft das technische Einmkennwortprofil auf, um einen Code zu überprüfen. Mit dem technischen Validierungsprofil werden die vom Benutzer bereitgestellten Daten überprüft, bevor die User Journey fortgesetzt wird. Mit dem technischen Validierungsprofil wird eine Fehlermeldung auf einer Seite mit Selbstbestätigung angezeigt.
Protocol
Das Name-Attribut des Protocol-Elements muss auf Proprietary
festgelegt werden. Das handler-Attribut muss den vollqualifizierten Namen der Protokollhandlerassembly, die von Azure AD B2C verwendet wird, enthalten:
Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Das folgende Beispiel zeigt ein technisches Einmalkennwortprofil:
<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" />
...
Generieren von Code
Der erste Modus dieses technischen Profils besteht darin, einen Code zu generieren. Im Folgenden finden Sie die Optionen, die für diesen Modus konfiguriert werden können. Generierte Codes und Versuche werden innerhalb der Sitzung nachverfolgt.
Eingabeansprüche
Das InputClaims-Element enthält eine Liste der Ansprüche, die zum Senden an den Anbieter des Einmalkennwortprotokolls erforderlich sind. Sie können auch den Namen Ihres Anspruchs dem unten definierten Namen zuordnen.
ClaimReferenceId | Erforderlich | BESCHREIBUNG |
---|---|---|
Bezeichner | Ja | Der Bezeichner zur Identifizierung des Benutzers, der den Code später überprüfen muss. Er wird häufig als Bezeichner des Ziels verwendet, an das der Code übermittelt wird, z.B. eine E-Mail-Adresse oder Telefonnummer. |
Das InputClaimsTransformations-Element darf eine Sammlung von InputClaimsTransformation-Elementen enthalten, die zum Ändern der Eingabeansprüche oder zum Generieren neuer Ansprüche verwendet werden, bevor das Senden an den Anbieter des Einmalkennwortprotokolls erfolgt.
Ausgabeansprüche
Das OutputClaims-Element enthält eine Liste der Ansprüche, die vom Anbieter des Einmalkennwortprotokolls generiert werden. Sie können auch den Namen Ihres Anspruchs dem unten definierten Namen zuordnen.
ClaimReferenceId | Erforderlich | BESCHREIBUNG |
---|---|---|
otpGenerated | Ja | Der generierte Code, dessen Sitzung von Azure AD B2C verwaltet wird. |
Das OutputClaimsTransformations-Element darf eine Sammlung von OutputClaimsTransformation-Elementen, die zum Ändern der Ausgabeansprüche oder zum Generieren neuer verwendet werden, enthalten.
Metadaten
Die folgenden Einstellungen können verwendet werden, um den Codegenerierungsmodus zu konfigurieren:
attribute | Erforderlich | BESCHREIBUNG |
---|---|---|
Vorgang | Ja | Der Vorgang, der ausgeführt werden soll. Möglicher Wert: GenerateCode . |
CodeExpirationInSeconds | Nein | Die Zeit in Sekunden bis zum Ablauf des Codes. Mindestwert: 60 , Maximalwert: 1200 , Standardwert: 600 . Bei jeder Codebereitstellung (gleicher Code mit ReuseSameCode oder neuer Code) wird der Codeablauf verlängert. Diese Zeit wird auch zum Festlegen des Wiederholungstimeouts verwendet (sobald die maximale Anzahl der Versuche erreicht ist, kann der Benutzer vor Ablauf dieses Zeitraums keinen neuen Code abrufen). |
CodeLength | Nein | Die Länge des Codes. Standardwert: 6 . |
CharacterSet | Nein | Der Zeichensatz für den Code, der für die Verwendung in einem regulären Ausdruck formatiert ist. Beispiel: a-z0-9A-Z . Standardwert: 0-9 . Der Zeichensatz muss mindestens zehn verschiedene Zeichen enthalten, die im angegebenen Zeichensatz enthalten sind. |
NumRetryAttempts | Nein | Die Anzahl der Überprüfungsversuche, bevor der Code als ungültig betrachtet wird. Standardwert: 5 . Wenn Sie NumRetryAttempts beispielsweise auf 2 festlegen, sind insgesamt nur zwei Versuche zulässig (erster + 1 Wiederholungsversuch). Beim dritten Versuch wird „maximale Anzahl an Versuchen erreicht“ (max attempts reached) angezeigt, unabhängig davon, ob der Code richtig ist oder nicht. |
NumCodeGenerationAttempts | Nein | Die maximale Anzahl von Codegenerierungsversuchen pro Bezeichner. Der Standardwert lautet „10 “, wenn keine andere Angabe erfolgt. |
ReuseSameCode | Nein | Gibt an, ob der gleiche Code angegeben werden soll, anstatt einen neuen Code zu generieren, wenn der angegebene Code noch nicht abgelaufen und gültig ist. Standardwert: false . |
Beispiel
Das folgende Beispiel TechnicalProfile
wird zum Erstellen eines Codes verwendet:
<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>
Code überprüfen
Der zweite Modus dieses technischen Profils besteht darin, einen Code zu überprüfen. Im Folgenden finden Sie die Optionen, die für diesen Modus konfiguriert werden können.
Eingabeansprüche
Das InputClaims-Element enthält eine Liste der Ansprüche, die zum Senden an den Anbieter des Einmalkennwortprotokolls erforderlich sind. Sie können auch den Namen Ihres Anspruchs dem unten definierten Namen zuordnen.
ClaimReferenceId | Erforderlich | BESCHREIBUNG |
---|---|---|
Bezeichner | Ja | Der Bezeichner, der den Benutzer identifiziert, der zuvor einen Code generiert hat. Er wird häufig als Bezeichner des Ziels verwendet, an das der Code übermittelt wird, z.B. eine E-Mail-Adresse oder Telefonnummer. |
otpToVerify | Ja | Der Überprüfungscode, der vom Benutzer bereitgestellt wird. |
Das InputClaimsTransformations-Element darf eine Sammlung von InputClaimsTransformation-Elementen enthalten, die zum Ändern der Eingabeansprüche oder zum Generieren neuer Ansprüche verwendet werden, bevor das Senden an den Anbieter des Einmalkennwortprotokolls erfolgt.
Ausgabeansprüche
Während der Codeüberprüfung dieses Protokollanbieters werden keine Ausgabeansprüche bereitgestellt.
Das OutputClaimsTransformations-Element darf eine Sammlung von OutputClaimsTransformation-Elementen, die zum Ändern der Ausgabeansprüche oder zum Generieren neuer verwendet werden, enthalten.
Metadaten
Die folgenden Einstellungen können verwendet werden, um den Codeüberprüfungsmodus zu konfigurieren:
attribute | Erforderlich | BESCHREIBUNG |
---|---|---|
Vorgang | Ja | Der Vorgang, der ausgeführt werden soll. Möglicher Wert: VerifyCode . |
Benutzeroberflächenelemente
Die folgenden Metadaten können verwendet werden, um die Fehlermeldungen zu konfigurieren, die bei einem Codeüberprüfungsfehler angezeigt wird. Die Metadaten sollten im selbstbestätigten technischen Profil konfiguriert werden. Die Fehlermeldungen können lokalisiert werden.
attribute | Erforderlich | BESCHREIBUNG |
---|---|---|
UserMessageIfSessionDoesNotExist | Nein | Die Meldung, die dem Benutzer angezeigt werden soll, wenn die Codeüberprüfungssitzung abgelaufen ist. Der Code ist entweder abgelaufen, oder der Code wurde nie für einen angegebenen Bezeichner generiert. |
UserMessageIfMaxRetryAttempted | Nein | Die Meldung, die dem Benutzer angezeigt werden soll, wenn die maximal zulässige Anzahl von Überprüfungsversuchen überschritten wurde. |
UserMessageIfMaxNumberOfCodeGenerated | Nein | Die Meldung, die dem Benutzer angezeigt werden soll, wenn die maximal zulässige Anzahl von Codegenerierungsversuchen überschritten wurde. |
UserMessageIfInvalidCode | Nein | Die Meldung, die dem Benutzer angezeigt werden soll, wenn ein ungültiger Code bereitgestellt wurde. |
UserMessageIfVerificationFailedRetryAllowed | Nein | Die Meldung, die dem Benutzer angezeigt werden soll, wenn ein ungültiger Code bereitgestellt wurde und der Benutzer berechtigt ist, den richtigen Code bereitzustellen. |
UserMessageIfSessionConflict | Nein | Die Meldung, die dem Benutzer angezeigt werden soll, wenn der Code nicht überprüft werden kann. |
Beispiel
Das folgende Beispiel TechnicalProfile
wird zum Überprüfen eines Codes verwendet:
<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>
Nächste Schritte
Im folgenden Artikel finden Sie ein Beispiel für die Verwendung eines technischen Profils mit Einmalkennwort und benutzerdefinierter E-Mail-Überprüfung: