1

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

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

是否有一些文档、网站或其他任何东西,描述如何实现这个?

非常感谢你 !

4

1 回答 1

2

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

当满足以下条件时,将自动使用 PKCE:

  1. client-secret被省略(或为空)

  2. client-authentication-method设置为“无”(ClientAuthenticationMethod.NONE

于 2020-04-15T15:22:09.097 回答