다음을 통해 공유


자습서: Azure Active Directory B2C를 사용하여 BioCatch 구성

중요합니다

2025년 5월 1일부터 새 고객을 위해 Azure AD B2C를 더 이상 구매할 수 없습니다. FAQ에서 자세히 알아보세요.

Azure AD B2C(Azure Active Directory B2C) 인증을 BioCatch 기술과 통합하여 CIAM(고객 ID 및 액세스 관리) 보안 태세를 강화하는 방법을 알아봅니다. BioCatch 제품은 합법적인 고객을 구분하는 데 도움이 되는 인사이트를 위해 사용자의 물리적 및 인지적 디지털 동작을 분석합니다.

biocatch.com 이동하여 자세한 BioCatch 알아보기

필수 조건

시작하려면 다음이 필요합니다.

시나리오 설명

BioCatch 통합에는 다음 구성 요소가 포함됩니다.

  • 웹앱 또는 웹 서비스 - 사용자가 BioCatch로 가는 고유한 클라이언트 세션 ID를 인스턴스화하는 이 웹 서비스로 이동합니다.
    • 세션 ID는 사용자 동작 특성을 BioCatch로 전송합니다.
  • 메서드 - 세션 ID를 Azure AD B2C로 보냅니다. 이 예제에서 JavaScript는 숨겨진 HTML 필드에 값을 입력합니다.
  • Azure AD B2C 사용자 지정 UI - JavaScript에서 세션 ID 입력에 대한 HTML 필드를 숨깁니다.
  • Azure AD B2C 사용자 지정 정책:
    • 자체 어설션된 기술 프로필을 통해 세션 ID를 클레임으로 받아들입니다.
    • REST API 클레임 공급자를 통해 BioCatch와 통합되고 세션 ID를 BioCatch에 전달합니다.
    • 사용자 지정 정책 논리에 대한 여러 사용자 지정 클레임이 BioCatch에서 반환됩니다.
    • 사용자 경험은 반환된 클레임을 평가하고 다단계 인증과 같은 조건부 작업을 실행합니다.

더 알아보세요:

다음 다이어그램에서는 세션 정보가 포함된 사용자 흐름을 보여 줍니다.

세션 정보가 있는 사용자 흐름의 다이어그램.

  1. 사용자는 HTML, CSS 또는 JavaScript 값을 반환하는 웹 서비스로 이동한 다음 BioCatch JavaScript SDK를 로드합니다. 클라이언트 쪽 JavaScript는 BioCatch SDK에 대한 클라이언트 세션 ID를 구성합니다. 또는 웹 서비스가 클라이언트 세션 ID를 미리 구성하고 클라이언트에 보냅니다. 클라이언트 세션 ID를 사용하여 클라이언트 디바이스에서 BioCatch로 사용자 동작을 보내는 인스턴스화된 BioCatch JavaScript SDK for BioCatch를 구성할 수 있습니다.
  2. 사용자가 등록하거나 로그인하면 Azure AD B2C로 리디렉션됩니다.
  3. 사용자 여정에는 클라이언트 세션 ID를 입력하는 자가 주장형 클레임 제공자가 포함됩니다. 이 필드는 숨겨집니다. JavaScript를 사용하여 세션 ID를 필드에 입력합니다. 다음을 선택하여 등록 또는 로그인을 계속합니다. 세션 ID는 위험 점수를 위해 BioCatch로 이동합니다. BioCatch는 세션 정보를 반환하고 허용 또는 차단을 권장합니다. 사용자 경험에는 반환된 클레임에 따라 적용되는 조건부 검사가 있습니다.
  4. 조건부 검사 결과에 따라 작업이 호출됩니다.
  5. 웹 서비스는 세션 ID를 사용하여 BioCatch API를 쿼리하여 위험 및 세션 정보를 확인할 수 있습니다.

BioCatch 시작하기

biocatch.com 문의 페이지로 이동하여 계정을 시작합니다.

사용자 지정 UI 구성

CSS, JavaScript 또는 다른 메서드를 사용하여 클라이언트 세션 ID 필드를 숨기는 것이 좋습니다. 테스트의 경우 필드의 숨기기를 취소합니다. 예를 들어 JavaScript는 입력 필드를 다음과 같이 숨깁니다.

document.getElementById("clientSessionId").style.display = 'none';

