Spring 带 Keycloak 的安全客户端 PKCE

Spring security client PKCE with Keycloak

我有一个 Java 应用程序使用 Spring Security 5.2.1 并由 Keycloak 保护。
Keycloak 中的客户端是 public openid-connect 客户端。
它工作正常。

我现在需要使用 PKCE(代码交换证明密钥)。
由于 PKCE 的客户端支持已添加到 Spring Security 5.2.0.M2 并且我使用 Spring Security 5.2.1,因此我可以使用 Spring Security 来实现它。
这是个好消息。
'bad' 消息是我在 Web 上或 Spring 安全文档中几乎找不到任何关于我必须如何实际实施它的信息。 在 keycloak.json 中添加 "enable-pkce": true 不起作用,而且我没有找到任何明确的示例来说明该怎么做。

是否有一些文档、网站或其他任何东西描述如何实现此功能?

非常感谢!

来自 Spring 安全参考文档 https://docs.spring.io/spring-security/site/docs/5.3.1.RELEASE/reference/html5/#initiating-the-authorization-request

PKCE will automatically be used when the following conditions are true:

  1. client-secret is omitted (or empty)

  2. client-authentication-method is set to "none" (ClientAuthenticationMethod.NONE)