ruby-on-rails - 如何使用 rails 将设计登录信息传递到不同的应用程序

标签 ruby-on-rails ruby api devise single-sign-on

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

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

  • 第一个应用程序是一个门户网站。它发送了一堆与sso(单点登录)相关的 字符串到 api。
  • 第二个 API_APP 应用程序验证信息并通过 它到一个 Rails 应用程序。
  • 此 RAILS_APP 应用程序验证 api 的信息并使用 devise 登录用户 “sign_in_and_redirect”辅助方法

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


更多信息:

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

API_APP 像这样将信息格式化成一个 net 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 有什么想法吗?

最佳答案

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

关于ruby-on-rails - 如何使用 rails 将设计登录信息传递到不同的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14648859/

相关文章:

javascript - Ruby on Rails 教程中显示的销毁操作结果

python - 哪个键/值存储最有前途/最稳定?

ruby - 无法在 Redhat Linux 服务器上安装 RVM

api - 使用通用搜索 api 实时监控 Twitter 主题标签?

ruby-on-rails - 如何在 Ruby on Rails 中使用字符串访问实例关系?

mysql - rails : Find all children from the same generation

ruby-on-rails - Rails 中有条件地更改 link_to 位置的简洁方法

Polarion ALM的API有时不授权任何请求

javascript - 使用 API 查明用户在 Instagram 上的个人资料是公开的还是私有(private)的?

ruby-on-rails - 如何将当前记录 ID 作为 Rails 中的隐藏字段传递?