2016-12-05 2 views
2

Мы используем OAuth 2.0 для получения токенов JWT от Azure AD. В нашем приложении мы использовали значение претензии «upn» для идентификации связанного внутреннего имени пользователя.Какие претензии JWT от токенов Azure AD можно безопасно использовать для пользовательских сопоставлений?

Azure AD Token Reference документирует UPN претензии в качестве «User Principal Name», который, насколько я понимаю, является имя пользователя в формате, адр-спецификации (т.е. пользователь @ домен). Это хорошо работает для пользователей, созданных в Azure AD Tenant. Однако, к моему удивлению, утверждение upn кажется пропавшим, если аутентифицированный пользователь синхронизирован с другим AD. Такое поведение, похоже, не документировано нигде.

  1. Где я могу найти документацию о том, когда UPN гарантированно будет в маркере?
  2. Каковы надежные альтернативные утверждения, которые я могу использовать вместо этого? Предпочтительно, чтобы заявки, как утверждается, имели форму «пользователь/домен», как это соответствует нашей модели. Я рассмотрел следующее:
    • UNIQUE_NAME: Я только наблюдал это равным UPN, но я не уверен, откуда приходит. Смутно, token reference говорит: Это значение не гарантированно будет уникальным в пределах арендатора и предназначено для использования только для целей показа. (курсив мой)
    • электронной: Это тоже, кажется, равна UPN, но опять же, где она поступает из? На портале управления я попытался поместить другое значение в каждое связанное с электронной почтой поле, связанное с пользователем, но ни одно из них, похоже, не распространяется на это требование. Поэтому, похоже, это поле на самом деле не является адресом электронной почты.

Я хочу быть абсолютно уверен, что наше приложение будет иметь возможность обрабатывать все жетоны, выпущенные Azure AD, поэтому я не решаюсь использовать какой-либо из вышеуказанных требований, если у меня нет какой-то документации, объясняющие их фактических семантика.

ответ

1
  1. Где я могу найти документацию о том, когда UPN гарантированно будет в маркере?

Нет такого документа о том, как это требование гарантировано. Основываясь на тесте, это, как вы уже упоминали, выдается только тогда, когда пользователи не являются внешними пользователями.

Каковы надежные альтернативные утверждения, которые я могу использовать вместо этого? Предпочтительно, чтобы заявки, как утверждается, имели форму «пользователь/домен», как это соответствует нашей модели. Я рассмотрел следующее:

Мы можем использовать заявку oid, чтобы оформить карту. Это требование содержит уникальный идентификатор объекта в Azure AD. Это значение является неизменным и не может быть переназначено или повторно использовано. Используйте идентификатор объекта, чтобы идентифицировать объект в запросах для Azure AD.

И если у вас есть обратная связь о документе Azure, вы можете попробовать отправить отзыв от Возможно, эта страница вам полезна? на правой нижней странице, чтобы помочь улучшить документ. enter image description here

+0

Благодарим вас за ответ. Я полагаю, что нет никакой документации по семантике ** unique_name ** и ** email **, тогда? Отсутствие уникальности не обязательно является проблемой (несколько участников AD могут все же идентифицировать одного и того же пользователя в нашем приложении). –

0

Хотя для UPN и первичного адреса электронной почты пользователя достаточно распространено то, что не гарантируется (и не существует UPN, как вы заметили). Поэтому вы должны работать в предположении, что UPN! = Адрес электронной почты. Если вам нужно знать адрес электронной почты, вы должны сделать вызов Graph и выполнить поиск с помощью oid.

Смежные вопросы