我有 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/