3 回答

TA貢獻1824條經(jīng)驗 獲得超6個贊
我剛剛為我們的 KC 實現(xiàn)了這個功能,我們采用的方法是使用 REST api?!俺売脩簟毙枰卿洠ㄓ行У?KC 會話)。然后他們可以發(fā)起模擬會話,我們選擇使用用戶名來查找被模擬者。一旦您驗證此人存在于 KC 領域中,您就可以UserSessionModel為該人創(chuàng)建一個。然后創(chuàng)建一個登錄cookie,我了解到KCAuthenticationManager有一個幾乎沒有創(chuàng)建登錄 cookie 并將其附加到響應標頭的方法(真的很酷)。然后我將我的憑據(jù)(超級用戶)存儲在 cookie 中,并返回附加了這些 cookie 的響應。返回 REST 方法是一個非常相似的過程,它需要的參數(shù)不同,因為我們需要將 cookie 傳遞回來并獲取超級用戶 id 和他的會話 id。一旦你有了這些你只需重復第一種方法(查找用戶,查找會話而不是創(chuàng)建新會話,除非舊會話超時),重定向回原點。哦也不要忘記結(jié)束模擬會話。
personYouImpersonatedSessionId = session.sessions().getUserSession(RealmModel,AuthSessionId)
if(!personYouImpersonatedSessionId) {
session.sessions().removeUserSession(RealmModel,personYouImpersonatedSessionId)
}
我在測試期間忘記了這樣做,并且遇到了一些問題。我知道帖子很舊,但仍有人在尋找此類信息:D
我希望這有幫助
添加回答
舉報