Azure Active Directory B2C'de CAPTCHA'yı etkinleştirme

Önemli

1 Mayıs 2025 tarihinden itibaren Azure AD B2C artık yeni müşteriler için satın alınamayacak. SSS bölümünden daha fazla bilgi edinebilirsiniz.

Başlamadan önce, ayarlamakta olduğunuz ilke türünü seçmek için bu sayfanın üst kısmındaki İlke türü seç seçicisini kullanın. Azure Active Directory B2C, kullanıcıların uygulamalarınızla nasıl etkileşim kurduğunu tanımlamak için iki yöntem sunar: önceden tanımlanmış kullanıcı akışları veya tam olarak yapılandırılabilir özel ilkeler aracılığıyla. Bu makalede gerekli adımlar her yöntem için farklıdır.

Azure Active Directory B2C (Azure AD B2C), tüketiciye yönelik uygulamalarınıza yönelik otomatik saldırıları önlemek için CAPTCHA'yı etkinleştirmenize olanak tanır. Azure AD B2C CAPTCHA hem ses hem de görsel zorlukları destekler. Bu güvenlik özelliğini yerel hesaplarınız için hem kaydolma hem de oturum açma akışlarında etkinleştirebilirsiniz. CAPTCHA, sosyal kimlik sağlayıcılarının oturum açma işlemleri için geçerli değildir.

Uyarı

Bu özellik genel önizleme aşamasındadır

Önkoşullar

CAPTCHA'yı etkinleştirme

  1. Azure portalınaoturum açın.

  2. Birden çok kiracıya erişiminiz varsa Azure AD B2C kiracınıza geçiş yapmak için Dizinler + abonelikler menüsünde, üstteki menüden Ayarlar simgesini seçin.

  3. Soldaki menüden Azure AD B2C'yi seçin. Ya da Tüm hizmetler'i seçip Azure AD B2C'yi arayıp seçin.

  4. Kullanıcı akışları'ı seçin.

  5. CAPTCHA'yı etkinleştirmek istediğiniz kullanıcı akışını seçin. Örneğin , B2C_1_signinsignup.

  6. Özellikleröğesini seçin.

  7. CAPTCHA (Önizleme)'nin altında CAPTCHA'yı etkinleştirmek için kullanılacak akışı seçin; örneğin, CAPTCHA'yı Etkinleştir - Kaydolun.

  8. Kaydetseçeneğini seçin.

Kullanıcı akışını test edin

CapTCHA'nın seçtiğiniz akış için etkinleştirildiğini test etmek ve onaylamak için Kullanıcı akışını test etme başlığı altındaki adımları kullanın. Seçtiğiniz CAPTCHA türüne (görsel veya ses) bağlı olarak gördüğünüz veya duyduğunuz karakterleri girmeniz istenmelidir.

CAPTCHA'yı özel ilkenizde etkinleştirmek için mevcut özel ilke dosyalarınızı güncelleştirmeniz gerekir. Herhangi bir özel ilke dosyanız yoksa .zip dosyasını indirin veya https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack deposundan repoyu klonlayın. Bu makalede, /Display Controls Starterpack/LocalAccounts/ klasöründeki XML dosyalarını güncelleştireceğiz.

Beyanları bildirme

Özel ilkenizde CAPTCHA'yı etkinleştirmek için daha fazla talep gerekir:

  1. VS Code'da TrustFrameworkBase.XML dosyasını açın.

  2. ClaimsSchema bölümünde, aşağıdaki kodu kullanarak talepleri bildirin:

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

Görüntüleme denetimini yapılandırma

Özel ilkeniz için CAPTCHA'yı etkinleştirmek için CAPTCHA görüntüleme Denetimi kullanırsınız. CAPTCHA görüntüleme denetimi CAPTCHA görüntüsünü oluşturur ve işler.

TrustFrameworkBase.XML dosyasında öğesini bulun DisplayControls ve aşağıdaki görüntü denetimini alt öğe olarak ekleyin. Henüz DisplayControls öğeniz yoksa bir öğe ekleyin.

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

Bir CAPTCHA teknik profili yapılandırın

Azure AD B2C CAPTCHA teknik profili CAPTCHA sınamasını doğrular. Bu teknik profil bir CAPTCHA kodu oluşturabilir veya nasıl yapılandırdığınıza bağlı olarak doğrulayabilir.

TrustFrameworkBase.XML dosyasında öğesini bulun ClaimsProviders ve aşağıdaki kodu kullanarak talep sağlayıcısını ekleyin:

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

