我正在尝试为父/子关系提供适当的OAuth2身份验证流程
App-A和App-B是两个独立的应用程序。点击来自App-A
的链接后,App-B
会在iframe中打开App-A
。
我负责维护App-B
。
如何以某种方式设计流程,以便App-B
识别来自App-A
的用户并在两者之间保持相同的会话申请?
这是我到目前为止所提出的流程:
App-A
会在互动之前向App-B
提供客户ID和密钥。
用GET /person
向App-B
的{{1}}端点发出请求。
parentId
然后会向App-B
服务器发送一个请求,其中客户端ID,密钥和App-A
设置为redirect-url
。
现在GET /person
将发送给App-A
以传递经过身份验证的用户的会话信息。
如果流程没有意义,你可以摆脱它
答案 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/