2012-08-08 75 views
2

我們正在構建一組Web應用程序,這些應用程序都使用自己的獨特角色提供程序,使用SQL Server並利用Windows Identity Foundation提供Secure Token服務來處理成員資格使用Active Directory。該解決方案還提供了單點登錄的好處。一次監督只允許用戶進行單一會話。跟蹤用戶是否已經擁有活動會話似乎很容易實現,如果確定用戶會話已經在其他地方登錄,那麼該如何處理用戶會話。使用WIF安全令牌服務將用戶的asp.net會話限制爲1

我的問題是如果用戶試圖產生一個額外的會話,殺死現有用戶會話的推薦方法是什麼?還想建議用戶已經檢測到現有會話,並繼續,現有會話將被終止。 (這部分也似乎微不足道...)

示例方案2的網絡應用程序和一個STS身份應用程式:

  • 用戶試圖訪問應用程序A:
  • STS身份分機確定用戶尚未登錄,提供聲明並緩存用戶/會話標識符。
  • 用戶嘗試訪問不同計算機上的應用程序B. (如果使用相同的會話,他們可以訪問應用程序B)
  • STS身份確定用戶具有活動會話並拒絕登錄。

似乎還有其他發行人要克服,例如...。

  • 如何在應用程序A中更新已登錄的用戶緩存(如果用戶正在主動保持其會話存活)。
  • 你如何處理用戶沒有明確註銷,通過關閉瀏覽器或會話超時說。
  • 其他問題???

任何指導,將不勝感激。

回答

2

我們選擇使用存儲用戶會話標識的簡單表來處理應用程序級別的併發性。如果在其他地方創建了應用程序的新會話,則現有會話將被終止,同時使用被重定向回STS的消息(攜帶在查詢字符串中),將其重定向回登錄頁面的原因。