问题标签 [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 回答
3595 浏览

session - 在 keycloak 中自定义用户会话数据

我使用这个 curl 命令在 keycloak 中检索用户的会话详细信息:

作为回应,我们有:

现在我需要在会话信息中添加更多详细信息,例如登录用户的浏览器版本。有没有办法添加这些细节?

0 投票
1 回答
3174 浏览

realm - Keycloak - 与来自不同领域的用户一起管理领域

是否可以让一个领域的用户在 keycloak 中管理另一个领域?我的目标是拥有 2 个领域 - adminRealm 和 userRalm。在 adminRealm 中应该是用户,他们将能够登录到我们的管理应用程序,在那里他们可以通过 Keycloak rest api 创建“普通用户”,并将其放入 userRealm。

目前我的解决方案在一个领域工作,我有管理员用户可以登录我的管理应用程序,并且他可以在同一领域创建用户。但是如果我想在另一个领域创建用户,我会收到 403 错误。那么有什么方法可以让管理员用户管理另一个领域(例如创建用户等)?

0 投票
1 回答
724 浏览

spring-boot - Openid-connect 或 SAML 2.0

我们目前的应用

后端位于 Spring Boot 2(RestAPI's)中,前端位于 Angular 中。身份验证完成后,它当前使用 JWT(Bearer) 通过传递 RestAPI 的授权标头来执行创建、更新和删除资源。对于读操作,任何人都可以访问,无需任何授权。

现在,由于应用程序的增加,我们正在使用KEYCLOAK转移到IDP

我想知道在给定案例中使用哪种类型的 SSO。

SAML 2.0 如果实施,在使用 SAML 进行 SSO 之后,我如何为我的 REST 端点创建/更新/删除响应?正如我所见,SAML 提供了断言,我需要一个不记名令牌来创建资源。如何使用断言为我的 REST 端点创建/更新/删除响应?

我尝试使用 Spring-Saml 扩展来实现这一点。但是,我无法实现上述目标。

OIDC-OAuth 如果实施,我如何过滤只读端点到所有特定 URL 以在未经授权的情况下可用?Keycloak 默认实现对于 OIDC 是开箱即用的。

我已经在 oidc 中使用 Keycloaks 适配器为 spring rest 实现了这一点。

谢谢!!

0 投票
1 回答
661 浏览

keycloak - keycloak 上是否存在任何 REST API 来管理没有管理员 api/帐户的单个用户的帐户详细信息?

在 Keycloak UI 中,我可以使用{keycloak_server_address}/auth/realms/NTC/account/ link.

在此处输入图像描述

我知道更新用户管理 API 来编辑用户信息。有没有办法由具有管理帐户权限的用户自己编辑用户信息?

0 投票
0 回答
57 浏览

java - Keycloak Java 客户端获取获取令牌

我需要获取rpt才能在我的应用中注册新用户。

密钥斗篷.json

获取rpt:

我得到:java.lang.RuntimeException: Client secret not provided.

但我在admin-cli其访问类型为public.

我已经设置:

我怎样才能获得 rpt 的admin-cli?我将使用它在我的应用程序注册页面中创建新用户。

0 投票
1 回答
662 浏览

keycloak - 如何向 Keycloak 添加策略 - UI 崩溃

当某些管理员客户端的某些管理员用户能够创建用户并获取他们的访问令牌以用于其他客户端时,我正在尝试启用流程。

我有带有令牌交换的 KeyCloak 设置以及启用和配置了细粒度 authz的客户端。我可以通过 REST api 登录我的管理员用户,然后交换令牌。但是当我指定观众时,我得到了错误。

这个返回令牌,但我需要另一个客户/观众的令牌。

这个失败并出现错误。

所以我尝试为目标受众客户端设置细粒度的身份验证(在选项卡中启用它,然后尝试为我的管理员用户添加策略以便能够交换令牌)但是当我想添加允许我的管理员用户执行令牌的策略时交换我卡在 UI 错误上。

当 Keycloak 正在寻找名称 colisions 时,键入策略名称时我得到 404。在这种情况下,Afaik 404 不应阻止表单发布,因为它没有名称冲突。相反,我立即被错误重定向。

归根结底,我无法在 Keycloak 中添加任何策略。一直以来,表单验证都以找不到 404 策略名称导致的崩溃而告终。

我正在使用 dockerized keycloak 10.0.0

有任何想法吗?

0 投票
3 回答
14463 浏览

oauth-2.0 - Keycloak 无效的令牌发行者

我有一个移动应用程序(react-native)、一个资源服务(spring boot)和 Keycloak Authenticatioin Service(Auth-Service)。

客户端直接使用 Auth-Service 进行身份验证并获取访问令牌。当我向资源服务发出请求时,资源服务通过询问 Auth-Service 来检查访问令牌。但是客户端应用程序和 iss 字段获得的令牌是http://10.0.2.2:8060/auth/realms/sau和我的资源服务在http://localhost:8110

钥匙斗篷 说: error="invalid_token", error_description="Invalid token issuer. Expected 'http://localhost:8060/auth/realms/sau', but was 'http://10.0.2.2:8060/auth/realms/sau'"

我的问题是如何代表我的客户在资源服务中进行身份验证?

移动应用:

在此处输入图像描述

资源服务:

应用程序.yml

在此处输入图像描述

注意:我已经检查了这个问题,并尝试设置“X-Forwarded-For”:“ http://localhost:8060/ ”但它不起作用 Keycloak 返回: { "error": "invalid_request", "error_description": "HTTPS required" }

这是移动客户端获取的示例访问令牌

0 投票
0 回答
272 浏览

keycloak-rest-api - 我应该使用哪些 keycloak 端点?

我想使用 keycloak 来角色基础访问控制。到目前为止,我不太了解关键斗篷是如何工作的。

我可以通过以下命令获取 access_token。

我的 WebAPI 是由 Rocket (rust) 制作的。所以没有准备好的keycloak适配器。

我想我需要在每次访问我的 WebAPI 时检查客户端给定的令牌。

这是我的处理程序。

我发现keycloak上有一些端点。我应该使用哪个?

0 投票
1 回答
7670 浏览

keycloak - Keycloak - 使用 Rest API 验证用户的电子邮件

我正在尝试创建一个新用户,然后使用 REST API 验证他的电子邮件地址。为了发送验证邮件,我在 Springboot 中使用了我自己的邮件类,所以我没有调用 keycloak 的/send-verify-email端点!创建用户后,我可以在 keycloak 控制台中看到该用户已创建、启用并且需要验证他的电子邮件地址。

但问题就在这里。如何使用 Keycloak REST API 验证电子邮件?没有用于此目的的端点,我无法更新 UserRepresentation,因为我没有访问令牌。如果没有访问令牌,您就无法更新用户,对吧?

所以应该有一些不安全的端点,不需要访问令牌和验证电子邮件之类<userID>/verify-email的,但没有。所以我正在寻找替代方案,如何验证用户的电子邮件。

当使用 Keycloak Springboot 客户端(或如何调用它)时,有一些用于此目的的方法(例如更新没有令牌的用户),但不幸的是我无法使用这个库。

我真的开始讨厌keycloak了..

谢谢大家的帮助

0 投票
1 回答
115 浏览

keycloak - 如何避免将用户添加到具有资源的所有组

使用 Keycloak 的新手,我正在尝试了解为用户分配角色。这是我使用的格式。我创建角色和用户,并创建具有某些角色的组。然后,我根据组中的角色将用户分配到组以具有权限。现在我在以下情况下遇到困难。

假设我有 4 个资源A, B, C, D、2 个角色R1, R2、2 个组G1, G2和一个用户U

R1有权限(我使用这些授权范围:read, write, create, delete)来访问A, B.
R2仅有权访问 A, B, C, D资源。
G1有角色R1并且G2R2分配给他们的角色。

现在我创建了一个用户U并希望让他访问G1希望该用户能够访问 2 个提到的资源。但事实并非如此,我注意到U没有被授予访问这 4 个资源中的任何一个的权限。我还需要添加这个用户G2才能访问所有 4 个资源,这不是我想要的。

同样在另一种情况下,如果我想将用户添加到G2,我希望他能够访问所有 4 个资源。但我注意到这个用户只能访问C, D. 我也应该添加他以G1访问所有资源。

我相信 keycloakand在分配权限时会以条件方式进行检查。有没有办法用彼此专有的资源来定义角色?