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服务器。