2

SSO、https、および認証用のデバイスの組み合わせを使用して相互に通信する必要がある 3 つのアプリケーションがあります。私が理解しようとしているのは、1 つの Rails アプリケーションでサインインを実行し、関連する (Cookie、セッションなど) をチェーンに渡して、外部の Web ブラウザーが情報を表示できるようにする方法です。

以上が3つの申請の流れです。

  • 最初のアプリケーションは WEB PORTAL です。一連の sso (シングル サインオン) 関連の文字列を API に送信します。
  • 2 番目の API_APP アプリケーションが情報を検証し、Rails アプリケーションに渡します。
  • この RAILS_APP アプリケーションは、API の情報を検証し、devise の「sign_in_and_redirect」ヘルパー メソッドを使用してユーザーをサインインします。

ここがトリッキーな部分です。RAILS_APP からの情報をチェーンに沿って WEB_PORTAL に戻して、Web ポータルを表示し、サインインしているユーザー アカウントを表示するにはどうすればよいですか?


いくつかの詳細情報:

アーキテクチャが理想的ではないことは認めますが、残念ながら現時点では変更できません。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 に Cookie 情報を bar.example および www.example.com と共有させました。あなたの場合にもうまくいくかもしれません。

于 2013-02-01T16:11:41.163 に答える