![Keycloak:为了配置管理目的,如何克服伪用户的密码过期问题?](https://linux22.com/image/1589445/Keycloak%EF%BC%9A%E4%B8%BA%E4%BA%86%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86%E7%9B%AE%E7%9A%84%EF%BC%8C%E5%A6%82%E4%BD%95%E5%85%8B%E6%9C%8D%E4%BC%AA%E7%94%A8%E6%88%B7%E7%9A%84%E5%AF%86%E7%A0%81%E8%BF%87%E6%9C%9F%E9%97%AE%E9%A2%98%EF%BC%9F.png)
有一些 Ansible 剧本通过 REST API 执行 Keycloak 实例的运行时配置。剧本使用 OIDC 获取身份验证令牌。它在获取令牌时使用用户名 + 密码(或 X.509 证书)进行身份验证,然后使用上述令牌执行必要的管理任务。
这些剧本可能在 Keycloak 安装很久之后才会执行,所以它不仅仅是一个初始化。
问题在于必须设置密码过期策略(为一个有限的数字),并最终强制 Ansible 使用的“配置管理”用户更改密码,并且在更改密码之前,拒绝提供身份验证令牌。
在这种情况下,Keycloak 的响应是:
{
"error": "invalid_grant",
"error_description": "Account is not fully set up"
}
如果我登录 GUI 并在显示的表单上更改密码,它就会再次工作,但我该如何解决这个问题?如果我尝试做同样的事情通过 REST API 更改密码的过程,然后我也会被拒绝,因为密码已过期。
我尝试设置 X.509 身份验证,但仍然不能解决问题,因为当密码过期时,它仍然会拒绝身份验证令牌,无论证书有效期有多长。
答案1
我曾经遇到过类似的问题,并且在为我生成令牌的同时将我的领域更改为主领域。