Настройка маркеров в Azure Active Directory B2C
Для начала с помощью селектора Choose a policy type (Выбрать тип политики) выберите тип пользовательской политики. Azure Active Directory B2C предлагает два метода определения способа взаимодействия пользователей с вашими приложениями: с помощью предопределенных потоков пользователей или полностью настраиваемых пользовательских политик. Действия, которые необходимо выполнить, отличаются для каждого метода.
Из этой статьи вы узнаете, как настроить время существования и параметры совместимости маркера в Azure Active Directory B2C (Azure AD B2C).
Необходимые компоненты
- Создайте поток пользователя, чтобы пользователи могли зарегистрироваться и входить в ваше приложение.
- Зарегистрируйте веб-приложение.
- Выполните шаги, описанные в статье Начало работы с настраиваемыми политиками в Azure Active Directory B2C.
- Зарегистрируйте веб-приложение.
Поведение времени существования маркера
Время существования маркера можно настроить, включая:
- Время существования маркера доступа и маркера идентификатора (в минутах). Время существования маркера носителя OAuth 2.0 и маркеров идентификаторов. Значение по умолчанию — 60 минут (1 час). Минимальное значение — 5 минут (включительно). Максимальное значение — 1440 минут (24 часа) (включительно).
- Время существования маркера обновления (в днях). Максимальный период времени, до наступления которого маркер обновления может использоваться для получения нового маркера доступа, если приложению была предоставлена область
offline_access
. По умолчанию — 14 дней. Минимальное значение — один день (включительно). Максимум (включительно) — 90 дней. - Время существования скользящего окна маркера обновления. Тип скользящего окна маркера обновления.
Bounded
указывает, что маркер обновления можно расширить, как указано в параметре Продолжительность времени существования (в днях).No expiry
указывает, время существования скользящего окна маркера обновления будет неограниченно. - Продолжительность времени существования (в днях). По истечении этого периода пользователю будет необходимо пройти проверку подлинности повторно вне зависимости от срока действия последнего токена обновления, полученного приложением. Значение должно быть больше или равно значению Времени существования маркера обновления.
На следующей диаграмме показано поведение скользящего окна маркера обновления.
Примечание.
Одностраничные приложения, использующие поток кода авторизации с PKCE, всегда имеют время существования маркера обновления, равное 24 часам, тогда как мобильные приложения, классические приложения и веб-приложения не сталкиваются с этим ограничением. Узнайте больше о влиянии маркеров обновления на безопасность в браузере.
Настройка времени существования маркеров
Для настройки времени существования маркера потока пользователя:
- Войдите на портал Azure.
- Если у вас есть доступ к нескольким клиентам, выберите значок Параметры в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню каталогов и подписок.
- Выберите Все службы в левом верхнем углу окна портала Azure, а затем найдите и выберите Azure AD B2C.
- Выберите Потоки пользователей (политики).
- Откройте созданный ранее пользовательский поток.
- Выберите Свойства.
- В разделе Срок действия маркера настройте свойства в соответствии с потребностями приложения.
- Выберите Сохранить.
Чтобы изменить параметры совместимости маркеров, необходимо задать метаданные технического профиля Издатель маркера в расширении или файл проверяющей стороны политики, на которую вы хотите повлиять. Технический профиль издателя маркера выглядит следующим образом:
<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
.
Чтобы настроить параметры совместимости потока пользователя:
- Выберите Потоки пользователей (политики).
- Откройте созданный ранее пользовательский поток.
- Выберите Свойства.
- В разделе Параметры совместимости токенов настройте свойства в соответствии с потребностями приложения.
- Выберите Сохранить.
Чтобы изменить параметры совместимости маркеров, задайте метаданные технического профиля издателя маркеров в расширении или файл проверяющей стороны политики, которую вы хотите обновить. Технический профиль издателя маркера выглядит следующим образом:
<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" />
Предоставление дополнительных утверждений для приложения
Утверждения приложения — это значения, возвращаемые приложению. Обновите поток пользователя, чтобы он содержал нужные утверждения.
- Выберите Потоки пользователей (политики).
- Откройте созданный ранее пользовательский поток.
- Выберите элемент Утверждения приложения.
- Выберите утверждения и атрибуты, которые необходимо отправить обратно в приложение.
- Выберите Сохранить.
В качестве выходных данных Технического профиля политики проверяющей стороны используются значения, возвращаемые в приложение. При добавлении выходного утверждения утверждение включается в токен после успешного пути взаимодействия пользователя и будет отправлено в приложение. Измените элемент технического профиля в разделе проверяющей стороны, чтобы добавить желаемые утверждения в качестве исходящего утверждения.
- Откройте файл настраиваемой политики. Например, SignUpOrSignin.xml.
- Найдите элемент OutputClaims. Добавьте OutputClaim, который хотите включить в маркер.
- Задайте атрибуты исходящего утверждения.
В следующем примере добавляется атрибут 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 минут.
Следующие шаги
- Изучите информацию о том, как запросить маркеры доступа.
- Узнайте, как создать устойчивость с помощью рекомендаций разработчика.