A CAPTCHA engedélyezése az Azure Active Directory B2C-ben

Fontos

2025. május 1-jére az Azure AD B2C már nem lesz elérhető az új ügyfelek számára. További információ a GYIK-ben.

Mielőtt hozzákezdene, a lap tetején található Szabályzattípus kiválasztása választóval válassza ki a beállított szabályzat típusát. Az Azure Active Directory B2C két módszert kínál annak meghatározására, hogy a felhasználók hogyan használják az alkalmazásokat: előre definiált felhasználói folyamatokon vagy teljesen konfigurálható egyéni szabályzatokon keresztül. A cikkben szereplő lépések különbözőek az egyes metódusok esetében.

Az Azure Active Directory B2C (Azure AD B2C) lehetővé teszi a CAPTCHA engedélyezését, hogy megelőzze a fogyasztói alkalmazásokra irányuló automatizált támadásokat. Az Azure AD B2C CAPTCHA támogatja a hang- és vizuális kihívásokat is. Ezt a biztonsági funkciót a helyi fiókok regisztrációs és bejelentkezési folyamataiban is engedélyezheti. A CAPTCHA nem alkalmazható a közösségi identitásszolgáltatók bejelentkezésére.

Megjegyzés:

Ez a funkció nyilvános előzetes verzióban érhető el

Előfeltételek

A CAPTCHA engedélyezése

  1. Jelentkezzen be a Azure portalra.

  2. Ha több bérlőhöz is hozzáférése van, a felső menüben a Beállítások ikont választva váltson az Azure AD B2C-bérlőre a Címtárak + előfizetések menüből.

  3. A bal oldali menüben válassza az Azure AD B2C-t. Vagy válassza a Minden szolgáltatás lehetőséget, és keresse meg és válassza az Azure AD B2C-t.

  4. Válassza ki a felhasználói folyamatokat.

  5. Válassza ki azt a felhasználói folyamatot, amelyhez engedélyezni szeretné a CAPTCHA-t. Például B2C_1_signinsignup.

  6. Válassza a Tulajdonságokelemet.

  7. A CAPTCHA (előzetes verzió) területen válassza ki azt a folyamatot, amelyhez engedélyezni szeretné a CAPTCHA-t, például a CAPTCHA engedélyezése – Regisztráció.

  8. Válassza az Mentésgombot.

A felhasználói folyamat tesztelése

A felhasználói folyamat tesztelése lépésekkel tesztelheti és ellenőrizheti, hogy a CAPTCHA engedélyezve van-e a kiválasztott folyamathoz. A captCHA típusától (vizualizáció vagy hang) függően meg kell adnia a megjelenő vagy hallható karaktereket.

A CAPTCHA egyéni szabályzatban való engedélyezéséhez frissítenie kell a meglévő egyéni házirendfájlokat. Ha nem rendelkezik meglévő egyéni házirendfájlokkal, töltse le a .zip fájlt , vagy klónozza az adattárat innen https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack. Ebben a cikkben frissítjük az XML-fájlokat a /Display Controls Starterpack/LocalAccounts/ mappában.

Jogcímek deklarálása

