다음을 통해 공유


Azure Active Directory B2C 사용자 지정 정책에서 CAPTCHA 기술 프로필 정의

참고 항목

Azure Active Directory B2C에서 사용자 지정 정책은 주로 복잡한 시나리오를 해결하기 위해 설계되었습니다. 대부분의 시나리오에서 기본 제공 사용자 흐름을 사용하는 것이 좋습니다. 아직 수행하지 않았다면 Active Directory B2C에서 사용자 지정 정책 시작하기에서 사용자 지정 정책 스타터 팩에 대해 알아봅니다.

완전히 자동화된 공용 튜링 테스트를 통해 CAPTCHA(Computer and Human Apart) 기술 프로필을 통해 Azure AD B2C(Azure Active Directory B2C)에서 자동화된 공격을 방지할 수 있습니다. Azure AD B2C의 CAPTCHA 기술 프로필은 오디오 및 시각적 CAPTCHA 챌린지 유형을 모두 지원합니다.

프로토콜

Protocol 요소의 Name 특성을 .로 설정Proprietary해야 합니다. 처리기 특성은 CAPTCHA에 대해 Azure AD B2C에서 사용하는 프로토콜 처리기 어셈블리의 정규화된 이름을 포함해야 합니다.Web.TPEngine.Providers.CaptchaProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

참고 항목

이 기능은 공개 미리 보기로 제공됩니다.

다음 예제에서는 전자 메일 등록을 위한 자체 어설션된 기술 프로필을 보여 있습니다.

<TechnicalProfile Id="HIP-GetChallenge">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.CaptchaProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

CAPTCHA 기술 프로필 작업

CAPTCHA 기술 프로필 작업에는 다음 두 가지 작업이 있습니다.

  • Get challenge 작업은 CAPTCHA 코드 문자열을 생성한 다음 CAPTCHA 표시 컨트롤사용하여 사용자 인터페이스에 표시합니다. 표시에는 입력 텍스트 상자가 포함됩니다. 이 작업은 사용자가 보거나 듣는 문자를 입력 텍스트 상자에 입력하도록 지시합니다. 사용자는 필요에 따라 시각적 개체와 오디오 챌린지 유형 간에 전환할 수 있습니다.

  • 코드 작업이 사용자가 입력한 문자를 확인하는지 확인합니다.

도전하기

첫 번째 작업은 CAPTCHA 코드 문자열을 생성한 다음 사용자 인터페이스에 표시합니다.

입력 클레임

InputClaims 요소에는 Azure AD B2C의 CAPTCHA 서비스로 보낼 클레임 목록이 포함되어 있습니다.

ClaimReferenceId Required 설명
challengeType 아니요 CAPTCHA 챌린지 유형, 오디오 또는 시각적 개체(기본값)입니다.
azureregion CAPTCHA 챌린지 요청을 제공하는 서비스 지역입니다.

표시 클레임

DisplayClaims 요소에는 사용자가 볼 수 있도록 화면에 표시할 클레임 목록이 포함되어 있습니다. 예를 들어 사용자에게 읽을 CAPTCHA 챌린지 코드가 표시됩니다.

ClaimReferenceId Required 설명
challengeString CAPTCHA 챌린지 코드입니다.

출력 클레임

OutputClaims 요소에는 CAPTCHA 기술 프로필에서 반환된 클레임 목록이 포함됩니다.

ClaimReferenceId Required 설명
challengeId CAPTCHA 챌린지 코드의 고유 식별자입니다.
challengeString CAPTCHA 챌린지 코드입니다.
azureregion CAPTCHA 챌린지 요청을 제공하는 서비스 지역입니다.

메타데이터

Attribute Required 설명
연산 값은 GetChallenge여야 합니다.
브랜드 값은 HIP여야 합니다.

예: CAPTCHA 코드 생성

다음 예제에서는 코드를 생성하는 데 사용하는 CAPTCHA 기술 프로필을 보여줍니다.

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

챌린지 확인

두 번째 작업은 CAPTCHA 챌린지를 확인합니다.

입력 클레임

InputClaims 요소에는 Azure AD B2C의 CAPTCHA 서비스로 보낼 클레임 목록이 포함되어 있습니다.

ClaimReferenceId Required 설명
challengeType 아니요 CAPTCHA 챌린지 유형, 오디오 또는 시각적 개체(기본값)입니다.
challengeId 세션 확인에 사용되는 CAPTCHA의 고유 식별자입니다. GetChallenge 호출에서 채워집니다 .
captchaEntered 사용자가 사용자 인터페이스의 챌린지 텍스트 상자에 입력하는 챌린지 코드입니다.
azureregion CAPTCHA 챌린지 요청을 제공하는 서비스 지역입니다. GetChallenge 호출에서 채워집니다 .

표시 클레임

DisplayClaims 요소에는 사용자로부터 입력을 수집하기 위해 화면에 표시할 클레임 목록이 포함되어 있습니다.

ClaimReferenceId Required 설명
captchaEntered 사용자가 입력한 CAPTCHA 챌린지 코드입니다.

출력 클레임

OutputClaims 요소에는 captcha 기술 프로필에서 반환된 클레임 목록이 포함됩니다.

ClaimReferenceId Required 설명
challengeId 세션 확인에 사용되는 CAPTCHA의 고유 식별자입니다.
isCaptchaSolved CAPTCHA 챌린지가 성공적으로 해결되었는지 여부를 나타내는 플래그입니다.
reason 챌린지를 해결하려는 시도가 성공했는지 여부를 사용자에게 전달하는 데 사용됩니다.

메타데이터

Attribute Required 설명
연산 값은 VerifyChallenge여야 합니다.
브랜드 값은 HIP여야 합니다.

예: CAPTCHA 코드 확인

다음 예제에서는 CAPTCHA 코드를 확인하는 데 사용하는 CAPTCHA 기술 프로필을 보여줍니다.

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

다음 단계