2017-04-26 15 views
6

複数のドメインにまたがって複数のウェブアプリが動作しています。シングルサインオンを実装して、ユーザーが一度サインインしてすべてのアプリにアクセスできるようにしたい。NodeJSでシングルサインオンを行うにはどうすればいいですか?

どうすれば実装できますか?すべてのアプリはNodeJSバックエンドを使用します。

正しい方向の一般的なポインタは大歓迎です。

答えて

9

あなたのアプリケーションは異なるドメインで動作しているため、クライアントマシン上で実行されているAPPS間でクッキーを共有してユーザーを検証することはできません。したがって、何らかの形で情報をサーバー側で共有する必要があります。

  1. IS-私の心に来る 最も簡単な解決策は、すべてのサーバの共有セッションを持っています。

  2. ハバ固有の認証ドメインであり、認証が必要な場合はいつでもユーザーをリダイレクトします。そこでユーザーを認証し、必要なセッションクッキーまたはトークンを設定します。

  3. あなたのアプリケーションに認証が必要な場合は常に、認証ドメインにリダイレクトしてください。認証Cookieは、認証ドメインと参照ドメインに配信されます。あなたがすでに検証されていることを確認すると、認証サーバーは適切なsessionIDを持つ元のアプリケーションにリダイレクトできます。このセッションIDは、そのドメインのCookieとして設定されます。

  4. 認証されていない場合、認証サーバで認証を要求され、リダイレクトが行われます。

  5. ほとんど変更を加えずに、トークンを使用して、共有セッションを必要とせずにこれを実現できます。

実装する前に状態を正しく検証してください。あなたのメカニズムの状態が多くなると、バグや攻撃の可能性が増します。
同じサブドメイン上でアプリを移動することを検討してください。認証メカニズムが同じ場合、誰もがすべてのアプリが同じ会社に属していることを知っています。すべての異なるドメインを覚えておくよりも、同じドメイン上のさまざまなサブドメインを覚えやすくなります。

1

最もよく使われているプロジェクトは、私が使っている唯一のものであるhttp://passportjs.org/です.ADFSやgoogle、facebookのようなサードパーティ製のもののような前提のソリューションには偉大なコネクターがあります。

関連する問題