OpenID Connect如何利用userinfo进行授权?

时间:2019-04-03 02:09:27

标签: openid-connect remote-validation mod-auth-openidc

我正在使用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端点)?

1 个答案:

答案 0 :(得分:1)

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