问题标签 [keycloak-rest-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
888 浏览

keycloak - 如何调整 keycloak 的两个实例

我的要求是我有一个通过 keycloak 进行身份验证的应用程序。假设如果我当前的 keycloak 失败,我需要 keycloak 的第二个实例来并行运行而不会停机。有人可以提供一些关于如何创建 2 个或更多实例的参考,这样如果一个失败,一个可以继续提供身份验证

谢谢, 拉达克里希南

0 投票
2 回答
10534 浏览

node.js - 撤销 Keycloak 访问令牌

我正在使用 Keycloak 来保护我的 react 前端和 node.js 后端。这些客户端使用基于角色的授权进行保护。

我的前端应用程序在 Keycloak 中注册为公共客户端,后端注册为仅承载客户端。当用户登录到前端时,我正在获取该特定用户的访问令牌,并且我正在使用该访问令牌来调用后端 api 层。

当用户从前端注销时,我正在使用 keycloak 对象注销方法从 Keycloak 清除该特定用户的前端客户端会话。这工作正常,用户正在注销并重定向到 Keycloak 登录页面。

但问题是我仍然可以使用该注销用户的访问令牌来调用后端 api。即使用户注销,访问令牌仍然有效。

我试过这个端点来撤销用户访问令牌。但没有工作/auth/admin/realms//users/

有没有办法撤销 Keycloak 中特定用户的访问令牌?

0 投票
1 回答
922 浏览

oauth - 令牌端点中的 keycloak 密码哈希

这就是我正在做的事情:我有一个 REST API 调用(登录),它接受用户名和密码,并使用它调用以下 API:

我还在 POST 数据中传递了客户端 ID、用户名和密码。并得到正确的结果。没有问题。

但是,我想在上面的 REST API 调用中发送密码时对密码进行编码,而不是使用实际文本。事实上,即使有人调用我已实现的 REST API 调用,我也希望对密码进行编码。

请建议如何做到这一点。我尝试只传递一个散列值,但它不起作用。

提前致谢。阿南德

0 投票
0 回答
1162 浏览

jwt - 当客户端设置指定 RS256 时,为什么 keycloak 使用 HS256 算法签署访问令牌?

我使用 keycloak 身份验证服务器和应用程序进行了以下设置:

  1. 用户在应用程序客户端登录,将 un/pw 发送到服务器
  2. 应用程序服务器将 un/pw 发送到 keycloak 服务器以获取令牌
  3. keycloak 服务器将令牌发送回应用程序服务器
  4. 应用服务器输出带有敏感数据的网页

我想使用 RS256 来签署我的令牌。当我尝试在客户端获取令牌时,它们已使用 RS256 正确签名,但一旦我尝试在应用程序服务器上获取令牌,就会使用 HS256。如何在这两种情况下设置 keycloak 以使用 RS256?

我使用 /auth/realms/{REALM_NAME}/protocol/openid-connect/token 端点和 keycloak 10.0.1。

密钥斗篷配置:

  • 钥匙
    • 领域的默认签名算法设置为 RS256
    • 第一个配置:领域密钥是 HS256、AES 和 RS256(按此顺序列出),优先级均为 100
    • 第二个配置:我将 RS256 键优先级设置为更高的值,但使用的是 HS256
    • 作为最后一次尝试,我将领域中的所有其他键都设为被动。签署令牌时,keycloak 只是生成了一个“备用 hs256”密钥来使用,而不是活动的 rs256。
  • 客户
    • 客户端的访问令牌签名算法和ID令牌签名算法设置为RS256
    • 客户是公开的
    • 有效的重定向 URI 包含应用程序服务器当前运行的域(即 localhost 但我的计算机有域名)
    • Web origins 设置为“+”(据我所知,它从有效的 red.uris 复制条目)

要求:

  • 应用客户端和应用服务器请求中的 Origin、Referer 和 Content-Type 标头匹配
  • 浏览器和邮递员都按预期作为客户端工作
  • 应用服务器是php,我使用curl发出post请求(客户端也发出post请求)
  • 客户端和应用服务器都在本地机器上运行

谷歌似乎没有返回与我的问题相关的结果。在修改任何设置后重新启动 keycloak 服务器似乎也没有带来任何结果,所以我假设我所做的任何更改都会自动使用。

0 投票
3 回答
2779 浏览

spring - 尽管设置了承载令牌,但 Spring Cloud Gateway 重定向到 Keycloak 登录页面

我正在使用 Keycloak 作为身份提供者、Spring Cloud Gateway 作为 API 网关和多个微服务的设置。我可以通过我的网关(重定向到 Keycloak)通过http://localhost:8050/auth/realms/dev/protocol/openid-connect/token.

我可以使用 JWT 访问直接位于 Keycloak 服务器上的资源(例如http://localhost:8080/auth/admin/realms/dev/users)。但是当我想使用网关将我中继到相同的资源 ( http://localhost:8050/auth/admin/realms/dev/users) 时,我会得到 Keycloak 登录表单作为响应。

我的结论是我的 Spring Cloud Gateway 应用程序中一定存在错误配置。

这是网关中的安全配置:

这是我在网关中的 application.yaml:

如何使网关能够知道用户已通过身份验证(使用 JWT)而不会将我重定向到登录页面?

0 投票
2 回答
2129 浏览

keycloak - 如何通过 REST API 将 Keycloak 领域角色添加到组

我想将领域角色“TEST_ROLE_123”分配给一个组,我正在使用

group-id/admin/realms/ataccamaone/groups/

但是我得到了响应204 No Content,并且在 Keycloak 控制台中我没有看到分配。

0 投票
1 回答
3128 浏览

keycloak - Keycloak 访问令牌过期太快

我有应该在 10 小时内有效的访问令牌,但它会在 30 分钟后过期。我用它来调用 Keycloak rest api,它工作了半个小时,但在那之后我得到 401 - Unauthorized。我在 jwt.io 上对其进行了解码,并且 exp 声明是在我获取它后 10 小时。我检查了系统时间,一切似乎都很好。可能是什么问题呢?

0 投票
1 回答
811 浏览

spring-cloud - 登录到 Spring Cloud Api Gateway 后面的 Keycloak

我有 Keycloak 和一个在 Spring Cloud API Gateway 后面运行的微服务。我想允许客户端应用程序执行 /login HTTP 请求,让用户使用他们的用户名和密码登录。

因为客户端应用程序将使用密码授予类型,通过 REST API 向 Keycloak 进行身份验证,它会将 HTTP Post 请求发送到 Keycloak /token 端点

我希望这个请求通过 Spring Cloud API Gateway 进行。所以我配置了一条路由,但由于某种原因,即使 Keycloak 正在运行并且端点正确,我也会收到 404 Not Found 错误。无需通过 API 网关,直接向上述端点发送 HTTP Post 请求即可。我想知道为什么我会收到 404 错误?

下面是我的 Spring Cloud API Gateway 路由配置:

如果我通过 API Gateway 发送 HTTP Post 请求,我会收到 404 Not found 错误。

如果我将 Spring Cloud API Gateway 配置为将此 HTTP Post 请求路由到在 localhost 上运行的另一个微服务,那么一切正常。如果我不使用 API Gateway 并将上述 HTTP Post 请求直接发送到 Keycloak 端点 http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token,那么我会得到一个访问令牌。因此 Keycloak 正在运行,并且 OAuth 客户端应用程序配置为使用密码授权。

仅当通过 API Gateway 发送上述请求并使网关将请求路由到 Keycloak 端点 http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token 时才会出现 404 错误代码

我做错了什么?

谢谢!

0 投票
1 回答
1644 浏览

java - 在需要同意的情况下从 Rest API 获取 400 错误请求以获取 Keycloak

HTTP 400 Bad Request从 key cloak java 代码中获取,而Consent Required设置为ON. 我正在使用以下代码:

我在 Gradle 文件中使用了以下库。

与服务器作为Server Version 7.0.0

注意:我用Consent Requiredset as尝试了相同的代码OFF,它可以工作。

0 投票
1 回答
4361 浏览

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

我有一个要求,我需要获取用户的访问令牌。

我知道管理员用户名和密码,因此可以获得管理员的访问令牌。

是否有任何其他 API 可以为使用上述数据的用户提供访问令牌?