【问题标题】:Can I check if the userid and password are valid in Keyclock?我可以检查用户名和密码在 Keycloak 中是否有效吗?
【发布时间】:2022-12-25 19:51:35
【问题描述】:

用户将其 ID 和密码发送给我。 然后我想检查它在密钥斗篷上是否有效。 我可以尝试登录,但会话是在 keycloak 中创建的。

我什至想过登录后退出。 但这是非常低效的。

有没有办法在不创建会话的情况下检查 ID 和密码是否有效? 如果有这样的方法,我的任务就很容易了。

如果没有办法,我必须代替我的用户登录并管理令牌。 这实现起来相对更复杂。

【问题讨论】:

    标签: keycloak keycloak-rest-api


    【解决方案1】:

    据我所知,没有办法避免创建会话。

    如果没有办法,我必须代替我的用户登录并管理 代币代替。这实现起来相对更复杂。

    不是真的,因为密码和用户名已交给您的应用程序,您可以使用以下方法:

    • 在 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 最终清理会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-13
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 2015-11-24
      • 2018-01-17
      • 1970-01-01
      相关资源
      最近更新 更多