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

假设我的网站是example.com

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

  1. 他来到 oauth.example.com/authorizeoauth.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.comoauth.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
      相关资源
      最近更新 更多