Partager via


Définir un profil technique de mot de passe à usage unique dans une stratégie personnalisée Azure AD B2C

Important

À compter du 1er mai 2025, Azure AD B2C ne sera plus disponible pour les nouveaux clients. Pour plus d’informations, consultez notre FAQ.

Remarque

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) fournit une prise en charge de la gestion de la génération et de 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 ultérieurement.

Le profil technique de mot de passe à usage unique peut également renvoyer un message d’erreur lors de la vérification du code. Concevez l’intégration avec le mot de passe à usage unique à l’aide d’un profil technique de validation. Un profil technique de validation appelle le profil technique de mot de passe à usage unique pour vérifier un code. Le profil technique de validation valide les données fournies par l’utilisateur avant que le parcours de l’utilisateur ne se poursuive. Avec le profil technique de validation, un message d’erreur s’affiche sur une page auto-affirmée.

Protocole

L’attribut Name de l’élément Protocol doit être défini sur Proprietary. L’attribut handler doit contenir le nom complet de l’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 illustre 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 au cours de la session.

Revendications d’entrée

L’élément InputClaims contient une liste de revendications à envoyer au fournisseur de protocole de mot de passe à usage unique. Vous pouvez également associer le nom de votre revendication au nom défini ci-dessous.

ClaimReferenceId Obligatoire Descriptif
identificateur Oui L’identifiant permettant d’identifier l’utilisateur qui doit vérifier le code ultérieurement. Il est couramment utilisé comme identifiant de la destination à laquelle 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 d’entrée ou en générer de nouvelles avant de les envoyer au fournisseur de 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 de protocole de mot de passe à usage unique. Vous pouvez également associer le nom de votre revendication au nom défini ci-dessous.

ClaimReferenceId Obligatoire Descriptif
otpGénéré 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 de code :

Caractéristique Obligatoire Descriptif
Opération Oui Opération à effectuer. Valeur possible : GenerateCode.
CodeExpirationInSeconds Non Temps en secondes jusqu’à l’expiration du code. Minimum : 60; Maximum : 1200; Par défaut : 600. Chaque fois qu’un code est fourni (le même code utilisant ReuseSameCode, ou un nouveau code), l’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 que le nombre maximal de tentatives est atteint, l’utilisateur ne peut plus tenter d’obtenir de nouveaux codes jusqu’à l’expiration de ce délai)
CodeLength Non Longueur du code. La valeur par défaut est 6.
Jeu de caractères Non Jeu de caractères du 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 inclure un minimum de 10 caractères différents dans le jeu spécifié.
NumRetryAttempts Non Le nombre de tentatives de vérification avant que le code ne soit considéré comme invalide. La valeur par défaut est 5. Par exemple, si vous définissez NumRetryAttempts sur 2, il ne vous autorisera que 2 tentatives au total (première + 1 nouvelle tentative). Pour la 3ème tentative, il lancera le maximum de tentatives 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 non spécifié.
RéutiliserSameCode Non Si le même code doit être donné plutôt que de générer un nouveau code lorsque le code donné n’a pas expiré et est toujours valide. La valeur par défaut est false.

Exemple :

L’exemple TechnicalProfile suivant 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 de protocole de mot de passe à usage unique. Vous pouvez également associer le nom de votre revendication au nom défini ci-dessous.

ClaimReferenceId Obligatoire Descriptif
identificateur Oui L’identifiant permettant d’identifier l’utilisateur qui a précédemment généré un code. Il est couramment utilisé comme identifiant de la destination à laquelle le code est livré, par exemple l’adresse e-mail ou le numéro de téléphone.
otpToVerify Oui Le 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 d’entrée ou en générer de nouvelles avant de les envoyer au fournisseur de protocole de mot de passe à usage unique.

Revendications de sortie

Aucune revendication de sortie n’est fournie lors de 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 coder le mode de vérification :

Caractéristique Obligatoire Descriptif
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.

Caractéristique Obligatoire Descriptif
UserMessageIfSessionDoesNotExist Non Message à afficher à l’utilisateur si la session de vérification du code a expiré. C’est soit le code a expiré, soit le code n’a jamais été généré pour un identifiant donné.
UserMessageIfMaxRetryAttempt Non Message à afficher à l’utilisateur s’il a dépassé le nombre maximal de tentatives de vérification 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 TechnicalProfile suivant 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 obtenir un exemple d’utilisation d’un profil technique de mot de passe à usage unique avec la vérification d’adresse e-mail personnalisée :

  • Vérification d’e-mail personnalisée dans Azure Active Directory B2C (Mailjet, SendGrid)