我正在尝试从超级用户获取访问令牌,以便我可以在密钥斗篷中创建新用户,我已经在wildfly中部署了keycloak,当我尝试进行get调用时,我得到了{{ 1}}作为回应, 如何知道实际凭证?
当我尝试从控制台更新密码时,收到如下错误消息。
由于我是新手,并且没有从互联网上找到足够的信息,任何形式的帮助将不胜感激。
更新:
现在,我将获得Invalid user credentials
的新错误说明,如下所示。这里应该Parameter client_assertion_type is missing
什么?
答案 0 :(得分:2)
首先,当您通过rest客户端向keycloak发布数据时,需要输入参数作为 form 参数,而不是查询参数。这就是为什么当你明显提供它时,你得到这个奇怪的错误,即不提供参数grant_type。同样适用于通过代码访问keycloak api。
您需要考虑的下一件事是超级用户的角色。您可以分配领域角色和客户角色。有一个名为“领域管理”的客户'其中包含通常被视为"系统角色的角色"。你需要使用它们。当您获得HTTP代码403时,这意味着您的用户可能缺少此客户端的角色。
答案 1 :(得分:1)
This keycloak help page描述了第二个错误的最可能原因:
问:登录时出现错误:*参数client_assertion_type丢失[invalid_client]。
A:此错误意味着您的客户端配置了Signed JWT令牌凭据,这意味着您必须在登录时使用--keystore参数。
或者,您可以在Keycloak中为客户端禁用JWT令牌。
答案 2 :(得分:1)
供您参考,client_assertion_type
可能是urn:ietf:params:oauth:client-assertion-type:jwt-bearer
。但是随后您会遇到另一个错误,因为缺少client_assertion
。
如果ccp-portal
是使用签名JWT进行客户端身份验证的机密客户端,则the Keycloak doc指出
在身份验证期间,客户端会生成JWT令牌并对其进行签名 与它的私钥,并将其发送到特定的Keycloak 反向通道请求(例如,代码令牌请求) client_assertion参数。
解决方案
admin-cli
用作client_id
来代替ccp-portal
客户端。 admin-cli
应该在为ccp
域配置的客户端列表中。您可以从Keycloak界面中看到这一点。 ccp-portal
客户端配置中允许直接访问授权。ccp-portal
客户端。 正如sugrobych提到的,参数应该作为表单数据传递。