gpt4 book ai didi

java - key 斗篷模仿

转载 作者:行者123 更新时间:2023-12-02 10:46:21 25 4
gpt4 key购买 nike

我需要在 Keycloak 管理控制台之外提供模拟功能,该功能与“模拟”按钮非常相似。我正在做的是调用 Keycloak REST API

  1. 获取access_token,(auth/realms/master/protocol/openid-connect/token)
  2. 然后解析为另一个调用来模拟用户 admin/realms/{realm}/users/{id}/impersonation 。

第二个调用返回带有 boolean 值的重定向链接,并且 header 中除其他之外还有 KEYCLOAK_SESSION 和 KEYCLOAK_IDENTITY cookie。

我需要以某种方式从应用程序中注销用户,在浏览器中设置这些 cookie,重定向到登录页面并以另一个用户身份登录。我认为这是常见的情况,Keycloak 有它神奇的模拟按钮,它的作用相同,但我需要将它放在管理控制台之外。有人可以帮助解决这个问题吗?非常感谢

最佳答案

我刚刚为我们的 KC 实现了此功能,我们采用的方法是使用 REST api。 “ super 用户”需要登录(有效的 KC session )。然后他们可以发起模拟 session ,我们选择使用用户名来查找模拟者。一旦您验证该人存在于 KC 领域中,您就可以为该人创建一个 UserSessionModel。然后创建一个登录 cookie,我了解到 KC AuthenticationManager 有一个几乎很小的方法来创建登录 cookie 并将其附加到响应 header (真的很酷)。然后我将我的凭据( super 用户)存储在 cookie 中,并返回附加了这些 cookie 的响应。返回 REST 方法是一个非常相似的过程,它采用的参数不同,因为我们需要传回 cookie 并获取 super 用户 id 和他的 session id。一旦你有了这些,你只需重复第一种方法(查找用户,查找 session 而不是创建新的,除非旧 session 超时),重定向回原点。哦,也不要忘记结束模拟 session 。

personYouImpersonatedSessionId = session.sessions().getUserSession(RealmModel,AuthSessionId)
if(!personYouImpersonatedSessionId) {
session.sessions().removeUserSession(RealmModel,personYouImpersonatedSessionId)
}

我在测试期间忘记这样做,并且遇到了一些问题。我知道这篇文章很旧,但仍有人在寻找此类信息:D

希望这有帮助

关于java - key 斗篷模仿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52542309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com