További jogcímek szükségesek a CAPTCHA egyéni szabályzatban való engedélyezéséhez:

  1. A VS Code-ban nyissa meg a TrustFrameworkBase.XML fájlt.

  2. A ClaimsSchema szakaszban a következő kód használatával deklarálhatja a jogcímeket.

     <!--<ClaimsSchema>-->
      ...
      <ClaimType Id="inputSolution">
        <DataType>string</DataType>
      </ClaimType>
    
      <ClaimType Id="solved">
        <DataType>boolean</DataType>
      </ClaimType>
    
      <ClaimType Id="reason">
        <DataType>string</DataType>
      </ClaimType>
    
      <ClaimType Id="azureregion">
        <DataType>string</DataType>
      </ClaimType>
    
      <ClaimType Id="challengeId">
        <DisplayName>The ID of the generated captcha</DisplayName>
        <DataType>string</DataType>
        <UserHelpText>Captcha challenge identifier</UserHelpText>
        <UserInputType>Paragraph</UserInputType>
      </ClaimType>
    
      <ClaimType Id="challengeType">
        <DisplayName>Type of captcha (visual / audio)</DisplayName>
        <DataType>string</DataType>
        <UserHelpText>Captcha challenge type</UserHelpText>
        <UserInputType>Paragraph</UserInputType>
      </ClaimType>
    
      <ClaimType Id="challengeString">
        <DisplayName>Captcha challenge code</DisplayName>
        <DataType>string</DataType>
        <UserHelpText>Captcha challenge code</UserHelpText>
        <UserInputType>Paragraph</UserInputType>
      </ClaimType>
    
      <ClaimType Id="captchaEntered">
        <DisplayName>Captcha entered by the user</DisplayName>
        <DataType>string</DataType>
        <UserHelpText>Enter the characters you see</UserHelpText>
        <UserInputType>TextBox</UserInputType>
      </ClaimType>
    
      <ClaimType Id="isCaptchaSolved">
        <DisplayName>Flag indicating that the captcha was successfully solved</DisplayName>
        <DataType>boolean</DataType>
      </ClaimType>
    
      <ClaimType Id="mfaCaptchaEnabled">
        <DisplayName>flag used to control captcha enabled in MFA</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
    
      <ClaimType Id="signupCaptchaEnabled">
        <DisplayName>flag used to control captcha enabled during signup</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
    
      <ClaimType Id="signinCaptchaEnabled">
        <DisplayName>flag used to control captcha enabled during signin</DisplayName>
        <DataType>string</DataType>
      </ClaimType>
      ...
     <!--<ClaimsSchema>-->
    

Megjelenítési vezérlő konfigurálása

Ha engedélyezni szeretné a CAPTCHA-t az egyéni szabályzathoz, egy CAPTCHA megjelenítési vezérlőt használ. A CAPTCHA megjelenítési vezérlő létrehozza és megjeleníti a CAPTCHA-képet.

A TrustFrameworkBase.XML fájlban keresse meg az DisplayControls elemet, majd adja hozzá a következő megjelenítési vezérlőt gyermekelemként. Ha még nem rendelkezik DisplayControls elemel, adjon hozzá egyet.

<!--<DisplayControls>-->
...    
<DisplayControl Id="captchaControlChallengeCode" UserInterfaceControlType="CaptchaControl" DisplayName="Help us beat the bots">    
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="challengeType" />
        <InputClaim ClaimTypeReferenceId="challengeId" />
    </InputClaims>

    <DisplayClaims>
        <DisplayClaim ClaimTypeReferenceId="challengeType" ControlClaimType="ChallengeType" />
        <DisplayClaim ClaimTypeReferenceId="challengeId" ControlClaimType="ChallengeId" />
        <DisplayClaim ClaimTypeReferenceId="challengeString" ControlClaimType="ChallengeString" />
        <DisplayClaim ClaimTypeReferenceId="captchaEntered" ControlClaimType="CaptchaEntered" />
    </DisplayClaims>

    <Actions>
    <Action Id="GetChallenge">
        <ValidationClaimsExchange>
        <ValidationClaimsExchangeTechnicalProfile
            TechnicalProfileReferenceId="HIP-GetChallenge" />
        </ValidationClaimsExchange>
    </Action>

    <Action Id="VerifyChallenge">
        <ValidationClaimsExchange>
        <ValidationClaimsExchangeTechnicalProfile
            TechnicalProfileReferenceId="HIP-VerifyChallenge" />
        </ValidationClaimsExchange>
    </Action>
    </Actions>
</DisplayControl> 
...
<!--</DisplayControls>-->

CAPTCHA technikai profil konfigurálása

Az Azure AD B2C CAPTCHA technikai profilja ellenőrzi a CAPTCHA-kihívást. Ez a technikai profil létrehozhat egy CAPTCHA-kódot, vagy ellenőrizheti azt a konfigurálástól függően.

A TrustFrameworkBase.XML fájlban keresse meg az ClaimsProviders elemet, és adja hozzá a jogcímszolgáltatót a következő kóddal:

<!--<ClaimsProvider>-->
...
<ClaimsProvider>

    <DisplayName>HIPChallenge</DisplayName>

    <TechnicalProfiles>

    <TechnicalProfile Id="HIP-GetChallenge">
        <DisplayName>GetChallenge</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.CaptchaProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <Metadata>
            <Item Key="Operation">GetChallenge</Item>
            <Item Key="Brand">HIP</Item>
        </Metadata>
        <InputClaims>
            <InputClaim ClaimTypeReferenceId="challengeType" />
        </InputClaims>
        <DisplayClaims>
            <DisplayClaim ClaimTypeReferenceId="challengeString" />
        </DisplayClaims>
        <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="challengeId" />
            <OutputClaim ClaimTypeReferenceId="challengeString" PartnerClaimType="ChallengeString" />
            <OutputClaim ClaimTypeReferenceId="azureregion" />
        </OutputClaims>
    </TechnicalProfile>
    <TechnicalProfile Id="HIP-VerifyChallenge">
        <DisplayName>Verify Code</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.CaptchaProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <Metadata>
        <Item Key="Brand">HIP</Item>
            <Item Key="Operation">VerifyChallenge</Item>
        </Metadata>
        <InputClaims>
            <InputClaim ClaimTypeReferenceId="challengeType" DefaultValue="Visual" />
            <InputClaim ClaimTypeReferenceId="challengeId" />
            <InputClaim ClaimTypeReferenceId="captchaEntered" PartnerClaimType="inputSolution" Required="true" />
            <InputClaim ClaimTypeReferenceId="azureregion" />
        </InputClaims>
        <DisplayClaims>
            <DisplayClaim ClaimTypeReferenceId="captchaEntered" />
        </DisplayClaims>
        <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="challengeId" />
            <OutputClaim ClaimTypeReferenceId="isCaptchaSolved" PartnerClaimType="solved" />
            <OutputClaim ClaimTypeReferenceId="reason" PartnerClaimType="reason" />
        </OutputClaims>
    </TechnicalProfile>
    </TechnicalProfiles>
</ClaimsProvider>    
...
<!--<ClaimsProviders>-->

A GetChallenge művelettel konfigurált CAPTCHA technikai profil létrehozza és megjeleníti a CAPTCHA kihívás karakterláncát. A VerifyChallenge használatával konfigurált CAPTCHA technikai profil ellenőrzi a felhasználó által bevitt kihívási sztringet.

Tartalomdefiníció lapelrendezéseinek frissítése

A különböző lapelrendezésekhez használja a következő lapelrendezési verziókat:

Oldalelrendezés Lapelrendezés verziótartománya
Önállóan összeszerelt >=2,1,33
Egyesített >=2,1.21
Többtényezős >=1,2.19

példa:

A TrustFrameworkBase.XML fájlban az elem alatt keresse meg az ContentDefinitionsId="api.localaccountsignup" tartalomdefiníciót, majd frissítse a DataUri-t az alábbi kódban látható módon:

<!---<ContentDefinitions>-->
...
<ContentDefinition Id="api.localaccountsignup">
    ...
    <!--Update this DataUri-->
    <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.27</DataUri>
    ...
</ContentDefinition>
...
<!---</ContentDefinitions>-->

Az önkiszolgáló lapelrendezés verzióját 2.1.27-es verzióként adhatja meg.

Miután konfigurálta a technikai profilokat és a megjelenítési vezérlőket, megadhatja azt a folyamatot, amelyhez engedélyezni szeretné a CAPTCHA-t.

A CAPTCHA engedélyezése a regisztrációhoz vagy a bejelentkezési folyamathoz

Ha engedélyezni szeretné a CAPTCHA-t a regisztrációs vagy bejelentkezési folyamathoz, kövesse az alábbi lépéseket:

  1. A regisztrációs és bejelentkezési felhasználói folyamat áttekintésével, mint például a SignUpOrSignIn, azonosíthatja azt a saját maga által definiált technikai profilt, amely megjeleníti a regisztrációs vagy bejelentkezési élményt.

  2. A technikai profilban , például a LocalAccountSignUpWithLogonEmailben adjon hozzá egy metaadatkulcsot és egy megjelenítési jogcímbejegyzést az alábbi kódban látható módon:

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
    ...
  <Metadata>
    ...
    <!--Add this metadata entry. Set value to true to activate CAPTCHA-->
    <Item Key="setting.enableCaptchaChallenge">true</Item>
    ...
  </Metadata>
    ...
  <DisplayClaims>
    ...
    <!--Add this display claim, which is a reference to the captcha display control-->
    <DisplayClaim DisplayControlReferenceId="captchaControlChallengeCode" /> 
    ...
  </DisplayClaims>
    ...
