keycloak-传递参数满足密码策略要求
Keycloak- passed parameter to meet password policy requirements
我在我的 Symfony 项目中定义了 get Keycloak 方法。
我在提取密码策略列表的数组中得到了异常结果。目前仅设置 'not username' 规则:
我无法在文档中的 keycloak 中找到任何其他端点,我可以将我的密码字符串作为参数传递并查看它是否满足 password policies
中定义的要求。
我将提供 GET
返回我刚才描述的内容的函数。我认为如果可以对其进行修改以提供密码字符串,它将完成工作。
public function validateKeycloakPassword()
{
$options = [
'headers' => $this->getAuthJsonHeaders()
];
try {
$endpoint = sprintf('auth/admin/realms/%s/', $this->realm);
return $this->request('GET', $endpoint, $options);
} catch (\Exception $e) {
$this->exception('Can`t get password policy information on Keycloak. ' . $e->getMessage());
}
}
在我的控制器中,端点:
/**
* @Route("/check", name="check")
*/
public function validatePassword()
{
$violations = $this->service->validateKeycloakPassword();
return $violations['passwordPolicy'];
}
求和:
keycloak 中是否有任何端点,我可以在其中传递我的密码变量并检查它是否满足 password policies
中定义的要求可能使用 PUT
方法。
据我所知没有这样的端点。不过,您可以使用一种解决方法,创建一个 dummy_user
用于测试密码。从该用户获取 ID
,您可以从 Keycloak 管理控制台或使用端点获取:
curl -X GET <KEYCLOAK_HOST>/auth/admin/realms/<REALM_NAME>/users/?username=dummy_user
从 JSON
响应中提取用户 ID
。然后调用以下端点:
PUT <KEYCLOAK_HOST>/auth/admin/realms/<REALM_NAME>/users/<USER_ID>/reset-password
使用请求负载:
{"type":"password","value":"<THE_PASSWORD_THAT_YOU_WANT_TO_TEST>","temporary":false}
如果密码无效,您将收到 400
,您可以通过响应查看错误。此类响应的示例:
error:"invalidPasswordMinLengthMessage"
error_description:"Invalid password minimum length 8"
显然,这不适用于 username
政策,但可以轻松地在您的应用中签入该政策(例如, password != username
)
我在我的 Symfony 项目中定义了 get Keycloak 方法。
我在提取密码策略列表的数组中得到了异常结果。目前仅设置 'not username' 规则:
我无法在文档中的 keycloak 中找到任何其他端点,我可以将我的密码字符串作为参数传递并查看它是否满足 password policies
中定义的要求。
我将提供 GET
返回我刚才描述的内容的函数。我认为如果可以对其进行修改以提供密码字符串,它将完成工作。
public function validateKeycloakPassword()
{
$options = [
'headers' => $this->getAuthJsonHeaders()
];
try {
$endpoint = sprintf('auth/admin/realms/%s/', $this->realm);
return $this->request('GET', $endpoint, $options);
} catch (\Exception $e) {
$this->exception('Can`t get password policy information on Keycloak. ' . $e->getMessage());
}
}
在我的控制器中,端点:
/**
* @Route("/check", name="check")
*/
public function validatePassword()
{
$violations = $this->service->validateKeycloakPassword();
return $violations['passwordPolicy'];
}
求和:
keycloak 中是否有任何端点,我可以在其中传递我的密码变量并检查它是否满足 password policies
中定义的要求可能使用 PUT
方法。
据我所知没有这样的端点。不过,您可以使用一种解决方法,创建一个 dummy_user
用于测试密码。从该用户获取 ID
,您可以从 Keycloak 管理控制台或使用端点获取:
curl -X GET <KEYCLOAK_HOST>/auth/admin/realms/<REALM_NAME>/users/?username=dummy_user
从 JSON
响应中提取用户 ID
。然后调用以下端点:
PUT <KEYCLOAK_HOST>/auth/admin/realms/<REALM_NAME>/users/<USER_ID>/reset-password
使用请求负载:
{"type":"password","value":"<THE_PASSWORD_THAT_YOU_WANT_TO_TEST>","temporary":false}
如果密码无效,您将收到 400
,您可以通过响应查看错误。此类响应的示例:
error:"invalidPasswordMinLengthMessage"
error_description:"Invalid password minimum length 8"
显然,这不适用于 username
政策,但可以轻松地在您的应用中签入该政策(例如, password != username
)