尝试通过kcadm.sh创建oidc-全名-映射器时出现“ 500 Internal Server Error”

时间:2018-08-07 11:30:00

标签: keycloak

我正在使用Keycloak kcadm.sh工具来定义客户端。我现在正在尝试定义类似于Keycloak的Web界面可以定义的协议映射器。以下命令成功执行:

./ kcadm.sh创建客户端/ myclientid /协议映射器/模型-r myrealm -s name =“全名” -s protocolMapper = oidc-全名映射器-s protocol = openid-connect

但是,当我检查创建的全名映射器时,会看到它是使用“添加到ID令牌”-关闭和“添加到访问令牌”-OFF创建的。我希望他们打开。因此,在删除创建的映射器之后,我尝试将-s config.access.token.claim = true -s config.id.token.claim = true添加到上述命令。因此命令变为:

./ kcadm.sh创建客户端/ myclientid /协议映射器/模型-r myrealm -s name =“全名” -s protocolMapper = oidc-全名映射器-s protocol = openid-connect -s config .access.token.claim = true -s config.id.token.claim = true

但这会导致“ HTTP错误-500内部服务器错误”

我尝试创建一个映射器,并与以前一样关闭选项,然后使用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"
      }
    }
  ],

所以看来我给出的路径是正确的。知道我在做什么错吗?

2 个答案:

答案 0 :(得分:1)

找到了!在Linux上,我必须在配置后使用\“。因此命令变为: ./kcadm.sh创建客户端/ myclientid /协议映射器/模型-r myrealm -s 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://stackoverflow.com/users/1717360/justint)的评论 Add protocol-mapper to keycloak using kcadm.sh给了我指导。

答案 1 :(得分:0)

像这样指定Linux中的配置值:

-s 'config."id.token.claim"=true'
-s 'config."access.token.claim"=true'