2017-05-31 36 views
1

我正在使用組合身份驗證和資源服務器。當我啓用@EnableResourceServer和@EnableAuthorizationServer時,我遇到了登錄頁面的問題

我測試並獲得認證與重定向觸發的登錄頁面,使用授權代碼等創建令牌一切正常。

但是,當我打開資源服務器時,redirct登錄頁面停止使用不同的安全設置相關問題。 我認爲這與ResourceServerConfigurerAdapterWebSecurityConfigurerAdapter有一個configure(HttpSecurity http)方法來覆蓋。 我試過只使用其中之一,甚至試圖讓他們都設置相同的設置等,但無法讓它正常工作。

比如我得到缺少模型CSRF的問題之一:

異常評估SpringEL的表情: 「_csrf.parameterName」 (登錄:45)

什麼推薦這樣做的方式?

此服務器的目的是: - 作爲一個OAuth認證服務器,主要與授權碼流,它會顯示一個登錄之後批准頁面,用戶 - 同樣託管REST API,它的OAuth用戶端將連接到使用訪問令牌訪問資源的登錄用戶

的安全配置是這樣的:

http 
    .authorizeRequests() 
     .antMatchers("/login", "/logout.do").permitAll() 
     .antMatchers("/oauth/**").permitAll() 
     .antMatchers("/myservice/api/**").authenticated() 
    .and() 
    .formLogin() 
     .loginProcessingUrl("/login.do") 
     .usernameParameter("name") 
     .loginPage("/login") 
    .and() 
    .logout() 
     .logoutRequestMatcher(new AntPathRequestMatcher("/logout.do")); 

,登錄頁面是一個簡單的thymeleaf登錄頁面。

+0

您是否啓用CSRF? – andre3wap

+0

在@EnableResourceServer之前(並且只有@EnableAuthorizationServer)它默認會自動打開。 但是現在它似乎關閉了,可能是ResourceServerConfigurerAdapter中的默認值。 據我所知,它是在Spring安全中打開的,你明確地把它關掉了? (csrrf()。disable()等) 我想問題是,所有授權調用的CSRF必須爲ON,但關閉資源... –

+0

我試圖爲WebSecurityConfigurerAdapter添加@Order(2)使其具有優先權,然後再次登錄。 然而,用於訪問REST API(即資源)的令牌認證不起作用,並且表現得像沒有經過認證(重定向到登錄)。 –

回答

0

看來我們現在解決了這個問題。

我們必須設置WebSecurityConfigurerAdapter: @Order(org.springframework.boot.autoconfigure.security.SecurityProperties.ACCESS_OVERRIDE_ORDER)使事情正常工作。

相關問題