Ошибка аутентификации oidc-client: подпрограмма из конечной точки информации о пользователе не соответствует подпрограмме в access_token

У меня есть приложение angular, использующее oidc-client для доступа к API, который использует IdentityServer3 для обеспечения аутентификации OpenID Connect.

Во время аутентификации oidc-client выдает ошибку:

sub from user info endpoint does not match sub in access_token

К вашему сведению, следующие шаги были успешными:

  • POST в API /openid/login?signin=xxx
  • перенаправить на /openid/connect/authorize API
  • перенаправить обратно в приложение angular

Но затем oidc-client обратился к API /openid/connect/userinfo.

API не реализует конечную точку информации о пользователе, /openid/connect/userinfo возвращает пустой объект: {}.

Затем oidc-client остановил все это с указанным выше сообщением об ошибке.

Есть ли в oidc-client возможность пропустить этот вызов конечной точки userinfo? Или это обязательно для API для реализации этой конечной точки?


person Endy Tjahjono    schedule 14.06.2018    source источник


Ответы (1)


oidc всегда будет вызывать userinfo изнутри, чтобы проверить пользователя, поскольку по умолчанию для него установлено значение true и его входящий access_token, запрашивая конфигурацию .well-known / openid. Пропускать это тоже не лучшая идея. Правильно ли зарегистрировано ваше клиентское приложение на IDP.

Посмотрите на приведенную ниже конфигурацию опции oidc-client, которая управляет конечной точкой userinfo:

oidc-client-js

  • loadUserInfo (логическое, по умолчанию: true): флаг для управления загрузкой дополнительных идентификационных данных из конечной точки информации о пользователе для заполнения профиля пользователя.
person Sohan    schedule 15.06.2018
comment
Спасибо! Если для loadUserInfo установлено значение false, oidc-client не отправлял запрос информации о пользователе. Он перешел к следующему шагу, отправив /openid/connect/checksession запрос. - person Endy Tjahjono; 21.06.2018