我有一个要求,在成功登录后,自定义/扩展Keycapture服务器返回的JWT令牌。额外的数据将存储在外部服务中,所以我需要以某种方式拦截/后过滤请求->用REST调用额外的数据->修改JWT令牌->返回响应。有人能给我一些信息吗?做这件事最好的方法是什么?
您可以将自己的数据添加到令牌中,但该令牌是经过签名的(通常通过私钥进行签名,私钥保存在Keycloft中(。因此,添加到令牌中的任何附加数据都会使签名无效=您将创建无效的令牌。在Keycloft之外修改令牌不是一个好主意。检查密钥斗篷映射器-它们通常用于向令牌中添加更多细节。
转到客户端:映射器:添加新的映射器:
名称:extraInfo
映射器类型:用户属性
用户属性:extraInfo
代币声明名称:extraInfo
声明JSON类型:字符串
添加到ID令牌:开启
添加到访问令牌:开启
添加到用户信息:打开
多值:开启
聚合属性值:ON
转到组:创建/选择组:属性:
密钥:extraInfo
value:{"name":"我们使用JSON格式作为属性","id":"仅限任何标识符"}
将用户分配到该组
重新登录,检查JWT令牌https://jwt.io/,你应该得到"extraInfo">