111

当社は複数のドメインを設定しており、各ドメインで1つのWebサイトがホストされています。現時点では、各ドメインにはCookieを介して行われる独自の認証があります。

あるドメインにログオンしている誰かが他のドメインから何かにアクセスする必要がある場合、ユーザーは他のドメインにある他のWebサイトで別の資格情報を使用して再度ログインする必要があります。

この煩わしさを解消するために、シングルサインオン(SSO)に移行することを考えていました。私はこの点に関して経験がないので、これをどのように達成できるかについてのアイデアをいただければ幸いです。

ありがとう。

編集: Webサイトは、インターネット(外部)サイトとイントラネット(内部-社内で使用される)サイトが混在しています。

4

4 に答える 4

92

ここで実装したSSOソリューションは次のように機能します。

  1. ログインを管理するスクリプトmaster_login.phpを持つマスタードメインlogin.mydomain.comがあります。
  2. 各クライアントドメインには、スクリプトclient_login.phpがあります
  3. すべてのドメインには、共有ユーザーセッションデータベースがあります。
  4. クライアントドメインでユーザーのログインが必要な場合、クライアントドメインはマスタードメイン(login.mydomain.com/master_login.php)にリダイレクトします。ユーザーがマスターにサインインしていない場合、マスターはユーザーに認証を要求します(つまり、ログインページを表示します)。ユーザーが認証されると、データベースにセッションが作成されます。ユーザーがすでに認証されている場合は、データベースでセッションIDを検索します。
  5. マスタードメインは、セッションIDを渡してクライアントドメイン(client.mydomain.com/client_login.php)に戻ります。
  6. クライアントドメインは、マスターからのセッションIDを保存するCookieを作成します。クライアントは、セッションIDを使用して共有データベースにクエリを実行することにより、ログインしているユーザーを見つけることができます。

ノート:

  • セッションIDは、RFC4122のアルゴリズムで生成された一意のグローバル識別子です。
  • master_login.phpは、ホワイトリスト内のドメインにのみリダイレクトされます
  • マスターとクライアントは、異なるトップレベルドメインに存在できます。例えば。client1.abc.com、client2.xyz.com、login.mydomain.com
于 2008-09-05T00:07:43.280 に答える
33

車輪を再発明しないでください。JOSSO、OpenSSO、CAS、Shibboleth など、オープン ソースのクロスドメイン SSO パッケージが多数あります。(IIS、AD) 全体で Microsoft テクノロジを使用している場合は、代わりに Microsoft フェデレーション (ADFS) を使用できます。

于 2008-09-15T16:52:39.813 に答える
15

ホスト名の違いは?

これらのホストは Cookie を共有できます。

  • mail.xyz.com
  • www.xyz.com
  • logon.xyz.com

しかし、これらはできません:

  • abc.com
  • xyz.com
  • www.tre.com

前者の場合、Cookie ベースのソリューションを思いつくことができます。GUID とデータベース セッション テーブルを考えてみてください。

于 2008-09-04T19:38:10.307 に答える
2

Active Directoryを使用する場合、各アプリに認証にADを使用させることができ、ログインはシームレスになります。

それ以外の場合、アプリケーションがバックグラウンドで相互に通信できる場合は、セッションIDを使用して、1つのアプリでID生成を処理し、他のすべてのアプリケーションにサービスを提供できます。

于 2008-09-04T19:12:19.823 に答える