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 资源服务器时,您不能让模块调用用户信息端点。您可以做的是将相关声明映射到您的提供商中的访问令牌。
我正在使用 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 资源服务器时,您不能让模块调用用户信息端点。您可以做的是将相关声明映射到您的提供商中的访问令牌。