小さな問題があります。
複数のドメインにCookieを設定するにはどうすればよいですか?
私はセキュリティの問題を理解していますし、それは以前に行われたと確信しています。この理由はSSOです。
すなわち。
account.domain.com
はログインするドメインを設定する必要があります:
domain.com、domain1.com、domain2.com。
PHPとcookie、または他の代替手段を使用して、簡単な方法はありますか?
Domain.comがdomain1.comのCookieを設定する方法はまったくありません。あなたがやろうとしていることは、ユーザーのブラウザに各ドメインにリクエストを送信させ、それが独自のクッキーを設定することによってのみ解決できます。
次に、各ドメインがユーザーのIDを確認する方法が必要です。これには2つの方法があります。
それは本当にかなり複雑です。自分でロールバックしないことをお勧めします。私が説明しているもののPHP実装については SimpleSAMLPHP を見てください。
これは、マスターのように動作するドメインとスレーブのように動作するドメインを介して実行できます。
ドメインaccounts.domain.comがあり、それがマスターだとします。
次に、スレーブdomain.com
、something.com
、およびanother.com
があります。
Domain.comにログオンすると、実際にはサイトaccounts.domain.com
になり、ブラウザに一意のIDが設定されたCookieが取得され、domain.comのログオン後のページにリダイレクトされますランディングページ(つまり、domain.com/logon?check=true&unique-id=<browser unique id>&request-id=<unique request ID>
)。ランディングページはaccounts.domain.com
にアクセスし、ブラウザIDでクエリします。トランザクションに問題がなければ、domain.com
からログオンCookieを取得します。
次に、すべてのドメイン(domain.com
、something.com
、another.com
)がaccounts.domain.com/roaming-check?return-url=<URL the redirect was initiated from>
に最初にリダイレクトされます。私たちは家に戻るため(すでにaccounts.domain.com
にログオンしています)、ランディングページ(<domain name>.com/logon?check=true&unique-id=<browser unique id>&request-id=<unique request ID>
)に再度リダイレクトされ、ここからはログオンした部分と同じになります。私たちはシームレスに別のドメインにローミングします(ブラウザーは通常、ヘッダーのsend(server)/ receive(browser)セクションを通過するまでリダイレクトされたページを表示しないため、ユーザーには知らされません)。
実際にアクティブなログオンがない場合、サイトはこの「ネガティブログオン」をセッションに保存し、ログオンの確認を試みません(ログオンまたは別のドメインのロードを試みるまで)。
あなたがしようとしていることはできません。 (これはブラウザのセキュリティ問題であり、PHP 1つではありません。)
何らかのオフサイト認証を使用する以外に、最も近い方法は、サブドメイン間でCookieにアクセスできるようにすることです。この場合、PHPの set_cookie 関数のオプションの「ドメイン」引数を使用するだけです。
このソリューションはあなたのニーズに合うと思います: " PHPのシンプルなシングルサインオン "