401 при вызове UserInfo с использованием ADFS 4.0 и OpenID Connect

Я успешно создал новую группу приложений с серверным приложением, а также с веб-API, и протокол OpenID Connect работает без каких-либо проблем, пока я не попытаюсь позвонить в UserInfo. Идентификатор проверяющей стороны - это тот же GUID, что и идентификатор клиента серверного приложения (в соответствии с примерами, которые я читал в Интернете). При попытке вызвать UserInfo я получаю сообщение об ошибке ниже:

WWW-Authenticate: Bearer error="invalid_token", error_description="MSIS9921: Received invalid UserInfo request. Audience 'microsoft:identityserver:21660d0d-93e8-45db-b770-45db974d432d' in the access token is not same as the identifier of the UserInfo relying party trust 'urn:microsoft:userinfo'."

Любая помощь будет принята с благодарностью.


person Frank Z    schedule 12.12.2016    source источник
comment
Какой грант вы используете? Последовательность действий почтальона - gist.github.com/nzpcmad/ab979533ba673ae837d7e3a607b9   -  person rbrayb    schedule 12.12.2016
comment
параметры.Add (grant_type, authorization_code);   -  person Frank Z    schedule 12.12.2016


Ответы (2)


Я также недавно получил эту ошибку, используя ADFS с поставщиками ASP.NET Core OpenIDConnect. В моем случае отключение запроса UserInfo полностью решило проблему:

var openIdOptions = new OpenIdConnectOptions
{
  ...
  GetClaimsFromUserInfoEndpoint = false
};

После этого у меня все еще были требования, которые мне нужны для моего приложения - адрес электронной почты, SID, имя и т. Д. Я уверен, что есть сценарии, в которых это не сработает, но хорошо знать, что вам может вообще не понадобиться / userinfo . Мне все равно было бы интересно узнать, почему токен, возвращаемый из ADFS, нельзя использовать для вызова / userinfo и как исправить это в поставщиках ASP.NET OpenIDConnect.

person Daniel    schedule 18.08.2017
comment
Я нашел такое же разрешение, но теперь я хотел бы использовать конечную точку UserInfo offline с токеном доступа для мониторинга атрибутов пользователя (в частности, они все еще включены на IP-адресе), поэтому я пытаюсь понять, как заставить его снова работать ... - person MikeJansen; 11.05.2018
comment
Мне тоже очень хотелось бы знать, как это работает. В Spring есть несколько хороших библиотек, которые «просто работают» с другими поставщиками OIDC. Потребуются некоторые усилия, чтобы избежать конечной точки / userinfo. - person anschoewe; 11.07.2018

Просто установите ресурс соответственно:

options.Resource = "urn:microsoft:userinfo";
person White hawk    schedule 10.06.2020