Настройка маркеров в Azure Active Directory B2C

Это важно

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

Прежде чем начать, используйте селектор типа политики в верхней части этой страницы, чтобы выбрать тип политики, которую вы настроите. Azure Active Directory B2C предлагает два метода определения способа взаимодействия пользователей с вашими приложениями: с помощью предопределенных потоков пользователей или полностью настраиваемых пользовательских политик. Действия, которые необходимо выполнить, отличаются для каждого метода.

В этой статье вы узнаете, как настроить время существования и совместимость маркера в Azure Active Directory B2C (Azure AD B2C).

Предпосылки

Поведение срока действия токена

Вы можете настроить время жизни токена, в том числе:

  • Время существования маркера доступа и идентификатора (минуты) — время существования маркера носителя OAuth 2.0 и маркеров идентификатора. Значение по умолчанию — 60 минут (1 час). Минимальное (включительно) — 5 минут. Максимальное значение (включительно) составляет 1440 минут (24 часа).
  • Время существования маркера обновления (дней) — максимальный период времени, в течение которого маркер обновления можно использовать для получения нового маркера доступа, если для вашего приложения была предоставлена область доступа offline_access. Значение по умолчанию — 14 дней. Минимальное (включительно) — один день. Максимальное (включительно) 90 дней.
  • Срок действия скользящего окна для маркера обновления — тип скользящего окна для маркера обновления. Boundedуказывает, что маркер обновления может быть расширен, как указанно в длительности срока службы (дней). No expiry указывает, что срок действия скользящего окна обновления никогда не истекает.
  • Продолжительность существования (дней) — после этого периода времени пользователь вынужден повторно пройти проверку подлинности независимо от срока действия последнего маркера обновления, полученного приложением. Значение должно быть больше или равно значению времени существования маркера обновления .

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

Время существования маркера обновления

Примечание.

Одностраничные приложения, использующие поток кода авторизации с PKCE, всегда имеют время существования маркера обновления в течение 24 часов, в то время как мобильные приложения, классические приложения и веб-приложения не имеют этого ограничения. Дополнительные сведения о последствиях безопасности маркеров обновления в браузере.

Настройка времени существования токена

Чтобы настроить время существования токена потока пользователей, выполните приведенные действия.

  1. Войдите на портал Azure.
  2. Если у вас есть доступ к нескольким клиентам, щелкните значок Настройки в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню Каталоги и подписки.
  3. Выберите все службы в левом верхнем углу портала Azure, а затем найдите и выберите Azure AD B2C.
  4. Выберите потоки пользователей (политики).
  5. Откройте ранее созданный поток пользователя.
  6. Выберите Свойства.
  7. В разделе "Время существования маркера" настройте свойства в соответствии с потребностями приложения.
  8. Выберите Сохранить.

настройте маркеры потоков пользователей на портале Azure.

Чтобы изменить параметры совместимости маркеров, задайте метаданные технического профиля издателя маркеров в расширении или в файле доверенной стороны той политики, которую вы хотите изменить. Технический профиль издателя токенов выглядит следующим образом:

<ClaimsProviders>
  <ClaimsProvider>
    <DisplayName>Token Issuer</DisplayName>
    <TechnicalProfiles>
      <TechnicalProfile Id="JwtIssuer">
        <Metadata>
          <Item Key="token_lifetime_secs">3600</Item>
          <Item Key="id_token_lifetime_secs">3600</Item>
          <Item Key="refresh_token_lifetime_secs">1209600</Item>
          <Item Key="rolling_refresh_token_lifetime_secs">7776000</Item>
          <!--<Item Key="allow_infinite_rolling_refresh_token">true</Item>-->
          <Item Key="IssuanceClaimPattern">AuthorityAndTenantGuid</Item>
          <Item Key="AuthenticationContextReferenceClaimPattern">None</Item>
        </Metadata>
      </TechnicalProfile>
    </TechnicalProfiles>
  </ClaimsProvider>
</ClaimsProviders>

Следующие значения задаются в предыдущем примере:

  • token_lifetime_secs — время существования маркера доступа (в секундах). Значение по умолчанию — 3600 (1 час). Минимальное значение — 300 (5 минут). Максимальное значение — 86 400 (24 часа).
  • id_token_lifetime_secs — время существования маркера идентификатора (в секундах). Значение по умолчанию — 3600 (1 час). Минимальное значение — 300 (5 минут). Максимальное значение — 86 400 (24 часа).
  • refresh_token_lifetime_secs Период действия маркера обновления (в секундах). Значение по умолчанию — 1209 600 (14 дней). Минимальное значение — 86 400 (24 часа). Максимальное значение составляет 7776 000 (90 дней).
  • rolling_refresh_token_lifetime_secs — время существования скользящего окна обновления токена (в секундах). Значение по умолчанию — 776 000 (90 дней). Минимальное значение — 86 400 (24 часа). Максимальное значение — 31 536 000 (365 дней). Если вы не хотите принудительно применять время существования скользящего окна, установите значение для allow_infinite_rolling_refresh_token на true.
  • allow_infinite_rolling_refresh_token — срок действия скользящего окна обновления токена никогда не истекает.

