标签: redhat-sso

从KeyCloak导出所有用户

我有一个特定的用例,我们想每天向所有用户询问Keycloak以及每个用户的组和角色。为了与其他内部系统和解。

当前,我们正在为此使用UsersResource中提供的Keycloak端点。但是我们看到,每次调用到某个点后,我们的性能都会降低,我们无法再使用此解决方案了。该领域中有超过3万名用户。

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

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

java redhat keycloak keycloak-services redhat-sso

7
推荐指数
2
解决办法
4066
查看次数

在Keycloak Docker Swarm服务中添加健康检查

测试配置为部署为 docker swarm 服务的集群的Keycloak 运行状况的最佳方法是什么?

我尝试了以下健康检查来测试 Keycloak 服务描述符中的可用性:

   healthcheck:
      test: ["CMD-SHELL", "curl http://localhost:8080/auth/realms/[realm_name]"]
      interval: 30s
      timeout: 10s
      retries: 10
      start_period: 1m
Run Code Online (Sandbox Code Playgroud)

还有更多的事情需要检查吗?找不到这方面的文档。

docker keycloak docker-swarm redhat-sso

6
推荐指数
1
解决办法
8908
查看次数

Keycloak 客户端设置,SAML 私钥暴露

我知道在 SAML 协议中,IDP 和 SP 他们持有自己的密钥对,并且不会向对方公开他们的私钥。

我假设下面的领域密钥是 IDP 密钥对,这是有道理的,因为私钥没有公开。 在此处输入图片说明

但是,当我在客户端设置中打开“需要客户端签名”时,会生成 SAML 密钥并公开私钥?这意味着 IDP 知道将在 SP 应用程序中使用的私钥。 在此处输入图片说明

这没有意义,一定是我搞错了什么。有人可以帮忙澄清一下吗?

saml saml-2.0 keycloak redhat-sso

5
推荐指数
1
解决办法
1333
查看次数

授予 Keycloak 客户端服务帐户权限以在不使用广泛的管理用户角色的情况下创建领域用户

我有一个将 Keycloak 用于 IdM 的 Web 应用程序。

我正在使用 资源所有者密码凭据或直接授予流程进行身份验证,它使用 REST API 调用/auth/realms/{realm}/protocol/openid-connect/token而不是浏览器重定向来为用户获取 JWT。

我想为用户注册实施类似的工作流程。

查看 Keycloak 文档,似乎 Keycloak Admin API 在/auth/admin/realms/{realm}/users公开了一个端点。

要允许客户端与 Keycloak Admin API 交互,您必须创建一个客户端服务帐户并将其与具有足够权限来管理领域用户的 keycloak 角色相关联。

对此的预期方法似乎是将管理用户领域特定角色应用于客户端服务帐户。这比我想授予客户端的权限多。

有没有办法给予客户服务帐户刚刚创建新用户的能力,而不是完整的权限集自带的管理用户?

oauth-2.0 jwt openid-connect keycloak redhat-sso

5
推荐指数
1
解决办法
2339
查看次数

Spring Boot + Spring Security Keycloak 适配器能否在令牌过期时自动刷新 HttpSession 中包含的访问令牌?

我正在使用 Keycloak 通过 OIDC 为属于同一领域的一堆应用程序提供 SSO。所有这些应用程序都是使用授权代码流的机密客户端。它们使用 JSP 作为视图,所有必要的重定向都由Spring Boot 和 Spring Security Keycloak 适配器管理

成功登录后,我可以正确地从一个应用程序切换到另一个应用程序 (SSO)。对于它们中的每一个,都会生成一个包含org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken. 这个类有一个SimpleKeycloakAccount带有 securityContext ( RefreshableKeycloakSecurityContext)的 details 对象 ( ),其中包含访问令牌 ( tokenString)、id 令牌 ( idTokenString) 和刷新令牌 ( refreshTokenString):

在此处输入图片说明

包含的访问令牌有 5 分钟的到期时间。奇怪的是,在这段时间过去之后,虽然我仍然在 Spring Boot 应用程序中正确地进行了身份验证,但我已经检查过访问令牌从未刷新过

我需要一个有效的访问令牌,因为其中一些应用程序调用 REST 服务,并使用相同的适配器进行保护,并且仅使用承载身份验证。问题是我最终拥有一个过期的访问令牌并且必须(手动?)处理它的过期。

有没有办法让适配器在访问令牌过期时刷新访问令牌,或者我们希望以编程方式这样做?

你能展示一下怎么做吗?

spring-security spring-boot openid-connect keycloak redhat-sso

5
推荐指数
0
解决办法
701
查看次数

Keycloak 不提供无密码身份验证作为登录期间的第一个选项

我已经为以下行为配置了 Keycloak 身份验证:

  • 用户输入其用户ID
  • Keycloak 应尝试使用无密码流程对其进行身份验证
  • 作为替代方案,用户可以切换到密码身份验证

注意:用户已经拥有注册的无密码设备:

在此输入图像描述

身份验证流程配置如下:

在此输入图像描述

我访问localhost:8080/realms/myrealm/account并单击“登录”:

在此输入图像描述

我输入用户ID:

在此输入图像描述

但是,系统并没有要求我使用安全设备进行注册,而是要求我输入密码:

在此输入图像描述

如果我选择尝试其他方式并单击安全密钥:

在此输入图像描述

在此输入图像描述

我现在可以使用该设备登录:

在此输入图像描述

我能成功做到这一点。

这里的问题是我需要直接提供无密码登录,而不是密码形式。无密码实际上被配置为第一个替代选项,那么为什么它没有按预期工作呢?

在此输入图像描述

keycloak webauthn redhat-sso

5
推荐指数
1
解决办法
3864
查看次数