1

我正在尝试在 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"}

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

4

2 回答 2

2

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

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

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

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

于 2021-10-15T14:52:24.583 回答
0

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

-H: 'content-type: application/x-www-form-url-encoded'
于 2021-10-03T12:15:15.737 回答