从Oauth2服务器和所有客户端注销

时间:2018-02-07 07:43:00

标签: java spring-security oauth-2.0

我们有一个java网络应用程序,其中包含大量战争。我们有一个Oauth2服务器(由我们编写),我们将有很多客户端(大约8个)。所有这些都属于同一个领域。除此之外,我们有另一个应用程序(在完全不同的tomcat上运行。使用Liferay)。这个想法是,用户将使用它们,因为他们使用一个应用程序,他们不应该看到很大的差异。 现在我需要的是当我以某种方式从一个地方注销oauth2服务器和所有其他客户端注销时。 因为客户端应该是:我已经注销了为什么在某些部分我仍然登录? 目前我不知道该怎么做。 我读到的很多地方通常都不是这种做法。 你能给我提示并从我可以从哪里开始解释我吗?也许在我的情况下使用Oauth2不是最佳选择?

1 个答案:

答案 0 :(得分:0)

根据您的要求,您可以使用Spring Security的JDBC令牌存储实现OAuth2。为了在用户注销后工作,所有客户端都应调用您的删除令牌API,您可以在其中删除访问令牌

    @FrameworkEndpoint
    public class RevokeTokenEndpoint {

        @Resource(name = "tokenServices")
        ConsumerTokenServices tokenServices;

        @RequestMapping(method = RequestMethod.DELETE, value = "/oauth/token")
        @ResponseBody
        public void revokeToken(HttpServletRequest request) {

            //Delete the Token
        }
    }

此外,您应该删除刷新令牌。这样,一旦用户注销并且后续客户端无法再使用相同的令牌,令牌将失效