Définir un profil technique de mot de passe à usage unique dans une stratégie personnalisée Azure AD B2C
Notes
Dans Active Directory B2C, les stratégies personnalisées sont principalement conçues pour gérer des scénarios complexes. Pour la plupart des scénarios, nous vous recommandons de recourir à des flux d’utilisateurs intégrés. Si vous ne l’avez pas fait, découvrez le Pack de démarrage de stratégie personnalisée dans Prise en main des stratégies personnalisées dans Active Directory B2C.
Azure Active Directory B2C (Azure AD B2C) gère la génération et la vérification d'un mot de passe à usage unique. Utilisez un profil technique pour générer un code, puis vérifiez ce code plus tard.
Le profil technique de mot de passe à usage unique peut également renvoyer un message d'erreur pendant la vérification du code. Concevez l’intégration avec le mot de passe à usage unique en utilisant un profil technique de validation. Un profil technique de validation appelle le profil technique de mot de passe à usage unique pour vérifier le code. Le profil technique de validation valide les données fournies par l’utilisateur avant la poursuite du parcours de celui-ci. Avec le profil technique de validation, un message d’erreur apparaît sur une page déclarée automatiquement.
Protocol
L’attribut Name de l’élément Protocol doit être défini sur Proprietary
. L’attribut handler doit contenir le nom qualifié complet d’Assembly de gestionnaire de protocole utilisé par Azure AD B2C :
Web.TPEngine.Providers.OneTimePasswordProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
L’exemple suivant montre un profil technique de mot de passe à usage unique :
<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" />
...
Générer le code
Le premier mode de ce profil technique consiste à générer un code. Vous trouverez ci-dessous les options qui peuvent être configurées pour ce mode. Les codes générés et les tentatives sont suivis dans la session.
Revendications d’entrée
L'élément InputClaims contient une liste de revendications à envoyer au fournisseur du protocole de mot de passe à usage unique. Vous pouvez également mapper le nom de votre revendication au nom défini ci-dessous.
ClaimReferenceId | Obligatoire | Description |
---|---|---|
identificateur | Oui | Identificateur permettant d’identifier l'utilisateur qui doit vérifier le code ultérieurement. Il est généralement utilisé comme l'identificateur de la destination où le code est livré, par exemple l'adresse e-mail ou le numéro de téléphone. |
L’élément InputClaimsTransformations peut contenir une collection d’éléments InputClaimsTransformation qui sont utilisés pour modifier les revendications de sortie ou en générer de nouvelles avant l’envoi au fournisseur du protocole de mot de passe à usage unique.
Revendications de sortie
L'élément OutputClaims contient une liste de revendications générées par le fournisseur du protocole de mot de passe à usage unique. Vous pouvez également mapper le nom de votre revendication au nom défini ci-dessous.
ClaimReferenceId | Obligatoire | Description |
---|---|---|
otpGenerated | Oui | Code généré dont la session est gérée par Azure AD B2C. |
L’élément OutputClaimsTransformations peut contenir une collection d’éléments OutputClaimsTransformation qui sont utilisés pour modifier les revendications de sortie ou en générer de nouvelles.
Métadonnées
Les paramètres suivants peuvent être utilisés pour configurer le mode de génération du code :
Attribut | Obligatoire | Description |
---|---|---|
Opération | Oui | Opération à effectuer. Valeur possible : GenerateCode . |
CodeExpirationInSeconds | Non | Délai d’expiration du code, en secondes. Minimum : 60 ; maximum : 1200 ; par défaut : 600 . Chaque fois qu'un code est fourni (même code à l'aide de ReuseSameCode , ou nouveau code), le délai d'expiration du code est prolongée. Ce délai est également utilisé pour définir le délai d’expiration des nouvelles tentatives (une fois le nombre maximum de nouvelles tentatives atteint, l’utilisateur ne peut plus essayer d’obtenir de nouveaux codes jusqu’à l’expiration de ce délai). |
CodeLength | Non | Longueur du code. La valeur par défaut est 6 . |
CharacterSet | Non | Jeu de caractères pour le code, formaté pour être utilisé dans une expression régulière. Par exemple : a-z0-9A-Z . La valeur par défaut est 0-9 . Le jeu de caractères doit comprendre un minimum de 10 caractères différents dans le jeu spécifié. |
NumRetryAttempts | Non | Nombre de tentatives de vérification avant que le code soit considéré comme non valide. La valeur par défaut est 5 . Par exemple, si vous affectez à NumRetryAttempts la valeur 2, vous ne serez autorisé à effectuer que 2 tentatives au total (première tentative + nouvelle tentative). Pour la troisième tentative, le nombre maximal de tentatives est considéré comment atteint, que le code soit correct ou non. |
NumCodeGenerationAttempts | Non | Nombre maximal de tentatives de génération de code par identificateur. La valeur par défaut est 10 si elle n’est pas spécifiée. |
ReuseSameCode | Non | Spécifie si le même code doit être fourni au lieu de générer un nouveau code lorsque le code donné n'a pas expiré et reste valide. La valeur par défaut est false . |
Exemple
L'exemple suivant TechnicalProfile
est utilisé pour générer un code :
<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>
Vérifier le code
Le deuxième mode de ce profil technique consiste à vérifier un code. Vous trouverez ci-dessous les options qui peuvent être configurées pour ce mode.
Revendications d’entrée
L'élément InputClaims contient une liste de revendications à envoyer au fournisseur du protocole de mot de passe à usage unique. Vous pouvez également mapper le nom de votre revendication au nom défini ci-dessous.
ClaimReferenceId | Obligatoire | Description |
---|---|---|
identificateur | Oui | Identificateur permettant d’identifier l'utilisateur qui a précédemment généré un code. Il est généralement utilisé comme l'identificateur de la destination où le code est livré, par exemple l'adresse e-mail ou le numéro de téléphone. |
otpToVerify | Oui | Code de vérification fourni par l’utilisateur. |
L’élément InputClaimsTransformations peut contenir une collection d’éléments InputClaimsTransformation qui sont utilisés pour modifier les revendications de sortie ou en générer de nouvelles avant l’envoi au fournisseur du protocole de mot de passe à usage unique.
Revendications de sortie
Aucune revendication de sortie n’est fournie pendant la vérification du code de ce fournisseur de protocole.
L’élément OutputClaimsTransformations peut contenir une collection d’éléments OutputClaimsTransformation qui sont utilisés pour modifier les revendications de sortie ou en générer de nouvelles.
Métadonnées
Les paramètres suivants peuvent être utilisés pour le mode de vérification du code :
Attribut | Obligatoire | Description |
---|---|---|
Opération | Oui | Opération à effectuer. Valeur possible : VerifyCode . |
Éléments d’interface utilisateur
Les métadonnées suivantes peuvent être utilisées pour configurer les messages d’erreur affichés en cas d’échec de la vérification du code. Les métadonnées doivent être configurées dans le profil technique autodéclaré. Les messages d’erreur peuvent être localisés.
Attribut | Obligatoire | Description |
---|---|---|
UserMessageIfSessionDoesNotExist | Non | Message à afficher à l'utilisateur si la session de vérification du code a expiré. Indique soit que le code a expiré, soit que le code n'a jamais été généré pour un identificateur donné. |
UserMessageIfMaxRetryAttempted | Non | Message à afficher à l'utilisateur s'il a dépassé les tentatives de vérification maximales autorisées. |
UserMessageIfMaxNumberOfCodeGenerated | Non | Message à afficher à l’utilisateur si la génération de code a dépassé le nombre maximal de tentatives autorisé. |
UserMessageIfInvalidCode | Non | Message à afficher à l'utilisateur s'il a fourni un code non valide. |
UserMessageIfVerificationFailedRetryAllowed | Non | Message à afficher à l’utilisateur s’il a fourni un code non valide et que l’utilisateur est autorisé à fournir le code correct. |
UserMessageIfSessionConflict | Non | Message à afficher à l’utilisateur si le code ne peut pas être vérifié. |
Exemple
L'exemple suivant TechnicalProfile
est utilisé pour la vérification d'un code :
<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>
Étapes suivantes
Consultez l’article suivant pour accéder à un exemple d’utilisation de profil technique avec mot de passe à usage unique et vérification par e-mail personnalisée :