</TechnicalProfile>

A megjelenítési jogcím bejegyzése a korábban konfigurált megjelenítési vezérlőre hivatkozik.

CAPTCHA engedélyezése az MFA folyamatban

A CAPTCHA-t a Többtényezős hitelesítési folyamatban való engedélyezéséhez frissítenie kell két technikai profilt, mégpedig az önálló megerősítésű technikai profilban és a telefonos tényező technikai profiljában:

  1. Vizsgálja meg a regisztrációs és bejelentkezési felhasználói utat (például SignUpOrSignIn), hogy azonosítsa a regisztrációs vagy bejelentkezési folyamatért felelős önállóan megadott technikai profilokat és telefonos tényező technikai profilokat.

  2. Mindkét technikai profilban adjon hozzá egy metaadatkulcsot és egy megjelenítési jogcímbejegyzést az alábbi kódban látható módon:

<TechnicalProfile Id="PhoneFactor-InputOrVerify">
    ...
  <Metadata>
    ...
    <!--Add this metadata entry. Value set to true-->
    <Item Key="setting.enableCaptchaChallenge">true</Item>
    ...
  </Metadata>
    ...
  <DisplayClaims>
    ...
    <!--Add this display claim-->
    <DisplayClaim DisplayControlReferenceId="captchaControlChallengeCode" /> 
    ...
  </DisplayClaims>
    ...
</TechnicalProfile>

A CAPTCHA funkciójelző engedélyezése

Ahhoz, hogy a CAPTCHA-t a regisztráció, a bejelentkezés vagy az MFA során kényszerítse ki, hozzá kell adnia egy technikai profilt, amely lehetővé teszi az egyes forgatókönyvek funkciójelzőjét, majd meghívja a technikai profilt a felhasználói folyamat során.

  1. A TrustFrameworkBase.XML fájlban keresse meg az ClaimsProviders elemet, és adja hozzá a jogcímszolgáltatót a következő kóddal:
<!--<ClaimsProvider>-->
...
<ClaimsProvider>

    <DisplayName>Set Feature Flags</DisplayName>

    <TechnicalProfiles>

    <TechnicalProfile Id="SetFeatureDefaultValue">
        <DisplayName>Set Feature Flags</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="signupCaptchaEnabled" DefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="signinCaptchaEnabled" DefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="mfaCaptchaEnabled" DefaultValue="true" />
        </OutputClaims>
    </TechnicalProfile>
    </TechnicalProfiles>
</ClaimsProvider>
...
<!--<ClaimsProviders>-->
  1. Állítsa DefaultValue igaz vagy hamis értékre a CAPTCHA-forgatókönyvtől függően

  2. Adja hozzá a funkciójelzők technikai profilját a felhasználói folyamathoz, majd frissítse a többi vezénylési lépés sorrendjét.

<!--<UserJourneys>-->
...
<UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>

        <!--Add this orchestration step-->
        <OrchestrationStep Order="1" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="SetFeatureDefaultValue" TechnicalProfileReferenceId="SetFeatureDefaultValue" />
          </ClaimsExchanges>
        </OrchestrationStep>
...
<!--<UserJourneys>-->

Az egyéni szabályzatfájlok feltöltése

Az egyéni szabályzatfájlok feltöltéséhez használja a szabályzatok feltöltésének lépéseit.

Az egyéni szabályzat tesztelése

Az egyéni szabályzat tesztelése lépésekkel tesztelheti és ellenőrizheti, hogy a CAPTCHA engedélyezve van-e a kiválasztott folyamathoz. A captCHA típusától, vizualizációjától vagy hangjától függően meg kell adnia a megjelenő vagy hallható karaktereket.

Megjegyzés:

  • CAPTCHA nem adható hozzá az MFA-lépéshez kizárólag regisztrációs célú felhasználói folyamatban.
  • MFA-folyamatokban a CAPTCHA akkor alkalmazható, ha a választott MFA-módszer az SMS vagy a telefonhívás, csak SMS vagy telefonhívás.