尝试调用 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