【问题标题】:Designing the flow of OAuth2 authentication设计 OAuth2 认证流程
【发布时间】:2016-07-29 13:51:25
【问题描述】:

我正在尝试为父/子关系提出适当的 OAuth2 身份验证流程。
App-A 和 App-B 是两个独立的应用程序。当单击来自App-A 的链接时,App-A 在 iframe 中打开 App-B

我负责维护App-B
我如何设计流程以使App-B 能够识别来自App-A 的用户并在两个应用程序中保持相同的会话?

这是我目前想出的流程:

  1. App-A 将在交互前向App-B 提供客户端ID 和密钥。

  2. 用户使用parentIdApp-BGET /person 端点发出请求。

  3. 然后App-B 将向App-A 服务器发送一个请求,其中客户端ID、密钥和redirect-url 设置为GET /person

现在App-A 将发送给App-B 以传递经过身份验证的用户的会话信息。

如果流程没有意义,你可以摆脱它

【问题讨论】:

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


    【解决方案1】:

    您的问题类似于在多个应用中维护会话。

    您的方法的问题是您需要从前端或其他一些 AppA(维护当前用户会话)的方式,它公开了客户端 ID/秘密

    这里有一些你可以实现的想法,

    两个应用程序是否在同一个父域下?如果是,

    喜欢 appA.domain.comappB.domain.com 然后认证成功后,可以在父域*..domain.com中设置一些会话标识cookie 然后从 appB 中获取当前用户会话,也可以从中获取 accessToken。

    如果两个应用程序在不同的域中,那么

    你需要有一些通用的身份验证服务器来维护会话,所以当appA加载并发现没有可用的会话时,它可以重定向到通用身份验证服务器,然后检查会话(如果不让用户登录)然后发送将数据返回给 appA

    同样的流程也适用于 appB。

    也请检查此链接 http://merbist.com/2012/04/04/building-and-implementing-a-single-sign-on-solution/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多