1

複数の Web サイト (sitea.com、siteb.com、sitec.com) に対してシングル サインオンを作成したいと考えています。すべてのサイトは同じ会社のものです。どのデータベースも同じ会社/場所にあります。一部は asp.net Web アプリで、一部はフォーラムです。SSO を抽象化して、1 つのサイトに絡まらないようにしたいと思います。以下に私のアプローチの概要を示します。

  1. ユーザーは、ユーザーを認証する sitea.com にサインインします。sessionid は、sitea.com によって作成されます。
  2. ユーザー名とセッション ID とともに Cookie がユーザーのマシンに配置されます。sessionid は、すべてのサイトがアクセスできるデータベース centralAuthDB に挿入されます。
  3. ユーザーは、siteb.com (フォーラム) への SSO を行う sitea.com のリンクをクリックします。
  4. siteb.com は、Cookie からユーザー名とセッション ID を取得します。その後、siteb.com はこれらの資格情報を centralAuthDB に対してチェックします。
  5. centralAuthDB との照合が行われ、SSO が認証されます。ただし、フォーラム (siteb.com) にも独自のユーザー データベースがあります。ユーザー名もこのデータベースでチェックされ、ユーザーはフォーラムにシームレスにログインできるようになりました。

上記は安全で実用的ですか?

認証情報を webservice 経由で centralAuthDB に送信する必要がありますか?

クッキーには一般的な名前が必要ですか? 次に、ユーザー名とセッション ID の値がこの Cookie に配置されますか?

4

1 に答える 1

0

SSO では、資格情報を受け取り、安全な認証トークンを生成するサービスが必要になります。トークンは、偽造できないように暗号化する必要があります。認証サービスだけがそれを解読して有効性をチェックできます。次に、そのトークンを任意の場所 (おそらくクエリ文字列) に渡すことができます。ホスト名を越えてアクセスできないため、Cookie は除外されます。

あなたの質問に対するコメントで述べたように、この問題に対する既存の解​​決策を調査す​​ることが賢明です。あなたや私よりもはるかに賢い人たちが、そのようなシステムのすべての問題を解決するために何千時間もの工数を費やしてきました。

私自身の個人的な選択は、私が最もよく知っている実装であるため、OAuth です。また、Facebook がトークンに正確に何が含まれているかについてのアイデアを認証する方法を確認することもできます。

于 2012-11-10T04:40:19.413 に答える