3 回答
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
我希望这有帮助
添加回答
举报