亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Keycloak 冒充

Keycloak 冒充

慕勒3428872 2021-10-17 15:44:00
我需要在 Keycloak 管理控制臺之外提供模擬功能,非常類似于模擬按鈕。我正在做的是調用 Keycloak REST API獲取 access_token, (auth/realms/master/protocol/openid-connect/token)然后將其解析為另一個調用以模擬用戶 admin/realms/{realm}/users/{id}/impersonation 。第二個調用是返回帶有布爾值的重定向鏈接,在標題中,除了其他之外,還有 KEYCLOAK_SESSION 和 KEYCLOAK_IDENTITY cookie。我需要以某種方式從應用程序中注銷用戶,在瀏覽器中設置這些 cookie,重定向到登錄頁面并以另一個用戶的身份登錄。我認為它的常見情況和 Keycloak 有其神奇的模擬按鈕,它的作用相同,但我需要在管理控制臺之外使用它。有人可以協助解決這個問題嗎?非常感謝
查看完整描述

3 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

我剛剛為我們的 KC 實現了這個功能,我們采用的方法是使用 REST api?!俺売脩簟毙枰卿洠ㄓ行У?KC 會話)。然后他們可以發起模擬會話,我們選擇使用用戶名來查找被模擬者。一旦您驗證此人存在于 KC 領域中,您就可以UserSessionModel為該人創建一個。然后創建一個登錄cookie,我了解到KCAuthenticationManager有一個幾乎沒有創建登錄 cookie 并將其附加到響應標頭的方法(真的很酷)。然后我將我的憑據(超級用戶)存儲在 cookie 中,并返回附加了這些 cookie 的響應。返回 REST 方法是一個非常相似的過程,它需要的參數不同,因為我們需要將 cookie 傳遞回來并獲取超級用戶 id 和他的會話 id。一旦你有了這些你只需重復第一種方法(查找用戶,查找會話而不是創建新會話,除非舊會話超時),重定向回原點。哦也不要忘記結束模擬會話。


personYouImpersonatedSessionId = session.sessions().getUserSession(RealmModel,AuthSessionId)

if(!personYouImpersonatedSessionId) {

      session.sessions().removeUserSession(RealmModel,personYouImpersonatedSessionId)

}

我在測試期間忘記了這樣做,并且遇到了一些問題。我知道帖子很舊,但仍有人在尋找此類信息:D


我希望這有幫助


查看完整回答
反對 回復 2021-10-17
  • 3 回答
  • 0 關注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號