差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

下次修改
前次修改
下次修改 Both sides next revision
java:spring:rest:auth_conflict_of_oauth2 [2016/01/26 18:37]
tony 建立
java:spring:rest:auth_conflict_of_oauth2 [2016/01/26 20:29]
tony
行 1: 行 1:
 {{tag>​java spring rest}} {{tag>​java spring rest}}
-====== REST Auth使用OAuth2所發生的衝突 ======+====== REST使用OAuth2認證所發生的衝突 ======
 ===== Problem ===== ===== Problem =====
-我們的Web App提供了Web Console與Rest API兩種介面。最近發現透過瀏覽器登入Web Console再去做Rest API的登入認證,會造成Web Console登出的問題。+我們的Web App提供了Web Console與Rest API兩種介面。最近發現在同一瀏覽器中,一個tab登入Web Console,另一個tab做Rest API的登入認證,會使得Web Console發生登出或取不到認證資訊的問題。
 ===== How to resolve? ===== ===== How to resolve? =====
-經過Trace發現是由於在before PRE_AUTH_FILTER階段,會經過OAuth2的Resource Server Filter:+經過Trace發現是由於在Security Filter的before PRE_AUTH_FILTER階段,會經過OAuth2的Resource Server Filter:
 <code xml> <code xml>
  <http name="​api"​ pattern="/​api/​**"​ create-session="​never"​ >  <http name="​api"​ pattern="/​api/​**"​ create-session="​never"​ >
行 14: 行 14:
  </​http>​  </​http>​
 </​code>​ </​code>​
-從OAuth2AuthenticationProcessingFilter程式碼可以得知,如果在同一個session中已經過認證,則此Filter會清空SecurityContext:​+從OAuth2AuthenticationProcessingFilter程式碼可以得知,如果在同一個session中已經過認證,則此Filter會清空SecurityContext:​\\
 {{:​java:​spring:​rest:​rest_oauth2_filter.png?​600|}}\\ {{:​java:​spring:​rest:​rest_oauth2_filter.png?​600|}}\\
 而OAuth2AuthenticationProcessingFilter又提供了stateless設置,讓你可以在發生此問題時,不去清掉它。而在spring-security-oauth2 2.0.8版本後,設定檔是支援此屬性設置的:​ 而OAuth2AuthenticationProcessingFilter又提供了stateless設置,讓你可以在發生此問題時,不去清掉它。而在spring-security-oauth2 2.0.8版本後,設定檔是支援此屬性設置的:​
行 29: 行 29:
   * [[http://​csns.calstatela.edu/​wiki/​content/​cysun/​notes/​spring_security_filters|Understand Spring Security Filters]]   * [[http://​csns.calstatela.edu/​wiki/​content/​cysun/​notes/​spring_security_filters|Understand Spring Security Filters]]
   * [[https://​github.com/​spring-projects/​spring-security-oauth/​blob/​master/​spring-security-oauth2/​src/​main/​java/​org/​springframework/​security/​oauth2/​provider/​authentication/​OAuth2AuthenticationProcessingFilter.java|OAuth2AuthenticationProcessingFilter.java]]   * [[https://​github.com/​spring-projects/​spring-security-oauth/​blob/​master/​spring-security-oauth2/​src/​main/​java/​org/​springframework/​security/​oauth2/​provider/​authentication/​OAuth2AuthenticationProcessingFilter.java|OAuth2AuthenticationProcessingFilter.java]]
 +
 +=====    =====
 +----
 +\\
 +~~DISQUS~~