问题标签 [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 投票
2 回答
5272 浏览

keycloak - 如何通过 REST API 删除 Keycloak 领域

我无法通过 Keycloak 8.0.2 上的 REST API 删除领域。

我的 Keycloak 在 localhost:38080 上运行。我遵循了此文档https://www.keycloak.org/docs-api/8.0/rest-api/index.html#_realms_admin_resource,请参阅“删除领域”段落。首先,我在http://localhost:38080/auth/realms/master/protocol/openid-connect/token获得了管理员用户的令牌

然后我使用令牌并尝试example通过此调用删除领域

(注意:curl 命令是导出的 Postman 调用)

我收到了这个 404 响应

我究竟做错了什么?

0 投票
0 回答
224 浏览

keycloak - 从管理控制台创建的用户仅在使用 Storage Provider SPI 时存储用户名

我创建了一个MongoDbUserStorageProvider将用户存储委托给 MongoDB:

我遇到的问题是:当我通过 Keycloak 控制台创建用户时,只有用户名存储在数据库中(不是电子邮件、名字等):

在此处输入图像描述

如您所见,该UserRegistrationProvider.addUser(RealmModel realm, String username)操作仅接收用户名:

org.keycloak.services.resources.admin.UsersResource该方法中public Response createUser(final UserRepresentation rep)遵循以下逻辑:

1)它调用我的 addUser 实现(仅使用用户名存储新用户)

MongoUserAdapter2) 它用其余字段填充用户对象 ( )

但是我看不到如何使填充的用户对象持久存在。

0 投票
1 回答
1018 浏览

keycloak - Keycloak Admin API - 创建用户并将多个用户分配给一个角色时的自定义用户 ID

我有 2 个关于 Keycloak Admin API 的问题:

1) 目前是否可以在通过 Keycloak 管理 API 创建用户时分配自定义用户 ID?我知道几年前这是不可能的。

2) 我可以使用 Keycloak Admin API 为用户分配多个领域角色,是否可以采用相反的方式?我似乎找不到允许我将多个用户分配给领域角色的 API。

0 投票
0 回答
639 浏览

java - Keycloak 管理员重定向异常

我正在尝试使用来自我的 Spring Boot 应用程序的客户端凭据流在 Keycloak 中创建一个用户。我在 Keycloak 中创建了一个客户端,并从中获取了 clientId 和 clientSecret(粘贴了配置以供参考)。调用 create 方法时出现重定向错误:找到 HTTP 302。我错过了什么吗?

在此处输入图像描述

0 投票
2 回答
1687 浏览

keycloak-rest-api - REST API 的 Keycloak 登录已被 CORS 阻止

