【发布时间】:2015-02-06 20:15:37
【问题描述】:
我有一个 Jersey Rest Web 服务来处理个人帐户 CRUD。
我有 spring security+ oAuth2 来保护这个 api,我无法配置的是,我想让 Account create 方法匿名。我试图配置拦截 url,但它不起作用方法级别。所以我需要为此目的编写单独的类,否则我可以不用它来实现。
示例类代码
public class AccountResource{
createAccount() --- I want this method to be accessed by Anonymous uers so they can create account without generating tokens.
updateAccount() --
findAccount() --
deleteAccont()--
}
使所有以'/services/rest/**'开始的调用安全的配置代码
<http pattern="/services/rest/**" create-session="never"
entry-point-ref="oauthAuthenticationEntryPoint"
xmlns="http://www.springframework.org/schema/security">
<anonymous enabled="false" />
<intercept-url pattern="/services/rest/**" method="GET" access="ROLE_USER" />
<intercept-url pattern="/services/rest/**" method="POST" access="ROLE_USER" />
<intercept-url pattern="/services/rest/**" method="PUT" access="ROLE_USER" />
<intercept-url pattern="/services/rest/**" method="DELETE" access="ROLE_USER" />
<custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" />
<http-basic entry-point-ref="oauthAuthenticationEntryPoint" />
<access-denied-handler ref="oauthAccessDeniedHandler" />
</http>
【问题讨论】:
-
“拦截 url ... 方法级别不起作用”是什么意思?你的 Jersey 资源是 Spring Bean 吗?
-
请同时添加您的 spring 安全配置。
-
我的意思是添加新帐户的方法不应该是安全的。
-
@FritzDuchardt,我的 Spring + oAuth2 安全工作正常,我只想允许用户在没有任何安全/令牌的情况下创建新帐户。是的,泽西资源是春豆。
-
@DaveSyer,是的 Jersey 资源是 spring bean。
标签: spring spring-security jersey-2.0 jersey-client spring-security-oauth2