GetChallenge işlemiyle yapılandırdığınız CAPTCHA teknik profili CAPTCHA sınama dizesini oluşturur ve görüntüler. VerifyChallenge ile yapılandırdığınız CAPTCHA teknik profili, kullanıcının giriş yaptığı sınama dizesini doğrular.

İçerik tanımının sayfa düzenlerini güncelleştirme

Çeşitli sayfa düzenleri için aşağıdaki sayfa düzeni sürümlerini kullanın:

Sayfa düzeni Sayfa düzeni sürüm aralığı
Kendi kendini ilan eden >=2.1.33
Unifiedssp >=2.1.21
Çok faktörlü >=1.2.19

Örnek:

TrustFrameworkBase.XML dosyasında, öğesinin ContentDefinitions altında Id="api.localaccountsignup" ile bir içerik tanımı bulun, ardından datauri'sini aşağıdaki kodda gösterildiği gibi güncelleştirir:

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

Sayfa düzeni sürümünü kendimiz belirleyip 2.1.27 olarak ayarlıyoruz.

Teknik profillerinizi ve görüntüleme denetimlerinizi yapılandırdıktan sonra, CAPTCHA'yı etkinleştirmek istediğiniz akışı belirtebilirsiniz.

CapTCHA'yı kaydolma veya oturum açma akışı için etkinleştirme

Kayıt veya oturum açma akışınızda CAPTCHA'yı etkinleştirmek için aşağıdaki adımları kullanın:

  1. Kaydolma veya oturum açma deneyiminizi görüntüleyen kendinden onaylanan teknik profili belirlemek için, SignUpOrSignIn gibi kaydolma ve oturum açma kullanıcı yolculuğunuzu inceleyin.

  2. LocalAccountSignUpWithLogonEmail gibi teknik profilde, aşağıdaki kodda gösterildiği gibi bir meta veri anahtarı ve bir görüntüleme talep girdisi ekleyin:

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

Görüntüleme talebi girdisi, daha önce yapılandırdığınız görüntüleme denetimine başvurur.

MFA akışında CAPTCHA'yı etkinleştirme

MFA akışında CAPTCHA'yı etkinleştirmek için iki teknik profilde, yani kendi kendine onaylanan teknik profilde ve telefon faktörü teknik profilinde bir güncelleştirme yapmanız gerekir:

  1. Kaydolma veya oturum açma akışınızdan sorumlu olan kendinden onaylanan teknik profili ve telefon faktörü teknik profillerini tanımlamak için SignUpOrSignIn gibi kaydolma kullanıcı yolculuğunuzu inceleyin.

  2. Her iki teknik profilde de aşağıdaki kodda gösterildiği gibi bir meta veri anahtarı ve bir görüntüleme talebi girişi ekleyin:

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

CAPTCHA özellik bayrağını etkinleştirme

Kayıt, oturum açma veya MFA sırasında CAPTCHA'yı zorunlu kılmak için, her senaryo için özellik bayrağını etkinleştiren bir teknik profil eklemeniz ve ardından kullanıcı yolculuğunda teknik profili çağırmanız gerekir.

  1. TrustFrameworkBase.XML dosyasında öğesini bulun ClaimsProviders ve aşağıdaki kodu kullanarak talep sağlayıcısını ekleyin:
<!--<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. CAPTCHA senaryosuna bağlı olarak true veya false olarak ayarlayın DefaultValue

  2. Özellik bayrakları teknik profilini kullanıcı yolculuğuna ekleyin ve düzenleme adımlarının geri kalanının sırasını güncelleştirin.

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

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

Özel ilke dosyalarını karşıya yükleyin

Özel ilke dosyalarınızı karşıya yüklemek için İlkeleri karşıya yükleme bölümündeki adımları kullanın.

Özel ilkeyi test edin

CapTCHA'nın seçtiğiniz akış için etkinleştirildiğini test etmek ve onaylamak için Özel ilkeyi test etme başlığı altındaki adımları kullanın. Seçtiğiniz CAPTCHA türüne, görseline veya sesine bağlı olarak gördüğünüz veya duyduğunuz karakterleri girmeniz istenmelidir.

Uyarı

  • Yalnızca kaydolma kullanıcı akışında MFA adımına CAPTCHA ekleyemezsiniz.
  • MFA akışında CAPTCHA, seçtiğiniz MFA yönteminin SMS veya telefon araması, yalnızca SMS veya yalnızca telefon araması olduğu durumlarda geçerlidir.