OAUTH2 + OpenID连接用于为用户添加一些范围的端点?

问题描述 投票:0回答:1

我有:

  1. 具有一些公共端点和私有端点的Spring启动客户端应用程序,例如需要@PreAuthorize(“#oauth2.hasScope('resource.read')”)
  2. 我有一个外部授权服务器:Cloudfoundry UAA
  3. 我有一个链接到UAA的外部OIDC提供程序我可以使用它来验证一个人,我从该外部OIDC提供程序的ID_Token收到一个Person_ID
  4. 现在我需要更改UAA核心代码以实现我使用Person_ID的逻辑并从LDAP中搜索共享相同Person_ID的等效用户,然后我需要将其用户组添加到客户端的令牌中。 (我目前在/ userinfo端点完成了它)

所以我在/ userinfo端点完成了这个逻辑,当客户端收到一个访问令牌(从客户端,重定向到UAA,从UAA到OIDC为AUTH,然后再返回到令牌,然后这个令牌被发送到客户端,现在客户端可以获取令牌并请求/ userinfo然后将其拥有用户角色)

这是不好的逻辑吗?我应该以某种方式在访问令牌中添加LDAP实现(步骤4)吗?

oauth-2.0 spring-security-oauth2 openid-connect
1个回答
0
投票

实际上,正如设计问题的情况一样,这取决于。

要记住的关键是OIDC及其相关的id_token用于身份验证。 /userinfo对州政府关于用户是谁的回应很常见。用户身份的一部分可能是他们的角色。

另一方面,OAuth及其相关的access_token用于授权。访问令牌通常声明有关客户端有权执行的操作的声明。客户端可能做的事情可能与用户的角色不同。

想想这个客户需要做出哪些决定。根据从/userinfo响应中推断出的角色,它可以选择它可以显示哪些页面。

想想这个客户将与之沟通的内容。也许它会与资源服务器通信。如果客户端通过登录期间获得的access_token,则该令牌应指示客户端有权执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.