Spring Cloud 放松模板的SSL驗(yàn)證

2024-01-02 16:47 更新

WireMock允許您使用“ https” URL協(xié)議對(duì)“安全”服務(wù)器進(jìn)行存根。如果您的應(yīng)用程序希望在集成測(cè)試中聯(lián)系該存根服務(wù)器,它將發(fā)現(xiàn)SSL證書(shū)無(wú)效(自安裝證書(shū)的常見(jiàn)問(wèn)題)。最好的選擇通常是將客戶端重新配置為使用“ http”。如果這不是一種選擇,則可以要求Spring配置忽略SSL驗(yàn)證錯(cuò)誤的HTTP客戶端(當(dāng)然,僅對(duì)測(cè)試而言如此)。

為了使此工作最小,您需要在應(yīng)用中使用Spring Boot RestTemplateBuilder,如以下示例所示:

@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
	return builder.build();
}

您需要RestTemplateBuilder,因?yàn)闃?gòu)建器是通過(guò)回調(diào)傳遞的,以對(duì)其進(jìn)行初始化,因此此時(shí)可以在客戶端中設(shè)置SSL驗(yàn)證。如果您使用的是@AutoConfigureWireMock批注或存根運(yùn)行程序,則這會(huì)在測(cè)試中自動(dòng)發(fā)生。如果使用JUnit @Rule方法,則還需要添加@AutoConfigureHttpClient批注,如以下示例所示:

@RunWith(SpringRunner.class)
@SpringBootTest("app.baseUrl=https://localhost:6443")
@AutoConfigureHttpClient
public class WiremockHttpsServerApplicationTests {

	@ClassRule
	public static WireMockClassRule wiremock = new WireMockClassRule(
			WireMockSpring.options().httpsPort(6443));
...
}

如果您使用的是spring-boot-starter-test,則將Apache HTTP客戶端放在類(lèi)路徑上,并由RestTemplateBuilder選擇它,并將其配置為忽略SSL錯(cuò)誤。如果使用默認(rèn)的java.net客戶端,則不需要注釋?zhuān)ǖ粫?huì)造成任何危害)。 當(dāng)前不支持其他客戶端,但可能會(huì)在將來(lái)的版本中添加。

要禁用自定義RestTemplateBuilder,請(qǐng)將wiremock.rest-template-ssl-enabled屬性設(shè)置為false。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)