Не удается получить удостоверение пользователя в JWT, используемом в токене доступа OAuth2 из ADFS 3.0

Я использую поток авторизации, поддерживаемый в ADFS 3.0, следующим образом:

  1. Браузер подключается к MyService
  2. MyService перенаправляет браузер в ADFS для OAuth
  3. Браузер подключается к ADFS для кода авторизации OAuth
  4. ADFS аутентифицирует пользователей через браузер
  5. ADFS перенаправляет браузер обратно в MyService вместе с кодом авторизации.
  6. Браузер подключается к MyService и передает токен авторизации
  7. MyService подключается к ADFS и получает токен доступа из токена авторизации

Однако в токене доступа отсутствует удостоверение пользователя, и MyService не может идентифицировать пользователя.

Маркер доступа содержит следующую информацию JWT.

{"aud": "urn: relying: party: trust: identifier",
"iss": "http://ms.cloud.com/adfs/services/trust",
"iat": 1452875046,
"exp": 1452878646,
"auth_time": "2016 г. -01-15T15: 35: 20.248Z ",
" authmethod ":" urn: oasis: names: tc: SAML: 2.0: ac: classes: PasswordProtectedTransport ",
" ver ":" 1.0 ", < br> "appid": "my-app"}

Может ли кто-нибудь сообщить мне, как MyService может идентифицировать пользователя после получения токена доступа от ADFS?


person Gary    schedule 15.01.2016    source источник


Ответы (2)


Правила утверждений в доверии проверяющей стороны должны определять утверждения, которые будут отправляться как часть токена JWT. После того, как мы добавили правила утверждения для электронной почты, имени и т. Д., Информация была добавлена ​​в токен доступа JWT.

person Gary    schedule 24.01.2016
comment
Сейчас мы сталкиваемся с аналогичной проблемой, каковы правила утверждения и как вы их добавляли? Спасибо - person Joseph Carroll; 11.07.2016
comment
Да, было бы очень интересно получить подробную инструкцию, как это исправить. - person David K. Hess; 05.08.2016
comment
Я пытаюсь добавить их, экспериментируя со всевозможными правилами утверждений, но ни одно из них, похоже, не влияет на то, что содержит токен JWT. Еще указатели? - Может, я неправильно понимаю понятие «полагающаяся сторона». - person Efrain; 09.05.2017

  1. Измените доверие поставщика утверждений для Active Directory в ADFS, чтобы передать адрес электронной почты, имя и т. Д.

    • Open ADFS. Click on "Claims Provider Trusts". Click on "Active Directory". enter image description here
    • Затем нажмите «Изменить правила утверждения» справа. введите здесь описание изображения. Теперь вы должны увидеть диалоговое окно "Редактировать претензии". введите описание изображения здесь Инструкции по добавлению заявок см. в этом видео. Перейти к временному индексу 2:40. Изменить правила поставщика заявлений
  2. Отредактируйте утверждения Доверительного фонда проверяющей стороны. Для электронной почты, имени и т. Д. Добавьте соответствующее правило преобразования выдачи с использованием LDAP в качестве типа правила и выберите Active Directory в качестве источника хранилища атрибутов. Сделайте это, повторив описанные выше шаги для доверяющей стороны, связанной с вашим JWT-клиентом. введите описание изображения здесь Чтобы добавить претензии проверяющей стороны, обратитесь к этому видео и перейдите к временному индексу 14:35 Изменить правила утверждений проверяющей стороны

Я рекомендую передавать SAM-Account-Name как http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name. Я смутно помню, что у WIF были проблемы с ClaimsPrincipal, если вы этого не сделали.

Кроме того, вы должны включить поддержку утверждений в Active Directory, если вы еще этого не сделали.

person user1424660    schedule 25.10.2016