В настоящее время я пытаюсь аутентифицировать приложение angular 7 с помощью ADFS 2016 (используя angular-oauth2-oidc).Пока это работает довольно хорошо.Когда я получаю доступ к приложению, меня перенаправляют на страницу входа в ADFS, где я ввожу свои учетные данные и получаю токены.
Теперь, когда приложение вызывает веб-API, оно отправляет токен доступа в заголовках запроса.Маркер доступа, возвращаемый ADFS, выглядит следующим образом:
{
"aud": "microsoft:identityserver:xxx",
"iss": "http://xxx/adfs/services/trust",
"iat": 1554561406,
"nbf": 1554561406,
"exp": 1554565006,
"apptype": "Public",
"appid": "xxx",
"authmethod": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport",
"auth_time": "2019-04-06T12:21:39.222Z",
"ver": "1.0",
"scp": "profile openid"
}
Проблема заключается в том, что веб-API должен знать идентификатор пользователя, выполняющего вызов (поскольку на уровне приложения определены некоторые разрешения).Я увидел здесь , что я могу добавить претензии к токену доступа, что я и сделал.Однако при чтении статей в Интернете я читал, что, по-видимому, токен доступа не должен использоваться для идентификации пользователя, поэтому я не знаю, правильно ли добавлять утверждение, используемое веб-API для идентификации пользователя.
Однако я читаю здесь , который
Единственной информацией пользователя, которой обладает токен доступа, является идентификатор пользователя, расположенный в подпретензе.
Но по умолчанию ADFS не предоставляет «вспомогательный» токен.Верно ли, если я сам добавляю претензию «sub», содержащую адрес электронной почты пользователя, или мне нужно действовать по-другому?