我使用了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"
}
}]
现在,我需要在会话信息中添加更多详细信息,例如已登录用户的浏览器版本。有什么办法可以添加这些详细信息?
答案 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
中