设计OAuth2身份验证流程

时间:2016-07-29 03:00:34

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

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

我负责维护App-B
如何以某种方式设计流程,以便App-B识别来自App-A的用户并在两者之间保持相同的会话申请?

这是我到目前为止所提出的流程:

  1. App-A会在互动之前向App-B提供客户ID和密钥。

  2. GET /personApp-B的{​​{1}}端点发出请求。

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

    < / LI>

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

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

1 个答案:

答案 0 :(得分:0)

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

您的方法存在的问题是您需要从前端或某些方面提出请求 通往AppA(维护当前用户会话)的方式,公开客户端ID /秘密

以下是您可以实现的一些想法,

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

喜欢 appA.domain.com appB.domain.com   然后,在成功进行身份验证后,您可以在父域 * .. domain.com 中设置一些会话标识符cookie  然后从appB您可以获得当前用户会话,您也可以从中获取accessToken。

如果两个应用程序位于不同的域,则

你需要有一些普通的auth服务器来维护会话,所以当appA加载并找不到可用的会话时,它可以重定向到普通的auth服务器,后者依次检查会话(如果没有让用户登录)然后发送数据回到appA

同样的流程适用于appB。

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