尝试通过 kcadm.sh 创建 oidc-full-name-mapper 时出现“500 Internal Server Error”
Getting "500 Internal Server Error" when trying to create oidc-full-name-mapper via kcadm.sh
我正在使用 Keycloak kcadm.sh 工具来定义客户端。我现在正在尝试定义类似于 Keycloak 的 Web 界面可以定义的协议映射器。以下命令执行成功:
./kcadm.sh 创建 clients/myclientid/protocol-mappers/models -r myrealm -s name="full name" -s protocolMapper=oidc-full-name-mapper -s protocol=openid-connect
但是,当我检查创建的全名映射器时,我发现它是在 "Add to ID token" - OFF 和 "Add to access token" - OFF 的情况下创建的。我想让他们开。因此,在删除创建的映射器后,我尝试将 -s config.access.token.claim=true -s config.id.token.claim=true 添加到上述命令中。所以命令变成:
./kcadm.sh 创建 clients/myclientid/protocol-mappers/models -r myrealm -s name="full name" -s protocolMapper=oidc-full-name-mapper -s protocol=openid-connect -s config.access.token.claim=true -s config.id.token.claim=true
但这会导致 "HTTP error - 500 Internal Server Error"
我尝试创建一个像以前一样关闭选项的映射器,然后使用 Web 界面将它们设置为开启,然后导出客户端并检查结果。生成的 json 包括我的客户端的以下协议映射器:
"protocolMappers": [
{
"id": "...",
"name": "full name",
"protocol": "openid-connect",
"protocolMapper": "oidc-full-name-mapper",
"consentRequired": false,
"config": {
"id.token.claim": "true",
"access.token.claim": "true"
}
}
],
看来我给的路径是对的。知道我做错了什么吗?
找到了!在 Linux 上,我必须在配置后使用 \"。因此命令变为:
./kcadm.sh create clients/myclientid/protocol-mappers/models -r myrealm -s name="full name" -s protocolMapper=oidc-full-name-mapper -s protocol=openid-connect -s config.\"access.token.claim\"=true -s config.\"id.token.claim\"=true
JustinT(https://whosebug.com/users/1717360/justint)对
给了我方向
像这样在 Linux 中指定配置值:
-s 'config."id.token.claim"=true'
-s 'config."access.token.claim"=true'
我正在使用 Keycloak kcadm.sh 工具来定义客户端。我现在正在尝试定义类似于 Keycloak 的 Web 界面可以定义的协议映射器。以下命令执行成功:
./kcadm.sh 创建 clients/myclientid/protocol-mappers/models -r myrealm -s name="full name" -s protocolMapper=oidc-full-name-mapper -s protocol=openid-connect
但是,当我检查创建的全名映射器时,我发现它是在 "Add to ID token" - OFF 和 "Add to access token" - OFF 的情况下创建的。我想让他们开。因此,在删除创建的映射器后,我尝试将 -s config.access.token.claim=true -s config.id.token.claim=true 添加到上述命令中。所以命令变成:
./kcadm.sh 创建 clients/myclientid/protocol-mappers/models -r myrealm -s name="full name" -s protocolMapper=oidc-full-name-mapper -s protocol=openid-connect -s config.access.token.claim=true -s config.id.token.claim=true
但这会导致 "HTTP error - 500 Internal Server Error"
我尝试创建一个像以前一样关闭选项的映射器,然后使用 Web 界面将它们设置为开启,然后导出客户端并检查结果。生成的 json 包括我的客户端的以下协议映射器:
"protocolMappers": [
{
"id": "...",
"name": "full name",
"protocol": "openid-connect",
"protocolMapper": "oidc-full-name-mapper",
"consentRequired": false,
"config": {
"id.token.claim": "true",
"access.token.claim": "true"
}
}
],
看来我给的路径是对的。知道我做错了什么吗?
找到了!在 Linux 上,我必须在配置后使用 \"。因此命令变为: ./kcadm.sh create clients/myclientid/protocol-mappers/models -r myrealm -s name="full name" -s protocolMapper=oidc-full-name-mapper -s protocol=openid-connect -s config.\"access.token.claim\"=true -s config.\"id.token.claim\"=true
JustinT(https://whosebug.com/users/1717360/justint)对
像这样在 Linux 中指定配置值:
-s 'config."id.token.claim"=true'
-s 'config."access.token.claim"=true'