2

SQL Server を使用して独自のロール プロバイダーを利用し、Windows Identity Foundation を利用して、Active Directory を使用してメンバーシップを処理するセキュア トークン サービスを提供する一連の Web アプリケーションを構築しています。このソリューションは、シングル サインオンの利点も提供します。1 つの見落としは、ユーザーに 1 つのセッションしか許可しないことでした。ユーザーがすでにアクティブなセッションを持っているかどうかを追跡することは、実装するのに十分簡単に​​思えます。それは、ユーザーが他の場所で既にログオンしていると判断された場合に、ユーザーのセッションをどのように処理するかです。

私の質問は、ユーザーが追加のセッションを生成しようとした場合に、既存のユーザー セッションを強制終了するための推奨される方法は何ですか? また、既存のセッションが検出され、続行すると既存のセッションが終了することをユーザーに通知します。(この部分も些細なことに思えます…)

2 つの Web アプリと STS Identity アプリを使用したシナリオ例:

  • ユーザーがアプリケーション A へのアクセスを試みます。
  • STS ID 拡張機能は、ユーザーがまだログオンしていないことを確認し、クレームを提供して、ユーザー/セッション ID をキャッシュします。
  • ユーザーは、別のコンピューターでアプリケーション B にアクセスしようとします。(同じセッションを使用している場合、アプリケーション B にアクセスできます)
  • STS ID は、ユーザーがアクティブなセッションを持っていると判断し、ログオンを拒否します。

たとえば、克服すべき他の発行者がいるようです…。

  • ユーザーがアクティブにセッションを維持している場合に、アプリケーション A からログオン ユーザー キャッシュを更新する方法。
  • ブラウザを閉じたり、セッションがタイムアウトしたりして、明示的にログオフしていないユーザーにどのように対処しますか。
  • その他の問題???

任意のガイダンスをいただければ幸いです。

4

1 に答える 1

2

ユーザーのセッション ID を格納する単純なテーブルを使用して、アプリケーション レベルで同時実行を処理することを選択しました。アプリケーションの新しいセッションが別の場所で作成された場合、既存のセッションは終了し、ログイン ページにリダイレクトされた理由を示すメッセージ (クエリ文字列に含まれる) を使用して STS にリダイレクトされます。

于 2012-08-10T12:32:12.763 に答える