Keycloak:找不到完整路径的资源

26

我正在尝试让keycloak的REST API工作。

感谢这篇文章,我得到了令牌。但是在尝试第一个答案中列出用户列表的示例时,我遇到了错误:

"error": "RESTEASY003210: Could not find resource for full path: http://PATHTOCEAKLOAK:81/auth/user/realms/master/users"

这是我在Postman中的请求:

enter image description here

由于我正在使用Bitnami容器,管理员被称为用户,因此我使用/auth/user/而不是/auth/admin/


2
你的客户端是否启用了“serviceAccountsEnabled”? - TacheDeChoco
1
请确保您的“用户”具有足够的权限来管理领域用户。 - TacheDeChoco
谢谢,我已将“admin-cli”的访问类型更改为机密,并且现在能够激活“SeviceAccountsEnabled”选项。在“user”的角色映射中,它已经有了管理员,只是为了尝试,我添加了其他可用的角色(create-realm、uma_authorization、offline_access),但我仍然遇到相同的错误。非常感谢您的帮助。 - flololan
6个回答

79

对于那些仍然遇到这个错误且使用 Keycloak 17.0+ 版本的人,根据官方文档,端点发生了变化。我通过只使用{realm}/user并省略中间的/auth来解决了这个问题。


1
你知道如何让Keycloak响应/auth/*路径吗?我被迫使用这个路径以保持向后兼容性。 - Kostanos
4
请将以下内容翻译成中文:@Kostanos设置KC_HTTP_RELAITVE_PATH=/auth以使其与旧的Wildfly分布版行为相同。在从WildFly切换到Quarkus时,我们决定不使用旧的“auth”基本路径,而是改用“/”作为基本路径,因为它更干净,并允许可选地使用“/<path>”,以保持向后兼容性。请参见https://www.keycloak.org/server/all-config?q=relative-您必须运行构建才能生效,因此请使用优化的Docker映像(请参阅容器指南)或使用`--auto-build`标志。或者,如果在prem/not容器化上运行,可以先使用cmd运行“build”命令。@Kostanos将KC_HTTP_RELAITVE_PATH=/auth设置为与旧版Wildfly发行版的行为相同。在从wildfly转换到quarkus时,我们决定不使用旧的“auth”基础路径,而是改用“/”作为基础路径,因为这更简洁,并允许选用“/<path>”以保持向后兼容性。请参见例如https://www.keycloak.org/server/all-config?q=relative-您需要运行构建才能使其生效,因此请使用优化的docker映像(请参见容器指南)或使用`--auto-build`标志。或者,如果在onprem/not容器化上运行,请先使用cmd运行`build`命令。 - Dominik
嗨,谢谢@Akansha_p,但是在这种情况下,结果路径会是什么样子呢? - buddhiv
根据问题,@buddhiv,flololan正在尝试获取所有用户的列表。根据文档,我们需要使用GET /{realm}/users作为端点,因此URL应该类似于http://PATHTOCEAKLOAK:81/{your_realm_name}/users - Akanksha_p
1
谢谢。但对我来说工作路径是 http://{domain}/realms/{realm}/protocol/openid-connect/userinfo。 :) - buddhiv

12

除了@Akanksha_p的答案,这里是使用curl获取令牌的命令:

curl -k -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=your-client" -d "username=some-user" -d "password=hardpassword" -d "grant_type=password" -X POST https://your.fqdn.server:8443/realms/yourrealm/protocol/openid-connect/token

3
如果您想知道当前域上有哪些可用的URL,可以进入“域” ->“设置”,然后单击“端点”链接。
或者直接访问以下网址:http://{主机}:{端口}/realms/{您的域}/.well-known/openid-configuration。

1

我实际上正在处理相同的问题,并使用bitnami/keycloak:latest的docker镜像。

只需将基本路径中的/auth删除并保持为/admin,就可以使其正常工作。

类似于这样(GET http://localhost:8085/admin/realms/test-realm/users)

在此输入图片描述


1

镜像最新版本为 quay.io/keycloak/keycloak:21.1.1

$docker exec -it container_name bash

现在从容器的 shell(bash)中

bash-5.1$ cd ~/bin/ 
bash-5.1$./kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin

请输入管理员用户的凭据

bash-5.1$./kcadm.sh update realms/master -s sslRequired=NONE --server http://localhost:8080

0
@Kostanos - 我会尝试在keycloak前面使用反向代理,比如nginx并进行重写,以便恢复/auth/路径。

这并没有回答问题。一旦您有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Wouter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接