0

我使用@EnableOauth2Sso註銷出發,按照Spring的oauth2 tutorial描述的一個類似的架構:一個auth服務器,zuul代理,使該SSO,分離UI應用等春天的oauth2 SSO - 無法從驗證服務器

Auth server ---- Resource Server (Zuul app) ---- Angular UI App 

問題是,當UI註銷資源服務器時,它成功刪除資源服務器JSESSIONID,然後用戶被重定向到主頁。當用戶想要再次登錄時,他被重定向到auth服務器,但不是詢問用戶名+密碼,而是認爲他仍然登錄。 auth服務器JSESSIONID仍然存在,並且不受前面的Resource Server lougout的影響。

我怎樣才能從auth服務器註銷?

回答

0

由於沒有一個現成的春天的OAuth2單退出,我們必須解決這個創建/撤銷端點調用驗證服務器從它註銷:

UI:

$http({ 
     method: 'POST', 
     url: API + '/logout' 
    }).then(function() { 
     $http({ 
      method: 'GET', 
      url: API + '/auth/oauth/session/revoke' 
     }).then(function() { 
      window.location = '/'; 
     }); 
    }); 

Zuul服務器:

zuul: 
    ... 
    routes: 
     authServer: 
     path: /auth/** 
     url: ${authServer.url}/auth/ 
     ... 

一uth服務器:

@RestController 
public class RevokeController { 

    @RequestMapping(value = "/oauth/session/revoke", method = RequestMethod.GET) 
    public void revoke(HttpServletRequest request) throws InvalidClientException { 
     request.getSession().invalidate(); 
    } 
} 
0

這是正確的行爲,當您註銷Angular應用程序時,它不會從Auth服務器註銷。

例如:假設我們想要使用谷歌或臉書賬戶登錄stackoverflow.com,我們不需要再次輸入密碼,我們登錄到Auth服務。

如果我們需要反覆顯示SSO登錄,我們需要註銷Angular UI和OAuth服務器。