共有クロスドメインログインシステムの実装方法、およびベストプラクティスとセキュリティ予防策に関心があります。37Signalsに精通している場合は、共有ユニバーサル認証メカニズムを使用することに慣れているため、別の製品へのトップレベルナビゲーションを使用する場合、後でログインする必要はありません。同様の方法で何かを実装したいと思います。オンラインで見つけた最も近いものは、中央認証サービスのWikipediaエントリですおよびクロスドメインログイン-あるドメインから別のドメインに移管されたときにユーザーを自動的にログインする方法。この場合は少し異なる場合があります。セッションCookieを調べて、プロセスで何をしているかを把握しました。最初に、各製品リンクには「goto」uristubがあります。例:https://MY_COMPANY.campfirenow.com/id/users/[int_identifier]/gotoFirebugとFirebugの[NET]タブを使用すると、設定されているCookieとプロセスで発生するリダイレクトを確認できます。urlは次への302リダイレクトを実行します。gotoセッションIDが再作成されます。これはおそらくCSRFの目的のためです。Cookie内のデータの一部とGETパラメーターsigは、base64_decodeを使用して次のように部分的に復号化されました。"エンコードによりコードブロックが壊れています。1Qのキーは、「別の製品へのトップレベルナビゲーションを使用する場合、その後ログインする必要はありません」と書く場所だと思います。site1.comからsite2.comに移動して、site1.com経由でログインしたユーザーであることをsite2.comに知らせたい場合。Cookieは異なるドメイン間で共有できないため(サブドメイン以外ですが、サブドメインについては話していないと思います)、リンク上の情報をsite2.comに渡す必要があります。あなたがどんなユーザーであるかを知っています。バックエンドDBにユーザーテーブルがあり、ユーザーが何らかのIDを持っているとします。ここで、ユーザーがsite1.comで認証され、DBからのユーザー123であると仮定します。123を呼び出すことです。site2にこのIDをチェックさせ、これが実際に彼であることをユーザーに「信じ込ませる」。123でリンクを作成するか、他の値を試すことができます。site2.comはそのユーザーとして彼を受け入れます。解決策:推測可能なIDを使用できない-15e5-11e0-ac64-0800200c9a66。新しい問題:誰かがあなたのユーザーのGUIDを推測することはほとんどありませんが、このリンクを見る中間者によってGUIDがハイジャックされる可能性は非常に低く、誰かが永遠に使用できるGUIDを取得します。解決策:サーバーに保存された秘密鍵を使用して、次のデータ項目、現在のタイムスタンプ、宛先サイト(つまり「site2.com」)を含む文字列に署名します。「これは、このリンクがこのドメインによって認証されるこのGUIDを持っているユーザーに対して、指定された時間にサイトによって作成された証拠です」、タイムスタンプとGUIDとともにsite2.comに送信します。これで、site2.comがリンクを取得すると、適切に署名されていることを確認できます。中間者または元のユーザーが何らかの方法(時間またはGUIDの変更)で変更しようとすると、署名は一致しません。comはユーザーの認証を拒否します。最後の問題:リンクが仲介者によってインターセプトされた場合、他のマシンからのリンクであれば仲介者が使用できます。解決策:渡されたパラメーターにナンスを追加します。ナンスは単なる乱数であり、認証システムはこの番号での認証を2回以上許可しないようにする必要があります(したがって、N(umber)-ONCEと名前を付けます)。これは、site2.comにつながるsite1.comで作成する各リンクには、後の検証のためにバックエンドに保存する必要がある個別のノンスが必要であることを意味することに注意してください。このノンステーブルに永久にレコードを追加したくないので、そのようなリンクは作成後のある一定の時間のみ有効であると判断するのが習慣です。したがって、この制限時間よりも古いナンスレコードを作成できます。これがあなたが探しているアウトラインであることを願っています。私が何かを見逃した可能性はありますが、それらは基本的なガイドラインであり、署名を使用してリンク内のデータの信頼性を証明し、ナンスを使用して仲介者の攻撃を防ぎます。可能であれば、これらのリンクにHTTPSを使用することもお勧めします。2スタックオーバーフローのようなグローバルネットワーク自動ログインソリューションの実装を試みることができます。Montroseによるすばらしい実装に関する洞察に満ちた投稿がここにあります。localStorage、Javascript、Iframe、および多くのセキュリティチェックが必要ですが、それだけの価値があると思います。3facebook/yahoo/gmail/openIDソリューションを使用するオプションをユーザーに許可します始まりですが、それは自分のソリューションを実装または使用するソリューションを完全に解決するものではありません。d少し調整を加えます。認証時に、ユーザーIDとともにトランザクションテーブルに格納されるランダムコード(GUID値の場合がありますが、ユーザーごとに静的ではない)を生成します。このコードには最大有効期間があります(その期間の安全値を判断する必要があります)。このコードは、理想的にはユーザー名でハッシュ化するか、暗号化してURLの一部として送信します。4チャールズのようなものをやり取りして、やり取りするものを探そうとしましたか?あなたのために物事をさらに分解できるかもしれません。FlipScriptで言及されているように、おそらくOAuth/OpenIDを使用することはあなたにとって前進の方法かもしれません。http://www.jasig.org/casをご覧ください。私はそれがあなたが望むことをするだろうと思う。オープンソースであり、複数の認証ソースを使用して複数のドメイン/言語から認証できるようにするためのプラグインがいくつかあります。wcfサービスはSOAPUIで機能しません。