【问题标题】:Keycloak CIBA Authentication fails with "Failed to send authentication request"Keycloak CIBA 身份验证失败并显示“发送身份验证请求失败”
【发布时间】:2021-11-23 08:59:03
【问题描述】:

我正在尝试在 Keycloak 15.0.2 上设置 CIBA 端点。我已经设置了一个启用了 CIBA 端点的客户端,但是当我使用如下所示的请求点击它时:

curl -s -X POST \
-d "client_id=ciba_client_test" \
-d "client_secret=xxx" \
-d "login_hint=test_user_name" \
-d "scope=openid" \
"https://keycloak.address.com/auth/realms/poc_new/protocol/openid-connect/ext/ciba/auth"

我收到一个如下所示的错误:

{"error":"server_error","error_description":"Failed to send authentication request"}

我已检查客户端和领域的设置,但看不到任何会阻止身份验证请求的内容。

【问题讨论】:

    标签: authentication oauth-2.0 keycloak openid-connect keycloak-connect


    【解决方案1】:

    CIBA 依赖于“身份验证设备”的概念,例如智能手机,您在其上安装了某个第 3 方提供的应用程序。

    当您发送请求时,我猜 Keycloak 无法联系该第 3 方来委派身份验证过程。 您是否按照文档中的说明定义了一个? https://www.keycloak.org/docs/latest/server_admin/#provider-setting

    2021 年 11 月 24 日编辑: 我的本地测试设置有 Keycloak 15.0.2 在独立模式下运行。 'standalone.xml' 配置文件定义了一个 'ciba-http-auth-channel' 提供程序,它指向一个模拟身份验证设备的 SpringBoot 应用程序。 在尝试在容器中运行所有内容时,我确实遇到了 TLS 问题(SSLSocket 双工关闭失败,这没有任何意义)——转向标准(即无容器)方法解决了这些问题。

    旁注:我发现处理用户/登录提示的方式有一个限制:用户必须在您的领域中定义,即使他们实际上是由外部方管理的。对于生产设置,需要某种用户联合。

    【讨论】:

      【解决方案2】:

      CIBA 请求消息必须采用 URL 编码格式,但您的请求看起来没问题。试试这个标题。 Curity CIBA walkthrough 也可能提供一些有用的进一步信息。

      -H: 'content-type: application/x-www-form-url-encoded'
      

      【讨论】:

        猜你喜欢
        • 2023-03-02
        • 2021-06-24
        • 2014-01-24
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多