我想开发一个包含一些模块的门户 门户和每个模块使用基于 Jersey 的 Web 服务提供的数据,并使用 OAuth 1.0 进行保护
目前我几乎已经实现了 OAuth 提供程序
用户可以连接到门户并访问模块
每个应用程序或模块都有一个特定的访问 token 来消耗资源
我想做的是添加一个角色实现
例如,对于 module1,用户可以拥有 2 个角色(role1 和 role2),但不能并行使用这 2 个角色
首先,用户使用访问权限(module1/user1/role1),他将拥有一个 token ,稍后用户使用访问权限(module1/user1/role2),他将拥有另一个 token
根据角色,我想使用 RolesAllowed 注释来过滤请求
我读过这篇文章:http://objecthunter.congrace.de/tinybo/blog/articles/89
当用户通过 Web 服务身份验证时,我可以将用户名和用于模块的角色保留在数据库中,并且 RolesAllowedResourceFilterFactory 可以使用领域来检查用户是否属于该角色并可以访问资源
但是我可以绕过auth方法吗?
无论如何,我真的需要你的帮助来实现这个角色过滤器
如果您需要,我会尽力为您提供更多详细信息
谢谢
最佳答案
Jersey oauth 过滤器根据使用的访问 token 设置安全上下文。您只需确保 oauth 提供程序的自定义实现在使用各种角色调用时,分配一个带有 isInRole() 方法正确返回值的 token 。给定 token 的角色可以在 token 授权流程中建立(例如,客户端可以使用在请求请求 token 时传递到服务器的自定义参数来请求特定角色(该参数在parameters参数中传递给provider.newRequestToken()方法)。
在确定角色时,oauth 过滤器设置的安全上下文将委托(delegate)给 token isInRole() 方法 - 并且 RolesAllowedResourceFilterFactory 依赖于安全上下文。因此,如果 OAuthToken.isInRole() 返回正确的值,一切都应该按预期工作。您遇到任何问题吗?
关于java - 如何结合 OAuth 根据请求添加角色过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8330605/