问题标签 [keycloak-services]

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 回答
16292 浏览

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

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

0 投票
0 回答
1259 浏览

jboss - 从领域中删除客户端后遇到 Keycloak 错误

这个问题是针对 KeyCloak 3.2.1.Final

我遇到了一个 KeyCloak 领域的问题,其中用户联合指向企业 LDAP 服务器。当我们在开发过程中测试应用程序时,我们添加了指向我们本地电脑的客户端,以便我们可以独立工作。这些都共享相同的用户联合配置,其中包含多个映射器。由于 role-ldap-mapper 是特定于客户端的,因此我们每个人都必须添加一个特定于我们客户端的新角色映射器,以便在登录后获取令牌上所需的角色。

完成工作后,我们删除了其中一个客户端,随后它使领域处于没有人能够登录的状态。在 keycloak 日志中,我们反复看到这一点:

我们很快意识到问题出在role-ldap-mapper 保留了指向已删除客户端的链接。一旦坏的映射器被删除,一切都按预期继续工作。将客户端特定映射器链接到不再存在的客户端似乎对系统有害。因此,我希望通过 UI 删除客户端也会删除与其关联的任何映射器。

根据我在此处找到的说明,我将其作为形式发布在这里:https ://developer.jboss.org/wiki/HelpBugReport 。我打算写一份错误报告并将其添加到https://issues.jboss.org

有没有其他人经历过这种行为?谁能确认这确实是一个错误?

谢谢!

0 投票
0 回答
11000 浏览

spring-boot - Spring Boot Keycloak - Bearer-only - 后端服务不起作用

我正在尝试使用 Keycloak 保护我的 rest api 和前端。

前端基于 Angular 4。

后端是使用 Spring boot 构建的 rest api。

我在同一领域(testRealm)中的 keycloak 管理控制台中创建了两个客户端。

前端客户端的 ACCESS-TYPE 是“Public”。

后端客户端(backendService) ACCESS-TYPE 是“仅承载”。

前端工作正常并根据角色显示选项卡。

当我尝试点击/访问后端服务调用时,它在浏览器控制台中出现以下错误-

无法加载http://localhost:9099/api/transaction

预检响应具有无效的 HTTP 状态代码 401。

下面是我用来保护 rest api 的配置。

应用程序属性

ApiSecurityConfig.java(用于 keycloak 适配器的 Spring Boot 安全配置)

我已经通过交叉检查来自 Keycloak 服务器的安装 JSON 文件验证了 application.properties 文件中的 keclaok 属性,如下所示。

从 Keycloak 服务器获取的安装 JSON 文件

我已经检查过 keycloak.credentials.secret 并且它与我使用的完全相同,但它仍然不允许访问后端并提供

未经授权,状态=401

不确定,如果我遗漏了什么,任何帮助都非常感谢..

0 投票
1 回答
1982 浏览

javascript - 基于 Keycloak ABAC 的策略执行器,无需在令牌中添加属性

我正在尝试为我的 API 设置基于密钥斗篷的 ABAC、基于属性的访问控制。我能够将其设置为创建一个基于 javascript 的策略,该策略查找特定的用户属性然后授予访问权限,例如

这只有在属性userAttributeFlag添加为客户端的用户属性映射器时才有可能,以便在访问令牌中添加相同的内容

在此处输入图像描述

我的问题是,是否总是需要在访问令牌中添加属性才能使 ABAC javascript 策略起作用。将它添加到令牌的问题是,如果我们有很多属性会不必要地增加我们希望避免的令牌大小。

在映射器中,可以选择将属性添加到 userInfo,但是否可以通过基于 javascript 的策略对其进行评估。

谢谢你的帮助。

0 投票
1 回答
1255 浏览

keycloak - 无法访问 Keycloak Authentication SPI 中的 AuthenticationManager

我正在为 Keycloak 编写自定义身份验证 SPI。要验证 cookie,我想使用 keycloak-services 的 AuthenticationManager。我在项目中添加了 keycloak-services 作为 maven 依赖项。它没有给出任何编译错误,但是在 Keycloak 上部署 SPI 后,它把我抛到了异常之下。

这是例外:

