Contrôle d’affichage des mots de passe à usage unique et durée définie (TOTP)

Utilisez les contrôles d’affichage des mots de passe à usage unique et durée définie (TOTP) pour activer l’authentification multifacteur à l’aide de la méthode TOTP. Les utilisateurs finaux doivent utiliser une application d’authentificateur qui génère des codes TOTP, tels que l’application Microsoft Authenticator ou toute autre application d’authentificateur qui prend en charge la vérification TOTP.

Pour activer les mots de passe à usage unique et durée définie (TOTP) dans votre stratégie personnalisée, utilisez les contrôles d’affichage suivants :

  • totpQrCodeControl : permet d’afficher le code QR et un lien ciblé. Lorsque l’utilisateur analyse le code QR ou ouvre le lien ciblé, l’application d’authentificateur s’ouvre afin que l’utilisateur puisse terminer le processus d’inscription.
  • AuthenticatorAppIconControl : permet d’afficher l’icône de l’application Microsoft Authenticator avec un lien pour télécharger l’application sur l’appareil mobile de l’utilisateur.
  • AuthenticatorInfoControl : permet d’afficher l’introduction de TOTP.

La capture d’écran suivante illustre la page d’inscription TOTP montrant les trois contrôles d’affichage.

Screenshot showing TOTP display controls enrollment flow

L’extrait de code XML suivant montre les trois contrôles d’affichage :

  <DisplayControls>
    <!-- Render the QR code by taking the URI (qrCodeContent) input claim and rendering it as a QR code-->
    <DisplayControl Id="totpQrCodeControl" UserInterfaceControlType="QrCodeControl">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="qrCodeContent" />
      </InputClaims>
      <DisplayClaims>
        <DisplayClaim ClaimTypeReferenceId="qrCodeContent" ControlClaimType="QrCodeContent" />
      </DisplayClaims>
    </DisplayControl>

    <!-- Render the TOTP information by taking the totpIdentifier and the secretKey input claims and rendering them in plain text-->
    <DisplayControl Id="authenticatorInfoControl" UserInterfaceControlType="AuthenticatorInfoControl">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="totpIdentifier" />
        <InputClaim ClaimTypeReferenceId="secretKey" />
      </InputClaims>
      <DisplayClaims>
        <DisplayClaim ClaimTypeReferenceId="totpIdentifier" />
        <DisplayClaim ClaimTypeReferenceId="secretKey" />
      </DisplayClaims>
    </DisplayControl>

    <!-- Render the authenticator apps icon. -->
    <DisplayControl Id="authenticatorAppIconControl" UserInterfaceControlType="AuthenticatorAppIconControl" />
  </DisplayControls>

Les contrôles d’affichage sont référencés à partir d’un profil technique auto-déclaré. Le profil technique auto-déclaré utilise la transformation de revendications d’entrée pour préparer les revendications d’entrée qrCodeContent et secretKey requises.

Les transformations de revendications d’entrée doivent être appelées dans l’ordre suivant :

  1. Le type de transformation de revendications CreateSecret de CreateOtpSecret. La transformation de revendications crée une clé secrète TOTP. Cette clé est ensuite stockée dans le profil de l’utilisateur dans le répertoire Azure AD B2C et est partagée avec l’application d’authentificateur. L’application d’authentificateur utilise la clé pour générer un code TOTP lorsque l’utilisateur doit passer par l’authentification multifacteur (MFA). Votre stratégie personnalisée utilise cette clé pour valider le code TOTP fourni par l’utilisateur.
  2. Le type de transformation de revendications CreateIssuer de CreateStringClaim. La transformation de revendications crée le nom de l’émetteur TOTP. Le nom de l’émetteur est le nom de votre locataire, par exemple « Contoso demo ».
  3. Le type de transformation des revendications CreateUriLabel de FormatStringMultipleClaims. La transformation de revendications crée l’étiquette de l’URI TOTP. L’étiquette est une combinaison de l’identificateur unique de l’utilisateur, telle que l’adresse e-mail et le nom de l’émetteur, par exemple Contoso demo:emily@fabrikam.com.
  4. Le type de transformation de revendications CreateUriString de BuildUri. La transformation de revendications crée la chaîne de l’URI TOTP. La chaîne est une combinaison de l’étiquette de l’URI et de la clé secrète, par exemple otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo. Cette étiquette d’URI est restituée par le contrôle d’affichage dans un format de code QR et un lien ciblé.

Le code XML suivant montre le profil technique auto-déclaré EnableOTPAuthentication avec sa transformation de revendications d’entrée, les revendications d’entrée et les contrôles d’affichage.

<TechnicalProfile Id="EnableOTPAuthentication">
  <DisplayName>Sign up with Authenticator app</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ContentDefinitionReferenceId">api.selfasserted.totp</Item>
    <Item Key="language.button_continue">Continue</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
  </CryptographicKeys>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateSecret" />
    <InputClaimsTransformation ReferenceId="CreateIssuer" />
    <InputClaimsTransformation ReferenceId="CreateUriLabel" />
    <InputClaimsTransformation ReferenceId="CreateUriString" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="qrCodeContent" />
    <InputClaim ClaimTypeReferenceId="secretKey" />
  </InputClaims>
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="authenticatorAppIconControl" />
    <DisplayClaim ClaimTypeReferenceId="QrCodeScanInstruction" />
    <DisplayClaim DisplayControlReferenceId="totpQrCodeControl" />
    <DisplayClaim DisplayControlReferenceId="authenticatorInfoControl" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="secretKey" />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-MFA-TOTP" />
</TechnicalProfile>

Flux de vérification

Le code de vérification TOTP est effectué par un autre profil technique auto-déclaré qui utilise des revendications d’affichage et un profil technique de validation. Pour plus d’informations, consultez Définir un profil technique d’authentification multifacteur Microsoft Entra ID dans une stratégie personnalisée Azure AD B2C.

La capture d’écran suivante illustre une page de vérification TOTP.

Screenshot showing TOTP display controls verification flow

Étapes suivantes