Azure AD B2C ID 경험 프레임워크 정책 구성

  1. 시작하려면 자습서: Azure AD B2C에서 사용자 흐름 및 사용자 지정 정책 만들기를 참조하세요.

  2. 확장 파일에서 상속되는 새 파일을 만듭니다.

    <BasePolicy> 
    
        <TenantId>tenant.onmicrosoft.com</TenantId> 
    
        <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> 
    
      </BasePolicy> 
    
  3. 사용자 지정 UI에 대한 참조를 만들어 BuildingBlocks 리소스 아래에 입력 상자를 숨깁니다.

    <ContentDefinitions> 
    
        <ContentDefinition Id="api.selfasserted"> 
    
            <LoadUri>https://domain.com/path/to/selfAsserted.cshtml</LoadUri> 
    
            <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.0</DataUri> 
    
          </ContentDefinition> 
    
        </ContentDefinitions>
    
  4. BuildingBlocks 리소스 아래에 다음 클레임을 추가합니다.

    <ClaimsSchema> 
    
          <ClaimType Id="riskLevel"> 
    
            <DisplayName>Session risk level</DisplayName> 
    
            <DataType>string</DataType>       
    
          </ClaimType> 
    
          <ClaimType Id="score"> 
    
            <DisplayName>Session risk score</DisplayName> 
    
            <DataType>int</DataType>       
    
          </ClaimType> 
    
          <ClaimType Id="clientSessionId"> 
    
            <DisplayName>The ID of the client session</DisplayName> 
    
            <DataType>string</DataType> 
    
            <UserInputType>TextBox</UserInputType> 
    
          </ClaimType> 
    
    </ClaimsSchema> 
    
  5. 클라이언트 세션 ID 필드에 대해 자체 어설션된 클레임 공급자를 구성합니다.

    <ClaimsProvider> 
    
          <DisplayName>Client Session ID Claims Provider</DisplayName> 
    
          <TechnicalProfiles> 
    
            <TechnicalProfile Id="login-NonInteractive-clientSessionId"> 
    
              <DisplayName>Client Session ID TP</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</Item> 
    
              </Metadata> 
    
              <CryptographicKeys> 
    
                <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> 
    
              </CryptographicKeys> 
    
            <!—Claim we created earlier --> 
    
              <OutputClaims> 
    
                <OutputClaim ClaimTypeReferenceId="clientSessionId" Required="false" DefaultValue="100"/> 
    
              </OutputClaims> 
    
            <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /> 
    
            </TechnicalProfile> 
    
          </TechnicalProfiles> 
    
        </ClaimsProvider> 
    
  6. BioCatch에 대한 REST API 클레임 공급자를 구성합니다.

    <TechnicalProfile Id="BioCatch-API-GETSCORE"> 
    
          <DisplayName>Technical profile for BioCatch API to return session information</DisplayName> 
    
          <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    
          <Metadata> 
    
            <Item Key="ServiceUrl">https://biocatch-url.com/api/v6/score?customerID=<customerid>&amp;action=getScore&amp;uuid=<uuid>&amp;customerSessionID={clientSessionId}&amp;solution=ATO&amp;activtyType=<activity_type>&amp;brand=<brand></Item>
    
            <Item Key="SendClaimsIn">Url</Item> 
    
            <Item Key="IncludeClaimResolvingInClaimsHandling">true</Item> 
    
            <!-- Set AuthenticationType to Basic or ClientCertificate in production environments --> 
    
            <Item Key="AuthenticationType">None</Item> 
    
            <!-- REMOVE the following line in production environments --> 
    
            <Item Key="AllowInsecureAuthInProduction">true</Item> 
    
          </Metadata> 
    
          <InputClaims> 
    
            <InputClaim ClaimTypeReferenceId="clientsessionId" /> 
    
          </InputClaims> 
    
          <OutputClaims> 
    
            <OutputClaim ClaimTypeReferenceId="riskLevel" /> 
    
            <OutputClaim ClaimTypeReferenceId="score" /> 
    
          </OutputClaims> 
    
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> 
    
        </TechnicalProfile> 
    
      </TechnicalProfiles>
    

    비고

    BioCatch는 URL, 고객 ID 및 고유한 UUID(사용자 ID)를 제공합니다. 고객 SessionID 클레임은 쿼리 문자열 매개 변수로 BioCatch로 전달됩니다. 활동 유형(예: MAKE_PAYMENT)을 선택할 수 있습니다.

  7. 다음 예제를 사용하여 사용자 경험을 구성합니다.

    • clientSessionID를 클레임으로 가져옵니다.
    • BioCatch API를 호출하여 세션 정보를 가져옵니다.
    • 반환된 클레임 위험이 낮은 경우 MFA에 대한 단계를 건너뛰고, 그렇지 않으면 사용자 MFA를 적용합니다.
    <OrchestrationStep Order="8" Type="ClaimsExchange"> 
    
          <ClaimsExchanges> 
    
            <ClaimsExchange Id="clientSessionIdInput" TechnicalProfileReferenceId="login-NonInteractive-clientSessionId" /> 
    
          </ClaimsExchanges> 
    
        </OrchestrationStep> 
    
        <OrchestrationStep Order="9" Type="ClaimsExchange"> 
    
          <ClaimsExchanges> 
    
            <ClaimsExchange Id="BcGetScore" TechnicalProfileReferenceId=" BioCatch-API-GETSCORE" /> 
    
          </ClaimsExchanges> 
    
        </OrchestrationStep> 
    
        <OrchestrationStep Order="10" Type="ClaimsExchange"> 
    
          <Preconditions> 
    
            <Precondition Type="ClaimEquals" ExecuteActionsIf="true"> 
    
              <Value>riskLevel</Value> 
    
              <Value>LOW</Value> 
    
              <Action>SkipThisOrchestrationStep</Action> 
    
            </Precondition> 
    
          </Preconditions> 
    
          <ClaimsExchanges> 
    
            <ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" /> 
    
          </ClaimsExchanges>
    
  8. 신뢰 당사자 구성(선택 사항). BioCatch 반환 정보를 토큰(risklevel 및 점수)의 클레임으로 애플리케이션에 전달할 수 있습니다.

    <RelyingParty> 
    
    <DefaultUserJourney ReferenceId="SignUpOrSignInMfa" /> 
    
    <UserJourneyBehaviors> 
    
      <SingleSignOn Scope="Tenant" KeepAliveInDays="30" /> 
    
      <SessionExpiryType>Absolute</SessionExpiryType> 
    
      <SessionExpiryInSeconds>1200</SessionExpiryInSeconds> 
    
      <ScriptExecution>Allow</ScriptExecution> 
    
    </UserJourneyBehaviors> 
    
    <TechnicalProfile Id="PolicyProfile"> 
    
      <DisplayName>PolicyProfile</DisplayName> 
    
      <Protocol Name="OpenIdConnect" /> 
    
      <OutputClaims> 
    
        <OutputClaim ClaimTypeReferenceId="displayName" /> 
    
        <OutputClaim ClaimTypeReferenceId="givenName" /> 
    
        <OutputClaim ClaimTypeReferenceId="surname" /> 
    
        <OutputClaim ClaimTypeReferenceId="email" /> 
    
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" /> 
    
        <OutputClaim ClaimTypeReferenceId="identityProvider" />                 
    
        <OutputClaim ClaimTypeReferenceId="riskLevel" /> 
    
        <OutputClaim ClaimTypeReferenceId="score" /> 
    
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" /> 
    
      </OutputClaims> 
    
      <SubjectNamingInfo ClaimType="sub" /> 
    
    </TechnicalProfile> 
    
    </RelyingParty>
    

