1 package com.supwisdom.institute.backend.gateway.authn.remote.configuration;
3 import javax.net.ssl.SSLContext;
5 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
6 import org.apache.http.impl.client.CloseableHttpClient;
7 import org.apache.http.impl.client.HttpClients;
8 import org.apache.http.ssl.SSLContextBuilder;
9 import org.apache.http.ssl.SSLContexts;
10 import org.springframework.beans.factory.annotation.Value;
11 import org.springframework.context.annotation.Bean;
12 import org.springframework.context.annotation.Configuration;
13 import org.springframework.http.client.ClientHttpRequestFactory;
14 import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
15 import org.springframework.http.client.SimpleClientHttpRequestFactory;
16 import org.springframework.util.ResourceUtils;
17 import org.springframework.web.client.RestTemplate;
20 public class AuthnRestTemplateConfig {
23 public ClientHttpRequestFactory simpleClientHttpRequestFactory(
24 @Value("${sw-backend-base-api.client-auth.enabled:false}") boolean enabled,
25 @Value("${sw-backend-base-api.client-auth.key-password:}") String keyPassword,
26 @Value("${sw-backend-base-api.client-auth.key-store:}") String keyStore,
27 @Value("${sw-backend-base-api.client-auth.key-store-password:}") String keyStorePassword,
28 @Value("${sw-backend-base-api.client-auth.trust-store:}") String trustStore,
29 @Value("${sw-backend-base-api.client-auth.trust-store-password:}") String trustStorePassword
32 SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
33 factory.setReadTimeout(5000);// 单位为ms
34 factory.setConnectTimeout(5000);// 单位为ms
38 SSLContextBuilder sslContextBuilder = SSLContexts.custom();
40 if (trustStore == null || trustStore.isEmpty()) {
45 ResourceUtils.getFile(trustStore),
46 trustStorePassword.toCharArray()
48 } catch (Exception e) {
53 if (keyStore == null || keyStore.isEmpty()) {
54 SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
55 factory.setReadTimeout(5000);// 单位为ms
56 factory.setConnectTimeout(5000);// 单位为ms
62 ResourceUtils.getFile(keyStore),
63 keyStorePassword.toCharArray(),
64 keyPassword.toCharArray());
65 } catch (Exception e) {
71 SSLContext sslContext = sslContextBuilder.build();
73 SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
75 SSLConnectionSocketFactory.getDefaultHostnameVerifier());
77 CloseableHttpClient httpClient = HttpClients.custom()
78 .setSSLSocketFactory(sslsf)
81 HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
82 factory.setReadTimeout(5000);// 单位为ms
83 factory.setConnectTimeout(5000);// 单位为ms
85 } catch (Exception e) {
89 SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
90 factory.setReadTimeout(5000);// 单位为ms
91 factory.setConnectTimeout(5000);// 单位为ms
95 @Bean(name = "authnAccountRestTemplate")
96 public RestTemplate authnAccountRestTemplate(ClientHttpRequestFactory requestFactory) {
97 return new RestTemplate(requestFactory);