複数のドメインにわたるシングルサインオン[終了]


110

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

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

この手間を省くことができるように、シングルサインオン(SSO)に移行することを考えていました。私はこの点についての経験がありませんので、これがどのように達成されるかについてのアイデアをいただければ幸いです。

ありがとう。

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


これはOpenIDの仕事のように聞こえますが、サインインドメインからのIDのみを許可します。
Neall 2008

2
@Willこの質問はSEネットワークのこのWebサイトに関するものではないかもしれませんが、間違いなく建設的です。
Binar Web

@BinarWeb Closeの理由は2008年以降進化しています。当時、これは最も適切な選択でした。

回答:


91

ここで実装した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は、RFC 4122のアルゴリズムで生成された一意のグローバル識別子です。
  • master_login.phpは、ホワイトリストのドメインにのみリダイレクトします
  • マスターとクライアントは、異なるトップレベルドメインに配置できます。例えば。client1.abc.com、client2.xyz.com、login.mydomain.com

これは良い解決策のように見えます。データベースには何を格納していますか?(session_id、username、hashed_pa​​ssword)ですか?
Jon M

3
マスタードメインlogin.mydomain.comがダウンした場合の処理​​方法を教えてください。その時点ではログインできませんか?
jjxtra 2011年

3
任意の組織が任意のコード例またはgithubリポジトリを作成しましたか?
Joshua F. Rountree、2012年

これは、ほぼすべてのSSOプロトコル(SAMLなど)で指定されていますが、リプレイ攻撃などに対するセキュリティが強化されています。
cweiske 2012年

2
ユーザーデータベースを共有しない場合はどうなりますか?各パートナーWebアプリには、独自のユーザーベースがあります。どうやってこれに遭遇するのですか?
stuckedoverflow 2014年

33

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


4
絶対に-私は、あまりにも多くの人々は、彼らだけが再生するに脆弱であることを発見するために、独自のセキュリティソリューションをロールXSRFやその他の攻撃を見てきました

5
+1セキュリティホイールを再発明すべきではありません。
マークE.ハース

13
OpenSSOは廃止され、JOSSOとCASはJAVAソリューションです。ただ
参考までに

15

ホスト名はどのように異なりますか?

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

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

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

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

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


2

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

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


2
ユーザーがこのセッションで初めてこれらのサイトにアクセスしたときに、domain1.com、domain2.com、domain3.comでユーザー名とパスワードを入力する必要はありませんか?
HaBo 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.