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

Для начала с помощью селектора Choose a policy type (Выбрать тип политики) выберите тип пользовательской политики. 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 указывает, время существования скользящего окна маркера обновления будет неограниченно.
  • Продолжительность времени существования (в днях). По истечении этого периода пользователю будет необходимо пройти проверку подлинности повторно вне зависимости от срока действия последнего токена обновления, полученного приложением. Значение должно быть больше или равно значению Времени существования маркера обновления.

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

Refresh token lifetime

Примечание.

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

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

Для настройки времени существования маркера потока пользователя:

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

configure user flows tokens in Azure portal.

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

<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 часа). Максимально допустимое значение — 7 776 000 (90 дней).
  • rolling_refresh_token_lifetime_secs — время существования скользящего окна маркера обновления (в секундах). По умолчанию — 7 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) устанавливается с помощью элемента метаданных IssuanceClaimPattern. Применимые значения — AuthorityAndTenantGuid и AuthorityWithTfp.

  • Утверждение настройки, представляющее идентификатор политики. Параметры, использующиеся для настройки этого значения, — TFP (инфраструктура доверия) и ACR (ссылка на контекст проверки подлинности). TFP является рекомендуемым значением. Установите значение None для AuthenticationContextReferenceClaimPattern.

    В элемент 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.

  • Утверждение субъекта (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 минут.

Следующие шаги