尝试调用 AIA 时,Keycloak“处理对身份提供者的身份验证请求时出现意外错误”

Posted

技术标签:

【中文标题】尝试调用 AIA 时,Keycloak“处理对身份提供者的身份验证请求时出现意外错误”【英文标题】:Keycloak "Unexpected error when handling authentication request to identity provider" when trying to invoke AIA 【发布时间】:2022-01-06 23:49:11 【问题描述】:

在其他方面按预期工作自从我开始尝试实施应用程序启动操作以来,Keycloak 服务器让我头疼。

预先搜索

因为寻找主题导致实践材料的选择很少,所以我必须通过the design document for AIA,尤其是流程部分。

环境

钥匙斗篷 15 PostgreSQL 数据库后端 Keycloak 作为 k8s 部署 使用中的客户端具有用于开发目的的临时全部范围 带有 keycloak-connect 的 Node.JS 后端并表示为服务器

我尝试过的

根据设计文档 (Here is an entry to google groups where it's said that the feature "pretty much turned out as designed"),流程应构造为

../realms/myrealm/protocol/openid-connect/auth
    ?response_type=code
    &client_id=myclient
    &redirect_uri=https://myclient.com
    &kc_action=update_profile

在我的模板引擎中产生了这段代码:

`$keycloak.config.realmUrl/protocol/openid-connect/auth?response_type=code&client_id=$keycloak.config.clientId&redirect_uri=$new URLSearchParams("http://localhost:3000/account").toString()&kc_action=update_profile`

(pug variable) keycloak.config 使用 keycloak.getConfig() 填充,其中 keycloak 是 keycloak-connect 实例。

模板引擎正确地将变量替换为指向我的 keycloak 实例的链接,在该链接中我会看到以下错误消息(相当于德语):

Unexpected error when handling authentication request to identity provider

(德语:

Unerwarteter Fehler während der Bearbeitung der Anfrage an den Identity Provider.

)

没有配置其他身份提供者。

问题

如果设计文档中描述的方式导致此错误,如何正确调用我的 Keycloak 以启动 AIA?

【问题讨论】:

【参考方案1】:

经过我自己的研究,我现在开始工作了。 该错误消息似乎具有误导性,因为我没有在该实例上配置其他身份提供程序。

kc_action 参数应全部大写。所以

`$keycloak.config.realmUrl/protocol/openid-connect/auth?response_type=code&client_id=$keycloak.config.clientId&redirect_uri=$new URLSearchParams("http://localhost:3000/account").toString()&kc_action=update_profile`

应该是

`$keycloak.config.realmUrl/protocol/openid-connect/auth?response_type=code&client_id=$keycloak.config.clientId&redirect_uri=$new URLSearchParams("http://localhost:3000/account").toString()&kc_action=UPDATE_PROFILE`

这需要记录在某个地方供人们查找,因为我没有看到“文档”中明确提到它。

I also raised an enhancement request to the Keycloak documentation to document AIAs officially

【讨论】:

以上是关于尝试调用 AIA 时,Keycloak“处理对身份提供者的身份验证请求时出现意外错误”的主要内容,如果未能解决你的问题,请参考以下文章

我收到状态 401 错误:当我尝试通过 keycloak 调用我的 Secured API 时未授权

keycloak 中的“参数 client_assertion_type 丢失”

与 Keycloak 身份验证插件集成时,无法从 rest 客户端调用 nuxeo rest api

keycloak API 出现 403 错误

尝试使用 helm 在 Kubernetes Pod 中启动时,Keycloak 崩溃

在使用 Keycloak 保护的 web 应用程序中获取登录用户名