2

我有 3 个应用程序需要使用 SSO、https 和设计进行身份验证的组合相互通信。我想弄清楚的是如何在一个 Rails 应用程序上执行登录并让相关的(cookie、会话等)沿着链传递,以便外部 Web 浏览器可以查看信息。

这是3个应用程序的流程。

  • 第一个应用程序是WEB PORTAL。它将一堆 sso(单点登录)相关的字符串发送到 api。
  • 第二个 API_APP 应用程序验证信息并将其传递给 rails 应用程序。
  • 此 RAILS_APP 应用程序验证 api 的信息并使用 devise 的“sign_in_and_redirect”辅助方法登录用户

现在这是棘手的部分。如何将信息从 RAILS_APP 沿链传递回 WEB_PORTAL 以便它可以查看门户网站可以查看已登录的用户帐户?


更多信息:

我承认架构不太理想,但不幸的是目前无法更改。WEB_PORTAL 实现并不那么重要,但我认为 API_APP 需要一些工作。

API_APP 将信息格式化为网络 http 请求,如下所示

uri = URI.parse(MY_RAILS_APP_URI)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' =>'application/json'})
request.body = {"email" => email, "id" => id, "email" => email, "timestamp" => timestamp, "token" => token}.to_json
response = http.request(request)
location = response.header['location'] #if the RAILS_APP returns a 302

关于如何让 WEB_PORTAL 登录的任何想法?

4

1 回答 1

0

通过将我的 cookie 设置为包含所有子域,我解决了类似的问题。我不知道这对你来说是否可行。我让 foo.example.com 与 bar.example 和 www.example.com 共享 cookie 信息。我相信也可能适用于您的情况。

于 2013-02-01T16:11:41.163 回答