Oauth 2.0 分离oauth2和web服务器

Oauth 2.0 分离oauth2和web服务器,oauth-2.0,spring-security-oauth2,spring-session,Oauth 2.0,Spring Security Oauth2,Spring Session,假设我的站点是example.com 当client.com上的用户希望通过example.com登录时(使用oauth2) 他来到oauth.example.com/authorize并且oauth.example.com知道他没有登录到web.example.com oauth.example.com将他重定向到web.example.com 他登录到web.example.com,然后重定向回oauth.example.com oauth.example.com不知怎的知道他登录了web.

假设我的站点是
example.com

client.com
上的用户希望通过
example.com
登录时(使用oauth2)

  • 他来到
    oauth.example.com/authorize
    并且
    oauth.example.com
    知道他没有登录到
    web.example.com

  • oauth.example.com
    将他重定向到
    web.example.com

  • 他登录到
    web.example.com
    ,然后重定向回
    oauth.example.com

  • oauth.example.com
    不知怎的知道他登录了
    web.example.com

  • oauth.example.com
    执行其oauth2魔法并将其发送回
    client.com

  • 我的问题是,
    oauth.example.com
    应该如何检测用户是否使用
    web.example.com
    登录

    我正在考虑让
    web.example.com
    在数据库中存储会话数据,并让
    oauth.example.com
    查找数据库

    我担心的是,当会话到期时(用户未明确注销),两台服务器可能会失去时间同步

    用户(A)可能刷新
    web.example.com
    ,发现其会话已过期,并将计算机保持打开状态。
    另一个用户(B)可能会点击“代码>登录,例如.COM< <代码>和<代码> OAuth.Simult.com >代码>可以考虑<代码>(a)< /代码>用户仍然登录(因为时间没有很好地同步)。p> 将时钟与nptd同步是我能做的最好的事情吗?
    还是我应该放弃这个想法,想出别的办法

    • 实现细节:我正在考虑spring会话jdbc,不幸的是它没有在每次过期时删除会话数据

    您的
    oauth.example.com
    应该提供登录页面。
    oauth.example.com
    必须是授权服务器()。当
    web.example.com
    请求用户登录时,登录url应重定向到
    oauth.example.com
    登录页面

    调用
    oauth.example.com
    提供商登录验证(身份验证),然后返回
    web.example.com
    。如果登录成功,
    web.example.com
    将使用
    oauth.example.com
    切换令牌

    我正在考虑让web.example.com在数据库中存储会话数据,并让oauth.example.com查找数据库

    您可以在
    web.example.com
    服务器中将Oauth访问令牌和Oauth刷新令牌视为cookie或会话id

    我担心的是,当会话到期时(用户未明确注销),两台服务器可能会失去时间同步

    oauth.example.com
    必须具有撤销令牌api