在密钥斗篷中自定义用户会话数据

时间:2020-05-11 08:05:42

标签: session attributes keycloak keycloak-rest-api

我使用了curl命令来获取用户在密钥斗篷中的会话详细信息:

curl -X GET \
-H 'Authorization: Bearer $TOKEN' \
http://192.168.X.X:8080/auth/admin/realms/$REALM_NAME/users/$ID_OF_CLIENT/sessions

对此,我们有:

[{
  "id":"194d6b10-5b94-42c3-86d8-4d1780f70f52",
  "username":"admin",
  "userId":"e258f775-3597-4a72-a490-7bgd7c1cdfdb",
  "ipAddress":"192.168.X.X",
  "start":1589006511000,
  "lastAccess":1589007060000,
  "clients" :
       {
         "53d98bf8-fffd-484c-aae8-500a7cf7a8b6":"authz-servlet",
         "9bc56128-972e-41fe-8946-3ce4b5660e24":"authz-client-app3"
       }
 }]

现在,我需要在会话信息中添加更多详细信息,例如已登录用户的浏览器版本。有什么办法可以添加这些详细信息?

1 个答案:

答案 0 :(得分:0)

我建议您看一下userinfo OIDC端点。与您当前的方法(使用具有管理令牌的Admin REST Api)相比,它接受为最终用户发行的令牌。如果适合,您将可以根据需要自定义端点输出。在客户端设置的客户范围映射器选项卡上可以进行自定义。

默认情况下可用的映射器集很宽,但是 恐怕默认情况下,Keycloak不会保留有关UA的信息,因此您必须开发自己的逻辑以在登录流程中提取它,而不是将其存储在用户会话中。如果您不熟悉实现Keycloak Java SPI,则可以尝试通过JS映射器实现逻辑。

https://www.keycloak.org/docs/latest/server_admin/index.html#_protocol-mappers_oidc-user-session-note-mappers https://www.keycloak.org/docs/latest/server_development/#_script_providers

AFAIK的一些示例应该在keycloak github