我正在尝试使用本地主机(本地主机:3000)中现有登录页面的密钥斗篷登录。Keycloak 在另一台主机上运行 ( http://kchost:38080 )。我知道这不是推荐的登录方式,但我需要立即调整现有系统。

尝试卷曲:

我成功获得了预期的响应(使用 access_token 和 refresh_token)。我不能在浏览器上做同样的事情。该错误与 CORS 有关。

我正在使用 axios,这是代码:

错误是:CORS 策略已阻止从源“ http://localhost:3000 ”访问“ http://kchost:38080/auth/realms/myrealm/protocol/openid-connect/token ”处的 XMLHttpRequest:请求Access-Control-Allow-Headers 在预检响应中不允许标头字段 access-control-allow-origin。

如果我省略标题'Access-Control-Allow-Origin' : '*',则错误变为:访问 XMLHttpRequest at ' http://kchost:38080/auth/realms/myrealm/protocol/openid-connect/token '来自原点“ http://localhost:3000 ”的 CORS 策略已阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。

在 Keycloak 管理员端,客户端具有访问类型“public”以避免“clientSecret”要求。Direct Access Grants Enabled 已启用。为“web origins”和“valid redirect url”尝试了不同的配置,当前的配置是:

我很确定这是与服务器配置有关的问题。我该如何解决?

0 投票
0 回答
1327 浏览

keycloak - Keycloak - 从注册表单中将用户分配到组

我正在尝试在 Keycloak 中创建一个自定义注册表单,它将创建用户并根据团队下拉选择将他们分配给一个组。这是我的问题的一个示例:
我有多个团队将使用 keycloak,每个团队将在 keycloak 中拥有自己的组,映射出他们需要访问的所有角色。Grafana 是一款将使用 keycloak 身份验证的应用程序。当用户去 Grafana 并尝试通过 keycloak 注册新帐户时,它会创建用户,但由于该用户未分配到组,因此他们在 Grafana 中出现错误页面,因为他们没有任何权限.
我试图限制在注册后将数百名用户分配到组的手动工作量。我无权访问 LDAP 或 Active Directory。

这是我在自定义 register.ftl 模板中尝试过的示例。

我成功地将组添加为用户属性,然后认为我可以执行一个脚本,然后使用其余 API 来分配组,但我也没有太多运气。我不想将每个人都分配到默认的“仅查看”组,因为某些组不需要能够查看我们将使用的所有应用程序。

如果有人有任何想法或可以帮助我指出正确的方向,请告诉我。我对 HTML 和 Javascript 的了解有限,但对 Python 有一定的了解。

0 投票
0 回答
58 浏览

keycloak-rest-api - 通过没有熊令牌的rest api创建Keycloak用户

目前,我试图找到一种创建 keycloak 用户的方法,只是发现需要拥有管理员访问令牌的案例(意味着需要先使用管理员帐户登录)。

我的客户端-服务器(java)系统使用 keycloak 进行身份验证,并且需要一个新用户能够在客户端上注册新帐户的功能。

有什么方法可以通过其余 API 创建用户并且不需要管理员令牌?如果不是,我是否应该将 keycloak 管理员用户名/密码存储到我的服务器端并使用它来注册用户(在这种情况下,如果您知道,请与我分享保护管理员凭据的方法)?

0 投票
1 回答
911 浏览

keycloak - Keycloak电子邮件验证:验证后如何重定向用户

电子邮件验证 URL 有时会重定向到客户端页面,有时会重定向到密钥斗篷验证页面。我不知道如何控制这个。有没有办法这样做。

0 投票
1 回答
1462 浏览

keycloak - Keycloak Admin REST-API 同步联合映射器

我正在使用带有 LDAP 用户联合的 Keycloak 9.0.3,编辑模式 = WRITABLE 并且导入用户 = on。我正在开发一个 Spring Boot 应用程序,它应该调用 Keycloak REST API 来创建、更新、删除LDAP 中的用户。我还在我的用户联合中创建了“group-ldap-mapper”,以将 LDAP-Groups 映射到 Keycloak-Groups,反之亦然。

我的要求是通过 REST API 创建和删除 Keycloak-groups,并使用上面的映射器将它们映射到 LDAP 中的组。当我的应用程序调用POST /{realm}/groups Keycloak 只是在 Keycloak-DB 中创建组并且不会同步到 LDAP,除非该组被分配给某个用户。这其实不是什么大问题。真正的问题是当我的应用程序通过DELETE /{realm}/groups/{id}删除组时。这些组会从 Keycloak-DB 中删除,但不会从 LDAP 中删除。一个可接受的解决方法是调用POST /{realm}/user-storage/{parentId}/mappers/{id}/sync同步组并完成工作。

此解决方法中的问题是,除了在 Spring 应用程序中对其进行硬编码之外,无法获取联合映射器 ID ({id})。没有 REST-Call 以编程方式检索此 id。

知道如何解决这个问题吗?

0 投票
1 回答
837 浏览

keycloak - 想要在存在多个凭据的情况下发送 otp 的 Keycloak Rest API 请求格式

在为多因素身份验证生成 Otp 的情况下,我为用户设置了两个设备。对于浏览器,它要求我选择设备。我想从 Rest api 实现相同的目标。请建议。目前我正在使用以下请求,但收到 401 未经授权的错误。