Параметры совместимости токенов

Вы можете настроить совместимость токенов, в том числе:

  • Утверждение издателя (iss) — формат для токенов доступа и идентификационных токенов.
  • Предмет утверждения (sub) — основной элемент, о котором токен предоставляет информацию, например, пользователь приложения. Это значение является неизменяемым и не может быть переназначено или повторно использовано. Его можно использовать для безопасного выполнения проверок авторизации, например, когда маркер используется для доступа к ресурсу. По умолчанию утверждение о субъекте заполняется идентификатором объекта пользователя в каталоге.
  • Утверждение, представляющее поток пользователя . Это утверждение определяет поток пользователя, который был выполнен. Возможные значения: tfp (по умолчанию) или acr.

Чтобы настроить параметры совместимости потока пользователей, выполните следующие действия.

  1. Выберите потоки пользователей (политики).
  2. Откройте ранее созданный поток пользователя.
  3. Выберите Свойства.
  4. В разделе "Параметры совместимости маркеров" настройте свойства в соответствии с потребностями приложения.
  5. Выберите Сохранить.

Чтобы изменить параметры совместимости токенов, задайте метаданные технического профиля издателя токенов в расширении или в файле доверяющей стороны для политики, которую вы хотите обновить. Технический профиль издателя токенов выглядит следующим образом:

<ClaimsProviders>
  <ClaimsProvider>
    <DisplayName>Token Issuer</DisplayName>
    <TechnicalProfiles>
      <TechnicalProfile Id="JwtIssuer">
        <Metadata>
          ...
          <Item Key="IssuanceClaimPattern">AuthorityAndTenantGuid</Item>
          <Item Key="AuthenticationContextReferenceClaimPattern">None</Item>
        </Metadata>
      </TechnicalProfile>
    </TechnicalProfiles>
  </ClaimsProvider>
</ClaimsProviders>
  • Утверждение издателя (iss) — утверждение издателя (iss) устанавливается с элементом метаданных IssueClaimPattern . Применимые значения: AuthorityAndTenantGuid и AuthorityWithTfp.

  • TFP — рекомендуемое значение. Задайте AuthenticationContextReferenceClaimPattern со значением None.

    Добавьте этот элемент в элемент ClaimsSchema :

    <ClaimType Id="trustFrameworkPolicy">
      <DisplayName>Trust framework policy name</DisplayName>
      <DataType>string</DataType>
    </ClaimType>
    

    В политике проверяющей стороны в элементе OutputClaims добавьте следующее выходное утверждение:

    <OutputClaim ClaimTypeReferenceId="trustFrameworkPolicy" Required="true" DefaultValue="{policy}" PartnerClaimType="tfp" />
    

    Для ACR удалите элемент AuthenticationContextReferenceClaimPattern .

  • Утверждение subject (sub) — этот параметр по умолчанию устанавливается как ObjectID. Если вы хотите изменить этот параметр Not Supported, замените эту строку.

    <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
    

    с этой строкой:

    <OutputClaim ClaimTypeReferenceId="sub" />
    

Предоставление дополнительных утверждений приложению

Утверждения приложения — это значения, возвращаемые приложению. Обновите пользовательский поток, чтобы он содержал желаемые утверждения.

  1. Выберите потоки пользователей (политики).
  2. Откройте ранее созданный поток пользователя.
  3. Выберите запросы приложения.
  4. Выберите утверждения и атрибуты, которые необходимо отправить обратно в приложение.
  5. Выберите Сохранить.

Утверждения технического профиля политики проверяющей стороны — это значения, возвращаемые приложению. Добавление выходных утверждений выдаст утверждения в токен после успешного пользовательского пути и они будут отправлены приложению. Измените элемент технического профиля в разделе проверяющей стороны, чтобы добавить требуемые утверждения в качестве выходного утверждения.

  1. Откройте файл настраиваемой политики. Например, SignUpOrSignin.xml.
  2. Найдите элемент OutputClaims. Добавьте тот OutputClaim, который вы хотите включить в токен.
  3. Задайте атрибуты выходных утверждений.

В следующем примере добавляется accountBalance утверждение. Запрос на accountBalance передается приложению как баланс.

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <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="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      <!--Add the optional claims here-->
      <OutputClaim ClaimTypeReferenceId="accountBalance" DefaultValue="" PartnerClaimType="balance" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Элемент OutputClaim содержит следующие атрибуты:

  • ClaimTypeReferenceId — идентификатор типа утверждения, уже определенного в разделе ClaimsSchema в файле политики или родительском файле политики.
  • PartnerClaimType — позволяет изменить название претензии в токене.
  • DefaultValue — значение по умолчанию. Можно также задать значение по умолчанию для сопоставителя утверждений, например идентификатор арендатора.
  • AlwaysUseDefaultValue — принудительное использование значения по умолчанию.

Время существования кода авторизации

При использовании потока кода авторизации OAuth 2.0 приложение может использовать код авторизации для запроса токена доступа для целевого ресурса. Коды авторизации являются короткими сроками действия, срок действия которых истекает примерно через 10 минут. Не удается настроить время существования кода авторизации. Убедитесь, что приложение активирует коды авторизации в течение 10 минут.