Keycloak KeyClope:在主题声明上映射用户名
我需要配置keydepeat,以便它创建一个JWT,声明“sub”中填充用户名,而不是sub中的默认userId 这意味着代替此令牌:Keycloak KeyClope:在主题声明上映射用户名,keycloak,Keycloak,我需要配置keydepeat,以便它创建一个JWT,声明“sub”中填充用户名,而不是sub中的默认userId 这意味着代替此令牌: { "jti": "b1384883-9b59-4788-b09f-98b40b7e3c3b", ... "sub": "fbdb4e4a-6e93-4b08-a1e7-0b7bd08520a6", "preferred_username": "m123456" } 我需要收到: { "jti": "b1384883-9
{
"jti": "b1384883-9b59-4788-b09f-98b40b7e3c3b",
...
"sub": "fbdb4e4a-6e93-4b08-a1e7-0b7bd08520a6",
"preferred_username": "m123456"
}
我需要收到:
{
"jti": "b1384883-9b59-4788-b09f-98b40b7e3c3b",
...
"sub": "m123456",
"preferred_username": "m123456"
}
你能建议怎么做吗
我尝试了用户名映射器,但它添加了第二个“sub”声明,使用jwt无效。我用这种方法解决了这个问题
1) 在“客户端”配置部分选择您的客户端
2) 转到“映射器”选项卡并创建新的“脚本映射器”
3) 将打开一个名为“Script”的可编辑部分,您可以在其中编辑以下行:token.setSubject(user.getUsername())代码>
4) 现在,我的令牌包含“sub”:“user123456”
5) 看看这张图片
或者这样:使用用户属性映射器类型 这将创建一个重复的“子”索赔。有些图书馆不喜欢这样。
{
"id": "5d45fe41-83c6-4457-807b-5240ff7c09b9",
"name": "UsernameInSubject",
"protocol": "openid-connect",
"protocolMapper": "oidc-usermodel-property-mapper",
"consentRequired": false,
"config": {
"userinfo.token.claim": "true",
"user.attribute": "username",
"id.token.claim": "true",
"access.token.claim": "true",
"claim.name": "sub",
"jsonType.label": "String"
}