我可以检查用户名和密码在 Keycloak 中是否有效吗?
Can I check if the userid and password are valid in Keyclock?
用户将其 ID 和密码发送给我。
然后我想检查它在密钥斗篷上是否有效。
我可以尝试登录,但会话是在 keycloak 中创建的。
登录后还想过退出。
但是这样效率很低。
有没有办法在不创建会话的情况下检查 id 和 passwd 是否有效?
如果有这种方法,我的任务就很简单了。
如果没有办法,我必须代替我的用户登录并管理令牌。
这个实现起来相对比较复杂。
据我所知out-of-the-box无法避免创建该部分。
If there is no way, I have to log in instead of my user and manage the
token instead. This is relatively more complex to implement.
不一定,因为密码和用户名已交给您的应用程序,您可以使用以下方法:
- 在 Keycloak 中创建一个启用直接大访问流的客户端(在适当的领域中)(在 OAuth2 中称为 Resource Owner Password Flow);
- 将该客户端的访问令牌设置为非常短的生命周期(例如, 一分钟)。
用用户名和密码向客户端发起POST请求,内容如下:
curl --request POST \
--url "http://$KEYCLOAK_HOST/auth/realms/$REALM_NAME/protocol/openid-connect/token" \
--data client_id=$CLIENT_ID \
--data username=$USERNAME \
--data password=$PASSWORD \
--data grant_type=password
如果您返回令牌作为响应,则表示用户凭据有效,否则这些凭据无效。
如果您取回令牌,您可以显式注销会话,例如:
ACCESS_TOKEN=$(echo $TOKEN | jq -r .access_token)
SESSION_STATE=$(echo $TOKEN | jq -r .session_state)
curl -k -X DELETE "http://$KEYCLOAK_HOST/auth/admin/realms/master/sessions/$SESSION_STATE" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN"
或者由于访问令牌的生命周期很短,让 Keycloak 最终清理会话。
用户将其 ID 和密码发送给我。 然后我想检查它在密钥斗篷上是否有效。 我可以尝试登录,但会话是在 keycloak 中创建的。
登录后还想过退出。 但是这样效率很低。
有没有办法在不创建会话的情况下检查 id 和 passwd 是否有效? 如果有这种方法,我的任务就很简单了。
如果没有办法,我必须代替我的用户登录并管理令牌。 这个实现起来相对比较复杂。
据我所知out-of-the-box无法避免创建该部分。
If there is no way, I have to log in instead of my user and manage the token instead. This is relatively more complex to implement.
不一定,因为密码和用户名已交给您的应用程序,您可以使用以下方法:
- 在 Keycloak 中创建一个启用直接大访问流的客户端(在适当的领域中)(在 OAuth2 中称为 Resource Owner Password Flow);
- 将该客户端的访问令牌设置为非常短的生命周期(例如, 一分钟)。
用用户名和密码向客户端发起POST请求,内容如下:
curl --request POST \
--url "http://$KEYCLOAK_HOST/auth/realms/$REALM_NAME/protocol/openid-connect/token" \
--data client_id=$CLIENT_ID \
--data username=$USERNAME \
--data password=$PASSWORD \
--data grant_type=password
如果您返回令牌作为响应,则表示用户凭据有效,否则这些凭据无效。
如果您取回令牌,您可以显式注销会话,例如:
ACCESS_TOKEN=$(echo $TOKEN | jq -r .access_token)
SESSION_STATE=$(echo $TOKEN | jq -r .session_state)
curl -k -X DELETE "http://$KEYCLOAK_HOST/auth/admin/realms/master/sessions/$SESSION_STATE" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN"
或者由于访问令牌的生命周期很短,让 Keycloak 最终清理会话。