在keycloft中自定义用户会话数据



我使用这个curl命令在keycapture:中检索用户的会话详细信息

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"
}
}]

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

我建议您查看userinfoOIDC端点。与您当前的方法(使用带有管理令牌的AdminRESTApi(相比,它接受为最终用户颁发的令牌。如果可以的话,您将能够根据需要自定义端点输出。可在客户端设置中的客户端作用域映射器选项卡中进行自定义。

默认情况下可用的映射器集非常广泛,但我担心在默认情况下,Key斗篷不会保存有关UA的信息,所以你必须开发自己的逻辑来在登录流中提取它,然后将它存储在用户会话中。如果您不熟悉实现Key斗篷Java SPI,您可以尝试通过JS映射器来实现您的逻辑。

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

AFAIK一些例子应该在密钥斗篷github

最新更新