如何使用rails将devise sign_in信息传递到不同的应用程序中

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

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

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

现在这是一个棘手的部分。 如何将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信息。 我相信,也可能在你的情况下工作。