TOTP-visningskontroll

Använd visningskontroller för tidsbaserade engångslösenord (TOTP) för att aktivera multifaktorautentisering med hjälp av TOTP-metoden. Slutanvändare måste använda en autentiseringsapp som genererar TOTP-koder, till exempel Microsoft Authenticator-appen eller någon annan autentiseringsapp som stöder TOTP-verifiering.

Om du vill aktivera TOTP i din anpassade princip använder du följande visningskontroller:

  • totpQrCodeControl – Rendera QR-koden och en djuplänk. När användaren söker igenom QR-koden eller öppnar den djupa länken öppnas autentiseringsappen så att användaren kan slutföra registreringsprocessen.
  • AuthenticatorAppIconControl – Rendera appikonen för Microsoft Authenticator med en länk för att ladda ned appen till användarens mobila enhet.
  • AuthenticatorInfoControl – Rendera TOTP-introduktionen.

Följande skärmbild visar sidan TOTP-registrering som visar de tre visningskontrollerna.

Screenshot showing TOTP display controls enrollment flow

Följande XML-kodfragment visar de tre visningskontrollerna:

  <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>

Visningskontrollerna refereras från en självkontrollerad teknisk profil. Den självsäkra tekniska profilen använder transformering av indataanspråk för att förbereda nödvändiga qrCodeContent och secretKey indataanspråk.

Omvandlingar av indataanspråk måste anropas i följande ordning:

  1. Anspråkstransformeringstypen CreateSecretCreateOtpSecret. Anspråkstransformeringen skapar en TOTP-hemlighetsnyckel. Den här nyckeln lagras senare i användarens profil i Azure AD B2C och delas med autentiseringsappen. Autentiseringsappen använder nyckeln för att generera en TOTP-kod som användaren behöver gå igenom MFA. Din anpassade princip använder nyckeln för att verifiera TOTP-koden som tillhandahålls av användaren.
  2. Anspråkstransformeringstypen CreateIssuerCreateStringClaim. Anspråkstransformeringen skapar TOTP-utfärdarnamnet. Utfärdarnamnet är ditt klientnamn, till exempel "Contoso demo".
  3. Anspråkstransformeringstypen CreateUriLabelFormatStringMultipleClaims. Anspråkstransformeringen skapar TOTP-URI-etiketten. Etiketten är en kombination av användarens unika identifierare, till exempel e-postadress och utfärdarnamnet, Contoso demo:emily@fabrikam.comtill exempel .
  4. Anspråkstransformeringstypen CreateUriStringför BuildUri. Anspråkstransformeringen skapar TOTP-URI-strängen. Strängen är en kombination av URI-etiketten och den hemliga nyckeln, otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demotill exempel . Den här URI-etiketten återges av visningskontrollen i ett QR-kodformat och en djuplänk.

Följande XML-kod visar den EnableOTPAuthentication självsäkra tekniska profilen med dess transformering av indataanspråk, indataanspråk och visningskontroller.

<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>

Verifieringsflöde

Verifieringens TOTP-kod görs av en annan självkontrollerad teknisk profil som använder visningsanspråk och en teknisk valideringsprofil. Mer information finns i Definiera en teknisk profil för Microsoft Entra-ID för multifaktorautentisering i en anpassad Azure AD B2C-princip.

Följande skärmbild visar en TOTP-verifieringssida.

Screenshot showing TOTP display controls verification flow

Nästa steg