0

異なるドメインにある 2 つの異なる Web アプリケーションにシングル サインオンを実装しようとしています。

  1. WebApplication 1 (これは、ユーザーがログインするフロント エンドとして機能します)

  2. Web アプリケーション 2

基本的な使い方の考え方は

  1. WebApplication 1 のログイン画面からユーザーがサインインする

  2. ユーザーが WebApplication 1 のリンクをクリックすると、再度サインインせずに WebApplication 2 へのポップアップ画面が開きます

これを実現するために、Web アプリケーション 1 データベースから Web アプリケーション 2 データベースにユーザー アカウントとグループ アカウントを同期するために 1 時間ごとに実行される ETL スクリプトを作成しました。

質問

  1. 1 時間ごとにユーザー アカウントを同期するスクリプトを作成するよりも、シングル サインオンを実現するためのより良い方法はありますか?

  2. .net フレームワーク 4.5 に組み込まれている新しいテクノロジ コール WIF (Windows Identity Foundation) を読みましたが、これは上記の問題を解決するのに役立ちますか?

4

1 に答える 1

1

サーバーのオーバーヘッドになるため、1 時間ごとにスクリプトを実行することはお勧めできません。

別のドメインでシングル サインオンを実現するのは少し難しいかもしれませんが、実際には不可能ではありません。異なるドメイン間で Cookie を共有できないという理由だけで難しくなります。したがって、シングル サインオン用に 1 つの異なるサーバーを使用できます。

  1. ユーザーが Web アプリケーション 1 にアクセスすると、ユーザーを SSO サーバーにリダイレクトします。
  2. ユーザーが SSO サーバーにリダイレクトされたら、Cookie が存在するかどうかを確認します。初めての場合、Cookie は存在しないため、SSO サーバーでホストされているログイン ページを表示します。
  3. ユーザーから資格情報を取得した後、ユーザーを検証します
  4. ユーザーが有効な場合は、トークンを生成します。このトークンは、一意の 16 進数またはタイムスタンプのハッシュにすることができます。
  5. このトークンを SSO サーバーの Cookie に設定し、ユーザーを元のサイトまたは成功ページにリダイレクトします。
  6. ユーザーが Web アプリケーション 2 にアクセスすると、ユーザーを SSO サーバーに再度リダイレクトします。
  7. ユーザーが SSO にアクセスしたら、Cookie を確認します。Cookie が存在し、有効期限が切れていない場合は、ログイン資格情報を再度要求せずにユーザーを成功ページに直接リダイレクトするか、ログイン ページを表示してドリルを再度実行します。

別のサーバーでユーザーをリダイレクトしているため、そこに「SSOcookie」という一般名で Cookie を設定し、別のアプリケーションからアクセスするたびに同じものにアクセスできます。これにより、異なるドメインのシングル サインオンを実現できます。

于 2015-10-30T04:53:46.383 に答える