私は現在、example1.comとex.example2.netの異なるドメインで2つのWebアプリに参加しようとしています。これにより、example1にログインし、example2へのリンクをクリックして、すぐにサインインできます。一度ログインするだけで、サイト間を移動できます。
私はさまざまな手段を研究してきました。phpセッション、openID、JOSSO、Kerberosですが、これを実装するための安全で簡単な方法は何でしょうか?
私は現在、example1.comとex.example2.netの異なるドメインで2つのWebアプリに参加しようとしています。これにより、example1にログインし、example2へのリンクをクリックして、すぐにサインインできます。一度ログインするだけで、サイト間を移動できます。
私はさまざまな手段を研究してきました。phpセッション、openID、JOSSO、Kerberosですが、これを実装するための安全で簡単な方法は何でしょうか?
Kerbrosは非常に広範囲であり、高度なセキュリティを必要とするシステム向けです。作業が非常に難しく、全体をセットアップするだけでも、Linuxをよく知っていて、ホスティングプロバイダーがマシンを介したそのタイプのアクセスを許可している場合を除いて、このルートをお勧めしません。
ただし、JOSSOまたはopenIDに精通していないため、これらについて十分にコメントすることはできません。
すべてのphpセッションはドメインにのみ有効であり、ドメインが存在するサーバーはCookieのようなものですが、すべてでは使用しません。
2つのサイトが同じホスティングアカウント/サーバー上にある場合は、最も簡単な解決策だと思います。この原因に固有のデータベースを用意することです。通常どおりにログインシステムを作成しますが、代わりに2つのサイトでこのログインを読み取ります。通常のログインの他に、セッション追跡テーブルもあります。通常、ユーザーがログインしたときにセッションを設定してログインを維持します。ここでも同じことを行いますが、両方のサイトが認識して追跡できるこの新しいテーブルのエントリを比較するために使用できる方程式にCookieを追加します。あなたのユーザー。IP、ブラウザ、そしておそらくuserIDを、サーバーだけがユーザーのために持っている情報に基づいて再作成できるものに基づいた、ユーザーに固有のある種の一意のハッシュを含む1つのCookieで試してみてください。
もちろん、私はそれを概念的な話で呟きます、それは私がそれを理解するより少し精巧です、しかしこれはあなたの一般的な足がかりになるでしょう。
また、サイトが互いに独立している場合は、いつでもサイト間にAPIを作成して、JSONPスタイルで情報をやり取りできるため、一方がログインのハブとして機能し、もう一方が検証するだけです。
しかし、全体として、どのように、いつ、どこで、何をしたいのかなどに依存します。
それがあなたのために働くなら、私の提案はopenIDルートに行くことです。これは簡単な方法であり、十分に安全です。さらに、登録プロセスはユーザーにとっても簡単かつ迅速です。
実際には、必要に応じて、サインインドメインからのIDのみを許可できるため、ほぼ「プライベート」ログインシステムになります。
欠点もあります...登録プロセスを細かく制御できず、openID認証プロセスに依存しています...ホストが適切に構成されていない場合に発生する可能性のあるいくつかの問題があります(たとえば、タイムゾーンの違い) 。
しかし、全体として、これは比較的安全なシステムであり、実装が簡単です。
Kerberusは非常に安全ですが、作業するのは悪夢です。クレジットカード番号などの機密性の高いユーザー情報を扱っている場合や、Webサイトがハッキングの標的になっていると思わない限り、時間をかける価値はないと思います。
PHPセッションを使用して、1つのアプリケーションで両方のサイトのログインを処理することができます。
example1.comユーザーがログインし、phpセッションCookieが保存されます。
ex.example2.net example1.comを確認し、セッションCookieを検証します。存在しない場合は、example1.comログインページまたはexample1.comのカスタムログインページにリダイレクトしてください。存在する場合は、ユーザーをex.example2.netにログインします。
リンクのみが必要な場合は、ハッシュを生成し、最初のアプリにログオンしたら、それを2番目のアプリに渡します。ハッシュが検証されたら、ログインします。
2つのサイト間で共有されるデータベーステーブルを使用します。PHPセッションルートをたどる場合は、セッションデータを別のドメインのあるサイトから次のサイトに渡そうとしないでください。機能しません。この投稿は何ヶ月も前に役に立ちました:複数のドメインにわたるシングルサインオン