当前位置: 首页 > 知识库问答 >
问题:

spring OAuth2安全单元测试

单于亮
2023-03-14

我已经开始学习OAuth2 spring安全从一个星期,所以对不起,如果问题是容易的。在我开始研究之前,这个话题对我来说似乎很容易。我将在应用程序中为Restendpoint编写测试。为了做到这一点,我将为我的资源类编写测试。但我的应用程序使用的是OAuth2。

第一个想法是配置单独的授权服务器,扩展AuthorizationServerConfigurerAdapter用于此测试。我已经将ClientDetailsService配置为在内存中持久化,并添加了InMemoryTokenService。但它不起作用。响应为401-未经授权。

现在,我只考虑使用bean DefaultTokenServices,而省略授权服务器(但如何省略?)。我没有更改“生产”资源服务器中的任何内容。

我知道如何添加不记名令牌。我正在使用OAuth2RestTemplate编写测试,并将访问令牌添加到OAuth2ClientContext。我使用conctructor DefaultOAuth2AccessToken(字符串值)创建访问令牌。我知道有TestRestTemplate,但在这种情况下,OAuth2RestTemplate对我来说似乎更好。我在用spring boot,也许那会有帮助?

我的问题是:1。最好的解决方案是什么?为了执行Restendpoint测试,配置OAuth2的最佳方法是什么?如何在没有授权服务器的情况下执行测试?也许我的理解不恰当?2是否有任何方法可以模拟授权服务器的请求?怎么做?

提前感谢合作。

我读了很多资料,包括:http://projects.spring.io/spring-security-oauth/docs/oauth2.html,但没有找到答案。

共有1个答案

薛霄
2023-03-14

提供准确答案所需的信息不多:

  1. 您正在编写单元测试或集成测试?

如果进行单元测试,您根本不应该使用授权服务器。您所需要的只是为mockMvc查询(或对等的反应)提供一个正确设置的SecurityContext。

如果是集成测试,spring为其提供了工具,但我将集中讨论单元测试,因为我知道您正在尝试编写单元测试。

spring-security-oauth2不推荐使用,并且不支持单元测试,但我在这个问题的答案中详细说明了如何创建注释来配置这样的安全上下文。

从Version5.2(选择最新的里程碑)开始,spring-安全-测试就对使用JWT保护的单元测试@Controller提供了基本支持。如果您使用的是内省或securite@service,您将不得不参考我写的这个lib作为spring-安全团队只选择集成我的一小部分工作。

 类似资料:
  • 在我的Spring boot应用程序中,我有一个安全配置类,我正试图为其编写单元测试。这是我第一次这样做,所以我需要一些帮助。下面是代码。请提供一些帮助,我们将不胜感激。非常感谢。

  • 我试图在Angular应用程序中调用我的登录服务,但我遇到了CORS错误。我已经在WebSecurity配置适配器上添加了cors配置。我已经尝试了下面的一些配置。邮递员一切都很好。 授权服务器配置RADAPTER 资源服务器配置RADAPTER Web安全配置r适配器

  • 我正在尝试创建一个简单的安全spring boot网络项目。我可以很好地启动应用程序,安全性也很好地工作。但是,我有一些组件想要在没有安全性的情况下进行测试(或者完全测试--我根本无法使测试工作)。 我得到一个异常,指示它找不到ObjectPostProcessor,因此无法调出容器。 原因:org.SpringFramework.Beans.Factory.NoSuchBeanDefinitio

  • 单元测试的类很简单: 有人知道如何为测试禁用spring安全吗?谢谢你

  • Cookie是Web服务器发送的一小段信息,用于存储在Web浏览器上,以便以后可以被浏览器读取。这样浏览器会记住一些特定的个人信息。如果黑客获取cookie信息,则可能导致安全问题。 Cookies的属性 以下是Cookie的一些重要属性 - 它们通常是小文本文件,给定ID标记存储在计算机的浏览器目录中。 Web开发人员使用它们来帮助用户有效地浏览其网站并执行某些功能。 当用户再次浏览同一网站时,

  • 单元测试涉及测试软件应用程序的每个单元或单个组件。这是第一级软件测试。单元测试的目的是验证单元组件的性能。 单元是软件系统的单个可测试部分,并在应用程序软件的开发阶段进行测试。 此测试旨在测试隔离代码的正确性。单元组件是应用程序的单独功能或代码。白盒测试方法用于单元测试,通常由开发人员完成。 在测试级别层次结构中,单元测试是在集成和其他剩余测试级别之前完成的第一级测试。它使用模块进行测试,减少了等