首页 文章

从授权服务器获取资源服务器中的用户角色

提问于
浏览
0

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

现在,当访问资源服务器中的受保护资源(传递access_token)时,我想基于角色授权其余调用 . 我该怎么办?因为,当我在资源服务器中检查Principal用户时,它获取默认值[ROLE_USER]

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

请指导..谢谢

1 回答

  • 2

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

    如果您有公共数据存储,则可以使用InMemoryClientDetailsService或JdbcClientDetailsService .

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

    ResourceServerTokenServices实现返回包含角色的OAuth2Authentication . 因此,您可以在此处从授权服务器调用tokeninfo endpoints . 实现ClientDetailsService并使用它会更优雅 . 在这里,您还需要调用tokeninfo endpoints .

    在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版)

相关问题