【问题标题】:get user role in resource server from authorization server从授权服务器获取资源服务器中的用户角色
【发布时间】:2016-04-20 19:35:19
【问题描述】:

我有一个授权服务器,它根据用户名和密码从数据库中获取用户详细信息以及角色。

现在在访问资源服务器中的受保护资源(通过access_token)时,我想根据角色授权其余调用。我该怎么做? 因为,当我在资源服务器中检查 Principal 用户时,它得到了默认的 [ROLE_USER]

//Will @preAuthorize() work here ?
@RequestMapping(value="/pinaki", method=RequestMethod.GET)
public String home(Principal principal) {
    return "Hello World";
}

请指导..提前谢谢

【问题讨论】:

    标签: spring-boot spring-security-oauth2 spring-oauth2


    【解决方案1】:

    AFAIK spring-security-oauth2 仅支持获取开箱即用共享公共数据存储(数据库或内存)的授权服务器/资源服务器的用户详细信息(包括角色)。

    如果您有公共数据存储,则可以使用 InMemoryClientDetailsS​​ervice 或 JdbcClientDetailsS​​ervice。

    但是,如果在您的设置中没有公共数据存储,您自己扩展它应该不会太难。此任务的关键接口是 ClientDetailsS​​erviceResourceServerTokenServices

    ResourceServerTokenServices 实现返回包含角色的 OAuth2Authentication。因此,您可以从此处的授权服务器调用 tokeninfo 端点。 实现 ClientDetailsS​​ervice 并使用它会更优雅。这里还需要调用 tokeninfo 端点。

    在 XML 配置中,您可以在参数 token-services-ref 和 auth-details-source-ref 中设置要在 oauth:resource-server 标记中使用的 bean。 有关 Java 配置的详细信息,请参见页面 http://projects.spring.io/spring-security-oauth/docs/oauth2.html

    (我的信息是指 spring-security-oauth2 的 2.0.8 版本)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-27
      • 2016-01-17
      • 2018-08-29
      • 2013-04-20
      • 1970-01-01
      • 2016-05-21
      • 2014-07-09
      • 2018-05-09
      相关资源
      最近更新 更多