温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Keycloak: mapping username on subject claim
keycloak

其他 - Keycloak:将用户名映射到主题声明

发布于 2020-03-31 23:48:53

我需要配置Keycloak,以便它创建一个JWT,其中声明“ sub”填充了用户名,而不是sub中的默认userId。

这意味着代替该令牌:

{ "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无效。

查看更多

提问者
Nicola Ben
被浏览
51
Nicola Ben 2019-06-19 22:02

我以这种方式解决了。

1)在“客户端”配置部分中,选择您的客户端

2)转到“映射器”选项卡,然后创建一个新的“脚本映射器”

3)将打开一个名为“脚本”的可编辑部分,您可以在其中编辑以下行: token.setSubject(user.getUsername());

4)现在我的令牌包含 "sub": "user123456"

5)看一下这张图片

在此处输入图片说明