【问题标题】:separate oauth2 and web server单独的 oauth2 和 Web 服务器
【发布时间】:2018-02-21 23:48:56
【问题描述】:

假设我的网站是example.com

当client.com 的用户想要通过example.com 登录时(使用oauth2)

  1. 他来到 oauth.example.com/authorize 和 oauth.example.com 知道他没有登录到 web.example.com 。

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

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

  4. oauth.example.com不知何故知道他登录到web.example.com

  5. oauth.example.com 使用它的 oauth2 魔法并将他发送回client.com

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

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

我担心的是,当会话到期时(没有用户显式注销),两台服务器可能会失去时间同步。

用户 (A) 可能会刷新 web.example.com 并发现他的会话已过期并让计算机保持打开状态。
另一个用户 (B) 可能会单击 login with example.com 和 oauth.example.com 可能会认为 (A) 用户仍处于登录状态(因为时间没有很好地同步)。

将时钟与 nptd 同步是最好的吗?
还是我应该放弃这个想法并想出其他东西?

  • 实现细节:我正在考虑使用 spring-session-jdbc,不幸的是它不会在每次到期时删除会话数据。

【问题讨论】:

    标签: oauth-2.0 spring-security-oauth2 spring-session


    【解决方案1】:

    您的oauth.example.com 应提供登录页面。 oauth.example.com 必须是授权服务器 (rfc6749)。当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 或 oauth.example.com 的会话 ID。

    我担心的是,当会话到期(没有用户明确退出)时,两台服务器可能会失去时间同步。

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

    【讨论】:

      猜你喜欢
      • 2012-03-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多