我们如何禁用 /oauth/token 的 GET 选项端点,并且只在 Spring Security 中保留 POST 选项?
Posted
技术标签:
【中文标题】我们如何禁用 /oauth/token 的 GET 选项端点,并且只在 Spring Security 中保留 POST 选项?【英文标题】:How do we disable GET option endpoint for /oauth/token and only keep POST option in spring security? 【发布时间】:2019-08-19 13:54:40 【问题描述】:在我的 spring boot 项目中,我使用 spring 'spring-cloud-starter-oauth2' 依赖项来启用使用 JWT 令牌的 oauth 安全性。该依赖项使用 GET 和 POST 选项公开了 /oauth/token 的两个端点。如何禁用 GET 端点并仅保留 POST 选项? 我的大摇大摆的 UI 并显示了 GET 和 POST 端点,这就是我注意到它的方式。
【问题讨论】:
“GET”端点有什么问题?为什么要禁用它? 这是我公司的要求。他们只想要 /oauth/token 的 POST 端点。我尝试摆弄 AuthorizationServerEndpointsConfigurer 但它没有公开任何禁用端点的功能。 AFAIK 这是不可能的。您将编写自己的 OAuth2 实现(例如,在 GitHub 上 fork Spring Security OAuth2 项目)。 【参考方案1】:您可以使用以下配置显式仅允许 /oauth/token
端点上的 POST 方法:
@Configuration
@EnableAuthorizationServer
public class OAuth2AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints)
endpoints.allowedTokenEndpointRequestMethods(HttpMethod.POST);
【讨论】:
以上是关于我们如何禁用 /oauth/token 的 GET 选项端点,并且只在 Spring Security 中保留 POST 选项?的主要内容,如果未能解决你的问题,请参考以下文章
Spring OAuth2 禁用 TokenEndpoint 的 HTTP 基本身份验证
Java Spring Security:401 Unauthorized for token OAuth2 端点