OpenID Connect 如何利用用户信息进行授权?

How can OpenID Connect utilize userinfo for authorization?

我正在使用 mod_auth_openidc 来处理一个既没有身份验证也没有授权的 API。同一个端点还服务于 UI,因此它具有交互和服务器到服务器的查询。这是模块具有 AuthType auth-openidc 的功能。因此该模块在 OAuth2 中充当资源服务器。

配置这个时,我意识到我接受了密码授予的访问令牌,所以我的所有用户都分配了角色,我们实际上并没有在客户端 ID 上使用范围。所以,很自然地,我想通过这样的角色来限制对端点的访问:

<Location />
  AuthType auth-openidc
  OIDCOAuthIntrospectionEndpoint https://localhost/oauth2/introspect
  OIDCOAuthRemoteUserClaim sub
  OIDCOAuthClientID 1111
  OIDCOAuthClientSecret 2222
  Require claim roles:MYAPI_ACCESS
</Location>  

验证端点是股票 RFC 7662 compliant box and the config is basically textbook example

我的想法是 Require authz。使用 OAuth2 远程验证时,openid-connect 似乎不会查找远程用户的用户信息,它只是复制从 /introspect 端点获取的所有属性并尝试将 Require 与其匹配。

我的问题是:我如何让 openid-connect 查找相应的用户信息(通过调用现有的 /userinfo 端点)一旦它有远程用户?

当作为 OAuth 2.0 资源服务器时,您不能让模块调用用户信息端点。您可以做的是将相关声明映射到您的提供商中的访问令牌。