错误 [org.keycloak.services.error.KeycloakErrorHandler](默认任务 68)未捕获的服务器错误:java.lang.NoClassDefFoundError: org/keycloak/services/managers/AuthenticationManager 在 org.keycloak.examples.authenticator.SecretQuestionAuthenticator.authenticate( SecretQuestionAuthenticator.java:102) 在 org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:200) 在 org.keycloak.authentication.AuthenticationProcessor.authenticateOnly(AuthenticationProcessor.java:853) 在 org.keycloak.authentication.AuthenticationProcessor.authenticate (AuthenticationProcessor.java:722) 在 org.keycloak.protocol.AuthorizationEndpointBase.handleBrowserAuthenticationRequest(AuthorizationEndpointBase.java:145) 在 org.keycloak.protocol.oidc.endpoints。AuthorizationEndpoint.buildAuthorizationCodeAuthorizationResponse(AuthorizationEndpoint.java:395) 在 org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.build(AuthorizationEndpoint.java:139)

Maven 依赖

0 投票
1 回答
469 浏览

keycloak - 使用 KeycloakDeployment 获取 RealmResource

我们有一个使用 Tomcat Keycloak 适配器在 Tomcat 上运行的 Spring 服务,并且身份验证工作正常。

我们遇到的问题是我们想使用 keycloak.json 文件中定义的客户端参数来查询 RealmResource。

为了创建 Keycloak 对象并获取领域,我需要 keycloak.json 文件提供的信息(领域、资源、auth-server-url、客户端密码、密钥库/信任库)。我可以使用 KeycloakDeployment 实例从 Keycloak 上下文中获取大部分信息,但客户端机密是私有的,我看不到 SSLContext 或密钥库参数。

有没有办法利用 Keycloak 适配器创建的上下文中的现有对象在管理客户端中使用,或者我是否需要手动读取 keystore.json 来获取客户端密钥和密钥库属性?

我想使用客户端密码而不是 AuthToken,因为登录的用户可能没有权限查询/查看领域数据。

谢谢你。

0 投票
1 回答
1667 浏览

spring-boot - 如何在 springboot 应用程序中从 keycloak API 获取 JWT 令牌

我是 Keycloak 的新手。我开始将它用作我的 spring-boot 应用程序的一部分。

我扩展了 KeycloakWebSecurityConfigurerAdapter 并重写了 configure、configureGloabl 等方法,以进行特定的身份验证(请参见下面的代码片段。)

我想知道是否有可能访问 JWT 令牌对象以获取更多属性。我也不清楚用户注销后如何使令牌无效。目前,一旦单个用户登录,我无法将他注销,并且 JWT 令牌似乎一直在保留。

0 投票
2 回答
25058 浏览

java - 从 KeyCloak 导出所有用户

我有一个特定的用例,我们希望每天向 Keycloak 询问所有用户以及每个用户的组和角色。用于与其他内部系统进行核对。

目前我们正在为此使用 UsersResource 中提供的 Keycloak 端点。但是我们看到每次调用后性能都会下降到我们不能再使用这个解决方案的地步。该领域有超过 30K 的用户。

我们还看到 Keycloak 可以导出数据库,但只能在系统启动时导出(我猜是出于迁移目的)。鉴于我们想每天提取所有用户,我们不能使用它。

是否有一些已知的功能或解决方法?

0 投票
0 回答
622 浏览

security - Keycloak - 将用户联合提供者链接在一起

我目前有一个 LDAP 用户联合提供程序和一个自定义 UserStorageProvider spi,我编写它来查看我的 sqlserver 数据库中的用户组。要完全登录,我需要将用户组传回应用程序,因此,它们是 KeycloakSecurityContext 令牌字符串中声明的一部分。

现在,我的自定义 spi 验证或 LDAP 提供程序验证取决于我指定的优先级编号。有没有办法强制 keycloak 首先使用 LDAP 提供程序进行验证,然后再执行自定义提供程序?

0 投票
1 回答
9912 浏览

docker - 如何将领域文件导出到 keycloak docker 容器中?

我正在尝试将领域文件导出到 keycloak docker 容器中,但我无法这样做,因为执行此命令时服务器正在运行:

我试图修改 docker-entrypoint.sh 并删除执行服务器以启动的命令:

但是,caschLoopBack当我运行 keycloak 的 pod 时,我得到了一个。是否有任何解决方案可以在 docker 容器内进行导出并停止服务器运行?