Keycloak、PKCE 和外部 IDP

Posted

技术标签:

【中文标题】Keycloak、PKCE 和外部 IDP【英文标题】:Keycloak, PKCE and external IDP 【发布时间】:2021-01-10 06:08:47 【问题描述】:

我有一个需要与 IDP 联合的要求。我过去从未遇到过问题,在这种情况下,我遇到问题是因为第三方/外部 IDP 启用并执行了 PKCE。

有没有办法联合到启用了 PKCE 的 IDP。基本上换句话说,我应该能够将 code_challenge 和 code_challenge_method 转发/发送到外部 IDP。我可以在我的 IDP 上启用 PKCE 而不会出现任何问题,并在需要时将相同的标头转发到外部 IDP,但我看不到这样做的方法。我也尝试在身份提供者配置上配置“转发查询参数”字段,但无济于事。

但是我遇到了这张票 https://issues.redhat.com/browse/KEYCLOAK-9809,它在哪里说不支持,因为它只支持公共客户 - 现在仍然如此吗?

除此之外,如果不支持此功能,建议的解决方法是什么?我的意思是我可以要求外部 IDP 人员更改他们的配置,但在提出出路之前我想知道推荐的方式。 非常感谢。

【问题讨论】:

遇到了同样的问题。你解决了吗? 不。但是,我在 keycloak 线程上发布了一个问题并获得了此票的链接 - github.com/keycloak/keycloak/pull/7381 - 据此 - 问题在 keycloak 13.0.0 中得到解决 【参考方案1】:

问题显然已在票证上解决 - https://github.com/keycloak/keycloak/pull/7381

根据这张票 - 问题在版本 13.0.0 中得到解决。不幸的是,我已经离开了这个项目 - 所以如果有人可以确认这适用于 13.0.0 - 我可以将其标记为答案并关闭帖子。

【讨论】:

以上是关于Keycloak、PKCE 和外部 IDP的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 keycloak-(nodejs-)connect 以使用 PKCE?

无法使用 openid_client 通过带有 keycloak 的 pkce Flutter 应用程序进行身份验证

在 Keycloak 中禁用刷新令牌

使用openid_client通过带有ke​​ycloak的pkce颤振应用程序进行身份验证后如何获取刷新令牌?

带有外部身份提供者的 Keycloak 失败

Keycloak - spring boot - 外部登录网页