クロスメインドメイン、SSO実装のアイデア
同じメイン ドメイン (つまり、同じ第 1 レベル ドメイン名の下にあるすべてのサブドメイン名) の下にある複数のサーバー間で SESSION データを共有する方法はたくさんあるので、ここでは詳しく説明しません。
現在の重要な問題は、さまざまなメイン ドメインでの SSO の実装です。この問題は比較的複雑で実装可能ですが、その多くはいくつかの特別なソフトウェア システムによってサポートされています。 。 。
実際、SESSION をサポートするには COOKIE も必要です。COOKIE はクロスメイン ドメインをサポートしていません。つまり、SESSION はメイン ドメインを越えることができません。では、クロスメインドメインを実現するにはどうすればよいでしょうか? ? ?
これは、プロジェクトで SSO を実装するときに、みんなで議論するために突然思いついたもう 1 つの簡単な方法です
1. 3 つの主要なドメインがあると仮定します。そのうちの 1 つは、A.COM、B.COM、C.COM です。 A.COM は主にパスの検証を担当し (速度は比較的速い)、B.COM と C.COM は特定のアプリケーションであり、A.COM 独自のアプリケーションの一部も同様です。 、信頼 (ログイン) を得るには、A. COM にアクセスする必要があります
3. サブドメイン Passport.B.COM と Passport.C.COM を各メイン ドメインに割り当てます。それらの IP は、A.COM が配置されているホスト アドレスを指します。
4. ユーザーはログインします。 検証に合格した後、パラメータとして session_id を使用して、passport.B.COM、passport.C.COM に 1 つずつジャンプするジャンプ ルールを設定します (実際、これらのサブドメインは配列といくつかのパラメータを介して、ホスト A のデフォルト サイトに確立されます) 1 つずつすばやくジャンプできます)、PHP の header("Location:passport.B.COM/?sid=xxxxxxxx&i=0"); を使用して直接ジャンプできます。ジャンプすると、現在のメインドメインの session_id が渡されます。
以下にいくつかの考慮事項があります:
1. 各パスポートの割り当て。 。 。
2. 同じホスト上でジャンプすると、ジャンプの失敗につながる中間ジャンプ リンクのエラーを回避できます。
ローカルのシミュレートされたマルチマスター ドメインでのみテストしましたが、効果は良好です。インターネット ネットワークではまだテストしていません。時間があるときに試して、より良い SSO ソリューションを考えてください。 .
http://www.bkjia.com/PHPjc/735114.html