目前我正在将 Spring Boot 2.7 迁移到 Spring Boot 3.3,除了 OAuth 安全性之外,我几乎已经完成了所有工作,3.3 中的安全性似乎与 2.7 中的有很大不同。
由于我们有很多不同的客户端以及遗留数据,因此 API 上的情况应该没有变化。客户端应该能够透明地获取访问和请求令牌以及刷新令牌并按原样使用它们。
现在我意识到以前的 OAuth 授权服务器已映射到 /oauth 路径。例如,令牌请求端点位于 /oauth/token。
新的 OAuth 授权服务器已将其更改为 /oauth2。例如,令牌请求端点现在位于 /oauth2/token 上,客户端无法再获取令牌。
我没有找到任何有关如何将新的授权服务器端点映射到 /oauth 而不是 /oauth2 的描述。有什么办法可以做到吗?
或者有没有办法在 Spring Boot 3 中将 /oauth 上的所有请求路由到 /oauth2 ?
尝试在线查找任何帮助以将新的 Spring Boot OAuth 授权服务器映射到旧端点。
尝试应用 Http 转发映射:
@RequestMapping(path = "/oauth/token")
public void oauthForwardToOauth2(final HttpServletResponse response) {
try {
response.sendRedirect(serviceInfo.getExternalServiceURI() + "/oauth2/token/");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
但这不起作用并返回 404。看起来请求 ID 是作为 GET 转发的,而作为 POST 请求转发的。
谢谢
我能够在示例中找到正确的解决方案。只需使用 AuthorizationServerSettings 并将其公开为 Bean。
@Bean
public AuthorizationServerSettings authorizationServerSettings() {
return AuthorizationServerSettings
.builder()
.tokenEndpoint("/oauth/token")
.tokenRevocationEndpoint("/oauth/revoke-token")
.build();
}
这按预期工作,并且还可以以相同的方式设置其他相关端点。