2

我有一个使用 oidc-client 的角度应用程序来访问使用 IdentityServer3 提供 OpenID Connect 身份验证的 API。

在身份验证期间,oidc-client 会引发错误:

sub from user info endpoint does not match sub in access_token

仅供参考,以下步骤是成功的:

  • POST 到 API 的/openid/login?signin=xxx
  • 重定向到 API 的/openid/connect/authorize
  • 重定向回 Angular 应用程序

但随后 oidc-client 调用了 API 的/openid/connect/userinfo.

API 没有实现 userinfo 端点,/openid/connect/userinfo返回一个空对象:{}

然后 oidc-client 用上面的错误信息停止了整个事情。

oidc-client 中是否有一个选项可以跳过对 userinfo 端点的调用?或者 API 是否必须实现该端点?

4

1 回答 1

3

oidc 将始终在内部调用 userinfo 来验证用户,因为默认情况下它设置为 true并且通过查询 .well-known/openid-configuration 传入 access_token。跳过这个也不是一个好主意。您的客户端应用程序是否在 IDP 上正确注册。

查看以下控制 userinfo 端点的 oidc-client 选项配置:

oidc-客户端-js

  • loadUserInfo (boolean, default: true): 控制是否从用户信息端点加载附加身份数据以填充用户配置文件的标志。
于 2018-06-15T06:10:49.517 回答