共有クロスドメインログインシステムの実装方法、ベストプラクティスとセキュリティ上の予防措置に関心があります。 37Signalsに精通している場合は、普遍的な共有認証メカニズムを使用することに慣れているため、トップレベルのナビゲーションを別の製品に使用するとログインする必要はありません。同様の方法で何かを実装したいと思います。複数のドメイン間で共有ログインサービスを作成するにはどうすればよいですか?
私がオンラインで見つけた最も近いものは、Central Authentication ServiceにあるWikipediaのエントリと、Cross Domain Login - How to login a user automatically when transfered from one domain to anotherへの応答です。この場合、若干異なる場合があります。
私はセッションクッキーを検査して、そのプロセスで何をしているのか把握しています。最初は、各製品のリンクは「後藤」uristub、すなわちありますFireCookieとFirebugのでNET]タブを使用して
https://MY_COMPANY.campfirenow.com/id/users/[int_identifier]/goto
を、私は設定されているクッキーとリダイレクトを見ることができますよそのプロセスで発生します。セッション識別子が再作成され
https://MY_COMPANY.basecamphq.com/login/authenticate?sig=[BASE64_ENCODED_AND_ENCRYPTED_DATA]
、CSRFの目的のために最も可能性が高い:goto
urlは302リダイレクトへを発射します。クッキーのデータだけでなく、GETパラメータsigのいくつかの部分的に以下にBASE64_DECODEを使用して解読された:
// sig GET param
array(2) {
[0]=>
���ף�:@marshal_with_utc_coercionT7�z��<k��kW"
[1]=>
string(18) "���k�<kn8�f���to��"
}
// _basecamp_session cookie session param
string(247) {
:_csrf_token"1Sj5D6jCwJKIxkZ6oroy7o/mYUqr4R5Ca34cOPNigqkw=:session_id"%060c0804a5d06dafd1c5b3349815d863"
flashIC:'ActionController::Flash::FlashHash{:
@used{: auth{"
MY_COMPANY{:
user_idi�3
:identity_idi�W����������s�]��:�N[��:
߾」
エンコードは、コードブロックを壊しているおかげ。あなたの助けのために!
OpenID、Facebook、OAuth、Googleなどのパッケージ化された共有ログインサービスはあなたのために機能しますか?または、あなた自身の共有ログインサービスが絶対に必要ですか? – Flipster