0

自从我开始尝试实施应用程序启动操作以来,一个按预期工作的Keycloak 服务器让我很头疼。

事先搜索

因为寻找主题导致动手材料的选择很少,所以我必须阅读AIA 的设计文档,尤其是流程部分。

环境

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

我试过的

根据设计文档(这里是谷歌群组的一个条目,据说该功能“几乎按照设计完成”)流程应该构建为

../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()where keycloakis 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?

4

1 回答 1

0

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

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`

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

我还对 Keycloak 文档提出了增强请求,以正式记录 AIA

于 2021-12-01T09:03:15.260 回答