Azure AD B2C와 통합

Azure AD B2C에 정책 파일을 추가합니다. 다음 지침은 Azure AD B2C 테넌트에서 디렉터리를 사용합니다.

  1. Azure AD B2C 테넌트에서 적어도 B2C IEF 정책 관리자로 Azure Portal에 로그인합니다.
  2. 포털 도구 모음에서 디렉터리 + 구독을 선택합니다.
  3. 포털 설정, 디렉터리 + 구독 페이지의 디렉터리 이름 목록에서 Azure AD B2C 디렉터리를 찾습니다.
  4. 전환을 선택합니다.
  5. Azure Portal의 왼쪽 위 모서리에서 모든 서비스를 선택합니다.
  6. Azure AD B2C를 검색하고 선택합니다.
  7. Azure AD B2C>ID 경험 프레임워크로 이동합니다.
  8. 테넌트에 정책 파일을 업로드합니다.

솔루션 테스트

다음 지침은 자습서: Azure Active Directory B2C에서 웹 애플리케이션 등록을 참조하세요.

  1. 더미 애플리케이션을 등록하여 JWT.MS로 리디렉션합니다.

  2. ID 환경 프레임워크에서 만든 정책을 선택합니다.

  3. 정책 창에서 더미 JWT.MS 애플리케이션을 선택합니다.

  4. 지금 실행을 선택합니다.

  5. 등록 흐름을 수행하고 계정을 만듭니다.

  6. JWT.MS로 반환된 토큰에는 riskLevel 및 점수에 대한 2배 클레임이 있습니다.

  7. 다음 예제를 사용합니다.

    { 
    
      "typ": "JWT", 
    
      "alg": "RS256", 
    
      "kid": "_keyid" 
    
    }.{ 
    
      "exp": 1615872580, 
    
      "nbf": 1615868980, 
    
      "ver": "1.0", 
    
      "iss": "https://tenant.b2clogin.com/12345678-1234-1234-1234-123456789012/v2.0/", 
    
      "sub": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", 
    
      "aud": "00001111-aaaa-2222-bbbb-3333cccc4444", 
    
      "acr": "b2c_1a_signup_signin_biocatch_policy", 
    
      "nonce": "defaultNonce", 
    
      "iat": 1615868980, 
    
      "auth_time": 1615868980, 
    
      "name": "John Smith", 
    
      "email": "john.smith@contoso.com", 
    
      "given_name": "John", 
    
      "family_name": "Smith", 
    
      "riskLevel": "LOW", 
    
      "score": 275, 
    
      "tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff" 
    
    }.[Signature]  
    
    

추가 리소스