无法访问 keycloak REST API 方法 *404*

Posted

技术标签:

【中文标题】无法访问 keycloak REST API 方法 *404*【英文标题】:Cant access keycloak rest API methods *404* 【发布时间】:2018-07-08 12:00:50 【问题描述】:

我在 docker 中使用最新的 keycloak 映像,并且可以通过 http://localhost:9080 访问标准管理控制台。但是,我似乎无法访问在 documentation 中为 Admin REST api 指定的任何路径。例如,基本路径 /auth 和资源 获取属于该领域的客户端返回属于该领域的客户端列表: /realm/clients 我得到了 404。documentation 中的任何其他方法也是如此。返回有效 200 json 响应的唯一路径是 http://localhost:9080/auth/realms/realm-name/,根据文档可在 basepath + "/realm-name" 处访问。我是否遗漏了某些内容或尝试使用错误的基本路径进行访问。 docker 中的 keycloak 版本是 3.4.3.Final,根据文档,这是 keycloak 的最新版本。

【问题讨论】:

你试过http://localhost:9080/auth/admin/realms/realm/clients吗? 【参考方案1】:

我几乎可以肯定您正在尝试这样调用端点:

http://localhost:9080/auth/admin/realms/demo/clients

但是,你错过了这部分/auth/admin/realms

请不要忘记按照here 所述先授权您的通话

更新

这是我查看结果的步骤:

$ docker run -d -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak

获取access_token

$ curl -X POST \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -d 'username=admin&password=admin&client_id=admin-cli&grant_type=password' \
    http://localhost:9080/auth/realms/master/protocol/openid-connect/token  

将得到的access_token复制粘贴到Authorization header:

$ curl -X GET \
    -H 'Authorization: Bearer <access_token_goes_here>' \
    http://localhost:9080/auth/admin/realms/master/clients

【讨论】:

不起作用(即使在将 demo 替换为有效领域后)。我尝试使用 AdvancedRESTClient 发送与管理控制台相同的授权标头,但仍然收到 404。我已经尝试使用 dockerized keycloak 和独立的。 您的另一点“缺少授权”对我来说很有帮助,因为奇怪的是,从浏览器访问相同的 url 对我不起作用(在身份验证之后)。但是当我通过邮递员将不记名令牌发送到相同的URL时,它是成功的。 @TahaRehmanSiddiqui,它可以帮助 9 个人。也许是时候接受答案了;-) @AlexKarasev 谢谢。但我的问题是针对不同的 API。使用此 URL POST /auth/admin/realms/master/clients/7534ac42-fe8b-4cde-b6c6-c385f4958e3b/roles 创建新客户端角色时,我得到 400 ...我在服务器上看不到任何错误。在 KC 文档中,URL 是 /realm/clients/client/roles,但该 URL 返回 404。文档:keycloak.org/docs-api/14.0/rest-api

以上是关于无法访问 keycloak REST API 方法 *404*的主要内容,如果未能解决你的问题,请参考以下文章

与 Keycloak 身份验证插件集成时,无法从 rest 客户端调用 nuxeo rest api

无法使用 keycloak 保护 python flask rest api 服务

Keycloak :REST API 调用通过管理员用户名和密码获取用户的访问令牌

Keycloak REST API 无法从用户角色映射中删除客户端级角色

需要使用 Keycloak 和 oAuth2 保护普通 Spring REST API 的示例

Spring base rest apis 的 Keycloak 安全性