【问题标题】:How to disable default Spring OAuth2 REST APIs?如何禁用默认的 Spring OAuth2 REST API?
【发布时间】:2019-08-04 03:32:42
【问题描述】:

我们使用以下版本的spring-security-oauth2:

<dependency>
        <groupId>org.springframework.security.oauth</groupId>
        <artifactId>spring-security-oauth2</artifactId>
        <version>2.0.11.RELEASE</version>
</dependency>

在启用授权服务器并对其进行配置时,框架会启用默认 API,例如“/oauth/check_token”或“/oauth/token_key”。

我不使用这些 API(“oauth/token”除外)并希望禁用它们以防止误用。目前,我正在覆盖这些 url 的映射作为解决方法。我尝试在组件扫描中使用排除过滤器,但没有效果。有没有更方便的方法来禁用这些 API?

【问题讨论】:

  • 将这些端点设置为denyAll()还不够吗?
  • @dur 我用 http.authorizeRequests().antMatchers("/oauth/error").denyAll();它没有任何效果。
  • 为什么我的问题被否决了?为了下次改进,知道原因会很有帮助!
  • 您必须将AuthorizationServerSecurityConfigurer#checkTokenAccess 配置为denyAll。但默认值已经是denyAll,因此您无需执行任何操作。显示您的配置。

标签: java spring spring-security spring-security-oauth2 spring-oauth2


【解决方案1】:

根据 Maven 文档:

当无法(无论出于何种原因)将项目拆分为子模块时,将使用可选依赖项。这个想法是,某些依赖项仅用于项目中的某些功能,如果不使用该功能,则不需要。理想情况下,此类功能将被拆分为依赖于核心功能项目的子模块。这个新的子项目将只有非可选依赖项,因为如果您决定使用子项目的功能,您将需要它们。

但是,由于项目不能拆分(同样,无论出于何种原因),这些依赖项被声明为可选。如果用户想要使用与可选依赖相关的功能,他们必须在自己的项目中重新声明该可选依赖。这不是处理这种情况的最清晰方法,但可选依赖项和依赖项排除都是权宜之计。

要使用可选依赖项,您必须使用工件中的标记

【讨论】:

  • 你能举个例子吗?问题是这些类都在上面显示的一个库中。我可以从包中排除特定类吗?
猜你喜欢
  • 2017-08-03
  • 2015-04-04
  • 2014-03-21
  • 2016-10-15
  • 2017-07-06
  • 2017-04-04
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
相关资源
最近更新 更多