7
我使用下面的Java配置在Spring Security:混淆使用Java配置
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
}
基於此配置,所有的請求進行身份驗證。當您未經認證而擊中控制器時,AnonymousAuthenticationFilter
將爲您創建一個身份驗證對象username=anonymousUser, role=ROLE_ANONYMOUS
。
我試圖提供AA特定的控制器方法匿名訪問,並嘗試使用以下每一項:
@Secured("ROLE_ANONYMOUS")
@Secured("IS_AUTHENTICATED_ANONYMOUSLY")
當被調用的控制方法,給出以下響應: 「HTTP狀態401 - 訪問此資源需要完全身份驗證」
有人可以幫助我理解爲什麼我們收到此消息,並且爲什麼ROLE_ANONYMOUS
/IS_AUTHENTICATED_ANONYMOUSLY
似乎無法使用此配置?
感謝,
JP
嗯...這是我不夠明確。如果我使用前面指定的java config調用給定的url,如果我沒有使用基本認證提供憑證,AnonymousAuthenticationFilter步入並創建一個認證對象,但使用ROLE_ANONYMOUS。這不應該仍然工作?我不知道你上面的配置應該是必要的。思考? – user2145809
這是必要的,因爲ROLE_ANONYMOUS指示用戶是匿名的而不是經過身份驗證的。請注意,您在控制器上指定的註釋不會覆蓋基於URL的安全性,它們將對其進行補充以提供縱深防禦(即多層安全性)。 –
Rob,我認爲我的困惑源於對帶有特定的@RequestMapping(value =「/ mycontroller」)映射註釋的控制器方法使用@Secured(「ROLE_ANONYMOUS」)是註釋「equivalent」:.antMatchers (「/ mycontroller」)。permitAll()或者.antMatchers(「/ mycontroller」)。hasRole(「ROLE_ANONYMOUS」)。根據你所說的話,註釋配置不能替代xml/java配置(比如@RequestMapping是如何替代xml控制器映射的)。它是否正確? – user2145809