Необязательный справочник по утверждениям
Вы можете использовать необязательные утверждения для:
- Выберите утверждения для включения в маркеры для приложения.
- Измените поведение определенных утверждений, возвращаемых платформой удостоверений Майкрософт в токенах.
- Добавление и доступ к пользовательским утверждениям для приложения.
Хотя необязательные утверждения поддерживаются как в маркерах формата версии 1.0, так и в токенах формата 2.0, они предоставляют большую часть их значений при переходе от версии 1.0 до версии 2.0. На платформе удостоверений Майкрософт небольшие размеры маркеров используются для обеспечения оптимальной производительности клиентами. В результате несколько утверждений, ранее включенных в маркеры доступа и идентификатора, больше не присутствуют в токенах версии 2.0 и должны быть запрашиваться специально на основе каждого приложения.
Тип учетной записи | Токены версии 1.0 | Токены версии 2.0 |
---|---|---|
Личная учетная запись Майкрософт | N/A | Поддержанный |
Учетная запись Microsoft Entra | Поддержанный | Поддержанный |
набор необязательных утверждений версии 1.0 и версии 2.0
Набор необязательных утверждений, доступных по умолчанию для используемых приложений, приведен в следующей таблице. Пользовательские данные в атрибутах расширения и расширениях каталогов можно использовать для добавления необязательных утверждений для приложения. При добавлении утверждений в маркер доступа утверждения применяются к маркерам доступа, запрошенным для приложения (веб-API), а не утверждения, запрашиваемые , приложением. Независимо от того, как клиент обращается к API, правильные данные присутствуют в маркере доступа, который используется для проверки подлинности в API.
Заметка
Большинство этих утверждений можно включить в JWTs для токенов версии 1.0 и версии 2.0, но не токенов SAML, за исключением того, где указано в столбце "Тип токена". Учетные записи потребителей поддерживают подмножество этих утверждений, помеченное в столбце "Тип пользователя". Многие утверждения, перечисленные в списке, не применяются к пользователям-потребителям (у них нет клиента, поэтому tenant_ctry
не имеет значения).
В следующей таблице перечислены наборы необязательных утверждений версии 1.0 и версии 2.0.
Имя | Описание | Тип токена | Тип пользователя | Примечания |
---|---|---|---|---|
acct |
Состояние учетной записи пользователей в клиенте | JWT, SAML | Если пользователь является членом клиента, значение 0 . Если он гость, это значение 1 . |
|
acrs |
Идентификаторы контекста проверки подлинности | JWT | Идентификатор Microsoft Entra | Указывает идентификаторы контекста проверки подлинности операций, которые может выполнять носитель. Идентификаторы контекста проверки подлинности можно использовать для активации требования к поэтапной проверке подлинности из приложения и служб. Часто используется вместе с утверждением xms_cc . |
auth_time |
Время последнего проверки подлинности пользователя. | JWT | ||
ctry |
Страна или регион пользователя | JWT | Это утверждение возвращается, если оно присутствует, и значение поля является стандартным двухбуквенный код страны или региона, например FR, JP, SZ и т. д. | |
email |
Указанный адрес электронной почты для этого пользователя | JWT, SAML | MSA, идентификатор Microsoft Entra | Это значение включается по умолчанию, если пользователь является гостем в клиенте. Для управляемых пользователей (пользователей внутри клиента) его необходимо запросить с помощью этого необязательного утверждения или только в версии 2.0 с областью OpenID. Это значение не гарантирует правильность и может изменяться с течением времени— никогда не используйте его для авторизации или сохранения данных для пользователя. Дополнительные сведения см. в статье Проверка разрешения пользователя на доступ к этим данным. Если вы используете утверждение электронной почты для авторизации, рекомендуется выполнить миграцию, чтобы перейти к более безопасному утверждению. Если вам требуется адрес электронной почты в приложении, запросите эти данные от пользователя напрямую, используя это утверждение в качестве предложения или предварительной заполнения пользовательского интерфейса. |
fwd |
IP-адрес | JWT | Добавляет исходный адрес запрашивающего клиента (при создании виртуальной сети). | |
groups |
Необязательное форматирование для утверждений группы | JWT, SAML | Утверждение groups используется с параметром GroupMembershipClaims в манифесте приложения , который также должен быть задан. |
|
idtyp |
Тип токена | Маркеры доступа JWT | Специальные: только в маркерах доступа только для приложений | Значение app , если маркер является маркером только для приложений. Это утверждение является наиболее точным способом для API определить, является ли маркер приложения маркером или маркером приложения+пользователя. |
login_hint |
Указание для входа | JWT | MSA, идентификатор Microsoft Entra | Непрозрачное утверждение с указанием надежного входа, закодированное в кодировке Base 64. Не изменяйте это значение. Это утверждение является лучшим значением для login_hint параметра OAuth во всех потоках для получения единого входа. Его можно передать между приложениями для автоматического единого входа. Приложение A может войти в систему пользователя, прочитать утверждение login_hint , а затем отправить утверждение и текущий контекст клиента приложению B в строке запроса или фрагменте, когда пользователь выбирает ссылку, которая принимает их в приложение B. Чтобы избежать проблем с состоянием гонки и надежностью, утверждения login_hint не включать текущий клиент для пользователя и по умолчанию используется домашний клиент пользователя. В гостевом сценарии, где пользователь находится из другого клиента, идентификатор клиента должен быть указан в запросе на вход. и передайте то же самое в приложения, с которыми вы сотрудничаете. Это утверждение предназначено для использования с существующими функциями login_hint пакета SDK, однако они предоставляются. |
tenant_ctry |
Страна или регион клиента ресурсов | JWT | То же, что и ctry , за исключением того, что задано на уровне клиента администратором. Также должно быть стандартным двухбуквенный значение. |
|
tenant_region_scope |
Регион клиента ресурса | JWT | ||
upn |
UserPrincipalName | JWT, SAML | Идентификатор пользователя, который можно использовать с параметром username_hint . Не является устойчивым идентификатором пользователя и не следует использовать для авторизации или уникальной информации о пользователе удостоверений (например, в качестве ключа базы данных). Вместо этого используйте идентификатор объекта пользователя (oid ) в качестве ключа базы данных. Дополнительные сведения см. в разделе Безопасные приложения и API путем проверки утверждений. Пользователи, войдите с помощью альтернативного идентификатора входа не должны отображаться имя участника-пользователя (UPN). Вместо этого используйте следующие утверждения маркера идентификатора для отображения состояния входа пользователю: preferred_username или unique_name для токенов версии 1 и preferred_username для токенов версии 2. Хотя это утверждение автоматически включается, его можно указать как необязательное утверждение для присоединения других свойств для изменения его поведения в гостевом случае пользователя. Вы должны использовать утверждение login_hint для использования login_hint — удобочитаемые пользователем идентификаторы, такие как имя участника-пользователя, являются ненадежными. |
|
verified_primary_email |
Источник из primaryAuthoritativeEmail пользователя | JWT | ||
verified_secondary_email |
Источник из вторичнойauthoritativeEmail пользователя | JWT | ||
vnet |
Сведения описатель виртуальной сети. | JWT | ||
xms_cc |
Возможности клиента | JWT | Идентификатор Microsoft Entra | Указывает, может ли клиентское приложение, полученное маркером, обрабатывать проблемы с утверждениями. Он часто используется вместе с утверждением acrs . Это утверждение обычно используется в сценариях условного доступа и непрерывной оценки доступа. Сервер ресурсов или приложение службы, выданное маркером для управления наличием этого утверждения в маркере. Значение cp1 в маркере доступа является авторитетным способом идентификации того, что клиентское приложение может обрабатывать вызов утверждений. Дополнительные сведения см. в разделе Проблемы утверждений, запросы утверждений и возможности клиента. |
xms_edov |
Логическое значение, указывающее, проверен ли владелец домена электронной почты пользователя. | JWT | Адрес электронной почты считается доменом, который проверяется, принадлежит ли он клиенту, где находится учетная запись пользователя, и администратор клиента выполнил проверку домена. Кроме того, электронная почта должна быть получена из учетной записи Майкрософт (MSA), учетной записи Google или используется для проверки подлинности с помощью потока однократного секретного кода (OTP). Учетные записи Facebook и SAML/WS-Fed не имеют проверенные домены. Для возврата этого утверждения в токене требуется наличие утверждения email . |
|
xms_pdl |
Предпочтительное расположение данных | JWT | Для клиентов с несколькими регионами предпочтительное расположение данных — это трехбуквенный код, показывающий географический регион, в котором находится пользователь. Дополнительные сведения см. в документации Microsoft Entra Connect о предпочтительном расположении данных. | |
xms_pl |
Предпочтительный язык пользователя | JWT | Предпочтительный язык пользователя, если задан. Источник из своего домашнего клиента в сценариях гостевого доступа. Форматированные LL-CC ("en-us"). | |
xms_tpl |
Предпочитаемый язык клиента | JWT | Предпочтительный язык клиента ресурса, если задан. Форматированный LL ("en"). | |
ztdid |
Идентификатор развертывания нулевого касания | JWT | Удостоверение устройства, используемое для Windows AutoPilot . |
Предупреждение
Никогда не используйте email
или upn
значения утверждений для хранения или определения того, должен ли пользователь в маркере доступа иметь доступ к данным. Изменяемые значения утверждений, такие как эти, могут изменяться со временем, что делает их небезопасными и ненадежными для авторизации.
Дополнительный набор утверждений версии 2.0
Эти утверждения всегда включаются в токены версии 1.0, но не включены в маркеры версии 2.0, если не запрошено. Эти утверждения применимы только для JWTs (маркеры идентификатора и маркеры доступа).
Утверждение JWT | Имя | Описание | Примечания |
---|---|---|---|
ipaddr |
IP-адрес | IP-адрес клиента, вошедшего в систему. | |
onprem_sid |
Локальный идентификатор безопасности | ||
pwd_exp |
Время истечения срока действия пароля | Количество секунд после истечения срока действия пароля в iat утверждения. Это утверждение включается только в том случае, если срок действия пароля истекает в ближайшее время (в соответствии с "днями уведомления" в политике паролей). |
|
pwd_url |
Изменение URL-адреса пароля | URL-адрес, который пользователь может посетить, чтобы изменить пароль. Это утверждение включается только в том случае, если срок действия пароля истекает в ближайшее время (в соответствии с "днями уведомления" в политике паролей). | |
in_corp |
Внутри корпоративной сети | Сигнализирует о входе клиента из корпоративной сети. Если это не так, утверждение не включено. | На основе параметров доверенных IP-адресов в MFA. |
family_name |
Фамилия | Предоставляет фамилию, фамилию или фамилию пользователя, как определено в объекте пользователя. Например, "family_name":"Miller" . |
Поддерживается в MSA и идентификаторе Microsoft Entra. Требуется область profile . |
given_name |
Имя | Предоставляет первое или заданное имя пользователя, как указано в объекте пользователя. Например, "given_name": "Frank" . |
Поддерживается в MSA и идентификаторе Microsoft Entra. Требуется область profile . |
upn |
Имя участника-пользователя | Идентификатор пользователя, который можно использовать с параметром username_hint . Не является устойчивым идентификатором пользователя и не следует использовать для авторизации или уникальной информации о пользователе удостоверений (например, в качестве ключа базы данных). Дополнительные сведения см. в разделе Безопасные приложения и API путем проверки утверждений. Вместо этого используйте идентификатор объекта пользователя (oid ) в качестве ключа базы данных. Пользователи, войдите с помощью альтернативного идентификатора входа не должны отображаться имя участника-пользователя (UPN). Вместо этого используйте следующее preferred_username утверждение для отображения состояния входа пользователю. |
Требуется область profile . |
Дополнительный набор утверждений версии 1.0
Некоторые улучшения формата маркера версии 2 доступны для приложений, использующих формат токена версии 1, так как они помогают повысить безопасность и надежность. Эти улучшения применяются только к JWT, а не к токенам SAML.
Утверждение JWT | Имя | Описание | Примечания |
---|---|---|---|
aud |
Публика | Всегда присутствует в JWTs, но в маркерах доступа версии 1 его можно создать различными способами : любой URI appID, с конечным косой чертой или без него и идентификатором клиента ресурса. Это случайное преобразование может быть трудно закодировать при выполнении проверки маркеров. Используйте additionalProperties для этого утверждения, чтобы убедиться, что он всегда имеет идентификатор клиента ресурса в маркерах доступа версии 1. |
Только маркеры доступа JWT версии 1 |
preferred_username |
Предпочтительное имя пользователя | Предоставляет предпочтительное утверждение имени пользователя в токенах версии 1. Это утверждение упрощает предоставление приложений подсказок имени пользователя и отображение отображаемых имен, доступных для чтения, независимо от их типа токена. Рекомендуется использовать это необязательное утверждение вместо использования, upn или unique_name . |
Маркеры идентификатора версии 1 и маркеры доступа |
additionalProperties
необязательных утверждений
Некоторые необязательные утверждения можно настроить для изменения способа возврата утверждения. Эти additionalProperties
в основном используются для миграции локальных приложений с различными ожиданиями данных. Например, include_externally_authenticated_upn_without_hash
помогает клиентам, которые не могут обрабатывать хэш-метки (#
) в имени участника-участника-участника.
Имя свойства | имя additionalProperty |
Описание |
---|---|---|
upn |
Можно использовать для ответов SAML и JWT, а также для токенов версии 1.0 и версии 2.0. | |
include_externally_authenticated_upn |
Включает гостевую имя участника-пользователя, хранящуюся в клиенте ресурса. Например, foo_hometenant.com#EXT#@resourcetenant.com . |
|
include_externally_authenticated_upn_without_hash |
То же, что указано ранее, за исключением того, что хэш-знаки (# ) заменяются подчеркиваниями (_ ), например foo_hometenant.com_EXT_@resourcetenant.com . |
|
aud |
В маркерах доступа версии 1 это утверждение используется для изменения формата утверждения aud . Это утверждение не действует в маркерах версии 2 или маркерах идентификатора версии, где утверждение aud всегда является идентификатором клиента. Используйте эту конфигурацию, чтобы убедиться, что API может упростить проверку аудитории. Как и все необязательные утверждения, влияющие на маркер доступа, ресурс в запросе должен задать это необязательное утверждение, так как ресурсы принадлежат маркеру доступа. |
|
use_guid |
Выводит идентификатор клиента ресурса (API) в формате GUID в качестве утверждения aud всегда вместо того, чтобы зависеть от среды выполнения. Например, если ресурс задает этот флаг и его идентификатор клиента 00001111-aaaa-2222-bbbb-3333cccc4444 , любое приложение, которое запрашивает маркер доступа для этого ресурса, получает маркер доступа с aud : 00001111-aaaa-2222-bbbb-3333cccc4444 . Без этого набора утверждений API может получить маркеры с утверждением aud api://MyApi.com , api://MyApi.com/ , api://myapi.com/AdditionalRegisteredField или любым другим значением, заданным в качестве URI идентификатора приложения для этого API, и идентификатором клиента ресурса. |
|
idtyp |
Это утверждение используется для получения типа маркера (приложения, пользователя, устройства). По умолчанию он создается только для маркеров только для приложений. Как и все необязательные утверждения, влияющие на маркер доступа, ресурс в запросе должен задать это необязательное утверждение, так как ресурсы принадлежат маркеру доступа. | |
include_user_token |
Выдает утверждение idtyp для маркера пользователей. Без этого дополнительного свойства для набора утверждений idtyp API получает утверждение только для маркеров приложений. |
пример additionalProperties
"optionalClaims": {
"idToken": [
{
"name": "upn",
"essential": false,
"additionalProperties": [
"include_externally_authenticated_upn"
]
}
]
}
Этот объект optionalClaims
приводит к тому, что маркер идентификатора, возвращенный клиенту, будет включать утверждение upn
с другими сведениями о домашнем клиенте и клиенте ресурсов. Утверждение upn
изменяется только в маркере, если пользователь является гостем в клиенте (который использует другой поставщик удостоверений для проверки подлинности).
См. также
- маркера доступа
- маркера идентификатора
Дальнейшие действия
- Дополнительные сведения о настройке необязательных утверждений
.