java - 如何结合 OAuth 根据请求添加角色过滤器

标签 java oauth filter jersey role

我想开发一个包含一些模块的门户 门户和每个模块使用基于 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/

相关文章:

javascript - 如何使用 OAuth2 从 linkedin 获取最近的公司更新

具有日期范围的 Android SQLite 过滤器数据

css - -ms-filter vs 过滤器有什么区别?

MYSQL LEFT JOIN - 按用户过滤

java - Spring + Hibernate 初始化错误 : Cannot find class [<providername>]

c# - 将并发java类移植到c#

rest - 带有 DotNetOpenAuth 的 ASP.NET Web API

java - 我可以使用 iText 重置忘记的所有者密码吗?

java - 有没有办法用 Hamcrest 对嵌套属性进行深入比较

python - Flask-OAuthlib 从 token 处理程序获取 access_token