我們使用WSO2 IS作爲我們的企業身份平臺。出於安全原因,我們的一名租戶必須限制每個用戶的併發會話數。
預期的行爲如下:當用戶登錄時,如果他/她以前已經登錄並且會話仍然有效,則新會話必須覆蓋前一個會話,因此登錄結束並且他/她得到從第一個設備/瀏覽器註銷。總結:新會話總是使舊會議無效。
我一直在研究這樣的網站或尋找答案的http://soasecurity.org/,但我找不到任何答案。
我認爲我需要在用戶存儲中存儲WSO2 IS會話標識(commonauthId cookie中的標識,並存儲在會話緩存/持久性存儲中),以便我可以檢查當前用戶會話和註銷用戶如果Cookie ID和商店ID不匹配。但有兩個主要問題:限制WSO2IS中每個用戶的併發會話
- 我在哪裏存儲用戶會話ID?我的主要用戶商店是LDAP,但我想避免一個額外的屬性,因爲它與許多其他應用程序共享,並促進這樣的變化可能很困難,原因很多。有什麼辦法可以將這些數據放入二級商店嗎?
- 什麼是WSO2 IS中最適合的擴展點來添加用於在用戶存儲中存儲會話ID的代碼?我一直在查看身份驗證框架,發現在DefaultAuthenticationRequestHandler類中結束流的方法是在沒有以前緩存的可用會話時創建新會話的地方。擴展該方法似乎有點「棘手」,但我找不到更好的解決方案。也許你可以自定義認證器或用戶存儲,但我認爲這不是認證流程內擴展的好處,因爲新的會話是稍後在請求處理程序中創建的。
在此先感謝。
您正在使用哪個版本的WSO2 IS? – Hos
上一個穩定版本:5.1.0 –