2011-11-30 83 views
1

组合的作用滤波器我想开发含有一些模块 门户和每个模块一个门户消耗由基于新泽西州和使用OAuth 1.0如何增加对请求使用OAuth

固定对于一个web服务提供的数据那一刻我几乎实现OAuth的提供商

用户可以连接到门户和访问模块

每个应用程序或模块都有特定的访问令牌消耗资源

我想要做的就是添加一个角色实现

例如,对于模块1,用户可以有2个角色(基于role1和role2所),但在平行

首先,用户不能使用2个角色使用访问(模块1 /用户1 /角色1),他将有一个令牌,后来用户使用访问(模块1 /用户1 /角色2),他将有另一个令牌

根据角色,我想过滤与RolesAllowed注释例如

我已阅读本文的请求:http://objecthunter.congrace.de/tinybo/blog/articles/89

当用户通过Web服务认证时,我可以在数据库中保存用户名,并且用于模块和RolesAllowedResourceFilterFactory的角色可以使用领域来检查用户是否在角色中并且可以访问资源

但我可以绕过身份验证的方法?

无论如何,我真的需要你的帮助来实现这个角色过滤事情

我会尝试,如果你需要

感谢给你更多的细节

回答

1

泽西OAuth的过滤器基础上设置的安全上下文使用了什么访问令牌。您只需确保oauth提供程序的自定义实现为使用各种角色调用的isInRole()方法分配带有正确返回值的标记。给定令牌的角色可以在令牌授权流程中建立(例如,客户端可以使用在请求令牌时传递给服务器的自定义参数来请求特定角色(这会在参数参数中传递给提供者)。 newRequestToken()方法)

,在确定角色时的OAuth滤波器组将委托令牌isInRole()方法的安全上下文 - 。和RolesAllowedResourceFilterFactory依赖于安全上下文所以,一切都应该按预期工作如果OAuthToken .isInRole()返回正确的价值。你遇到的任何问题?

0

我知道这是一个老的文章,但我面临着类似的问题。对我来说,我解决它完全一样的方式描述马丁期间令牌授权我设置允许的角色:

String verifier = provider.authorizeToken(token, sContext.getUserPrincipal(), roles); 

其中提供商是@Context DefaultOAuthProvider,令牌DefaultOAuthProvider。令牌和角色是我想允许由此看来访问一组角色:

Set<String> roles = new HashSet<String>(); 
roles.add("someRole"); 

然后在我的服务,我只用一个@Context SecurityContext的方法的isUserInRole(“someRole”),这给了我真正的情况下,用户在指定的作用,否则为false:

if (sContext.isUserInRole("someRole")) { 
    .... 
} 

希望它会帮助别人。