我正在使用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的常规框,而配置基本上是example教科书。
我的错是Require
身份验证。使用OAuth2远程验证时,openid-connect似乎并没有查找远程用户的用户信息,它只是复制从/introspect
端点获取的所有属性,并尝试将Require与之匹配。 >
我的问题是:一旦拥有远程用户,如何通过openid-connect查找相应的用户信息(通过调用现有/userinfo
端点)?
答案 0 :(得分:1)
充当OAuth 2.0资源服务器时,不能使模块调用用户信息端点。您可以做的是将相关声明映射到提供商中的访问令牌。