用于在 OAuth 2.0 资源服务器上配置 jwk set uri 的属性是
spring.security.oauth2.resource.jwt.jwk.set-uri
这是明智的,因为它接近遗留 oauth 的属性层次结构。 (这仅在叶子中有所不同,在遗留 oauth 中称为key-set-uri
。)
用户可以通过以下属性名称更清楚地了解他们正在配置的内容:
spring.security.oauth2.resource-server.jwt.jwk-set-uri
这有几个原因。
首先,在整个 Spring Security 代码库中,资源服务器一直被这样称呼,因此偏离这一点感觉不一致。
虽然对于那些习惯于旧版 oauth 属性集的人来说,“资源服务器”可能会感觉很熟悉,但“资源服务器”更清晰,因为“资源”还带有其他语义含义,包括在整个 Spring 中使用的更普遍的含义,指的是某种外部资产就像文件或数据库一样。
最后,DSL 之间的对称性是有价值的:
http.
oauth2().
resourceServer()
.jwt()
以及属性名称:
spring.security:
oauth2:
resource-server:
jwt:
至于jwk.set-uri
vs jwk-set-uri
,后者在语义上更清晰,因为规范中没有“set-uri”的概念,但有“ JWK Set ”的概念:
JWK Set 表示一组 JWK 的 JSON 对象。 JSON 对象必须有一个“keys”成员,它是一个 JWK 数组。
虽然 JWK Set 是否可以通过 uri 以外的方式进行配置存在争议,但jwk-set.uri
它可能不太适合引导来支持我们的其他用例。例如,可以合理地假设用户可能希望手动提供 JWK 集(硬编码)。但是,这不允许用户配置密钥轮换,这对于那些仅需要它进行测试等的人来说是一种边缘情况。
此外,虽然不太重要,但现有 DSL 之间有一个很好的对称性:
http.
oauth2().
resourceServer()
.jwt()
.jwkSetUri("https://issuer/jwk-set-uri");
以及拟议的财产名称:
spring.security:
oauth2:
resource-server:
jwt:
jwk-set-uri: https://issuer/jwk-set-uri