Руководство по настройке BioCatch с помощью Azure Active Directory B2C

Это важно

Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".

Узнайте, как интегрировать проверку подлинности Azure Active Directory B2C (Azure AD B2C) с технологией BioCatch, чтобы расширить состояние безопасности управления удостоверениями клиентов и доступом (CIAM). Продукты BioCatch анализируют физическое и когнитивное цифровое поведение пользователей для аналитических сведений, которые помогают отличить законных клиентов.

Перейдите на biocatch.com, чтобы узнать больше о BioCatch

Предпосылки

Чтобы начать, вам нужно:

Описание сценария

Интеграция BioCatch включает следующие компоненты:

  • Веб-приложение или веб-служба — пользователи переходят на эту веб-службу, которая создает уникальный идентификатор сеанса клиента, отправляемый в BioCatch.
    • Идентификатор сеанса передает характеристики поведения пользователя в BioCatch
  • Метод — отправляет идентификатор сеанса в Azure AD B2C. В примере JavaScript вводит значение в скрытое поле HTML.
  • Настраиваемый пользовательский интерфейс Azure AD B2C — скрывает поле HTML для ввода идентификатора сеанса из JavaScript
  • Настраиваемая политика Azure AD B2C:
    • Принимает идентификатор сеанса в качестве утверждения через самоутверждаемый технический профиль
    • Интегрируется с BioCatch через поставщика утверждений REST API и передает идентификатор сеанса в BioCatch
    • Несколько пользовательских утверждений, возвращаемых из BioCatch для пользовательской логики политики
    • Пользовательский сценарий оценивает возвратное требование и выполняет условное действие, такое как многофакторная аутентификация.

Подробнее:

На следующей схеме показаны потоки пользователей с сведениями о сеансе.

Схема потоков пользователей с сведениями о сеансе.

  1. Пользователь переходит к веб-службе, которая возвращает значения HTML, CSS или JavaScript, а затем загружает BioCatch JavaScript SDK. JavaScript на стороне клиента настраивает идентификатор сеанса клиента для пакета SDK BioCatch. Кроме того, веб-служба предварительно настраивает идентификатор сеанса клиента и отправляет его клиенту. Вы можете настроить инициализированный BioCatch JavaScript SDK, который отправляет данные о поведении пользователя в BioCatch с клиентского устройства, используя идентификатор сеанса клиента.
  2. Пользователь регистрируется или входит в систему и перенаправляется в Azure AD B2C.
  3. Путь пользователя включает самозаявленного поставщика утверждений, который вводит идентификатор сеанса клиента. Это поле скрыто. Используйте JavaScript для ввода идентификатора сеанса в поле. Нажмите кнопку "Далее", чтобы продолжить регистрацию или вход. Идентификатор сеанса отправляется в BioCatch для оценки уровня риска. BioCatch возвращает сведения о сеансе и рекомендует разрешить или блокировать. Путешествие пользователя имеет условный контроль, который действует по возвращенным утверждениям.
  4. В зависимости от результата условной проверки вызывается действие.
  5. Веб-служба может использовать идентификатор сеанса для обращения к API BioCatch, чтобы определить информацию о рисках и сеансах.

Начало работы с BioCatch

Перейдите на страницу biocatch.com свяжитесь с нами , чтобы инициировать учетную запись.

Настройка пользовательского интерфейса

Мы рекомендуем скрыть поле идентификатора сеанса клиента с помощью CSS, JavaScript или другого метода. Для тестирования отобразите поле. Например, JavaScript скрывает поле ввода следующим образом:

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

Настройка политик Azure AD B2C Identity Experience Framework

  1. Сведения о начале работы см. в руководстве по созданию потоков пользователей и пользовательских политик в Azure AD B2C.

  2. Создайте новый файл, наследующий от файла расширений.

    <BasePolicy> 
    
        <TenantId>tenant.onmicrosoft.com</TenantId> 
    
        <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> 
    
      </BasePolicy> 
    
  3. Создайте ссылку на пользовательский интерфейс, чтобы скрыть поле ввода в ресурсе 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. Настройте самозаверяющегося поставщика утверждений для поля идентификатора сеанса клиента.

    <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. Настройте поставщик утверждений REST API для BioCatch.

    <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-адрес, идентификатор клиента и уникальный идентификатор пользователя (UUID). Утверждение SessionID клиента передается в качестве параметра строки запроса в BioCatch. Можно выбрать тип действия, например MAKE_PAYMENT.

  7. Настройте путешествие пользователя с помощью следующего примера:

    • Получите clientSessionID в качестве утверждения.
    • Вызов API BioCatch для получения сведений о сеансе.
    • Если возвращаемый риск утверждения низкий, пропустите шаг для 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» и «score».

    <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 как минимум администратор политики IEF B2C клиента Azure AD B2C.
  2. На панели инструментов портала выберите каталоги и подписки.
  3. На странице "Параметры портала" "Каталоги и подписки " в списке имен каталога найдите каталог Azure AD B2C.
  4. Выберите Переключиться.
  5. В левом верхнем углу портала Azure выберите все службы.
  6. Найдите и выберите Azure AD B2C.
  7. Перейдите в Azure AD B2C>Identity Experience Framework.
  8. Отправьте файлы политики в клиент.

Тестирование решения

Следующие инструкции см. в руководстве. Регистрация веб-приложения в Azure Active Directory B2C

  1. Зарегистрируйте фиктивное приложение, которое перенаправляется на JWT.MS.

  2. В разделе Identity Experience Framework выберите созданную политику.

  3. В окне политики выберите фиктивное приложение JWT.MS

  4. Выберите запуск сейчас.

  5. Выполните порядок регистрации и создайте учетную запись.

  6. Маркер, возвращаемый в JWT.MS, имеет два заявления для уровня риска и оценки.

  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]  
    
    

Дополнительные ресурсы