6bcf4c10c1e1e3a4ff9f26383162e0664639f49d
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.admin.aggr.configuration;
2
3 import javax.net.ssl.SSLContext;
4 import javax.net.ssl.SSLSocketFactory;
5
6 import org.apache.http.conn.ssl.NoopHostnameVerifier;
7 import org.apache.http.ssl.SSLContextBuilder;
8 import org.apache.http.ssl.SSLContexts;
9 import org.springframework.beans.factory.annotation.Value;
10 import org.springframework.context.annotation.Bean;
11 import org.springframework.context.annotation.Configuration;
12 import org.springframework.util.ResourceUtils;
13
14 import feign.Client;
15 import lombok.extern.slf4j.Slf4j;
16
17 @Slf4j
18 @Configuration
19 public class FeignClientConfiguration {
20
21   @Bean
22   public Client feignClient(
23       @Value("${cas-server-sa-api.client-auth.enabled:false}") boolean enabled,
24       @Value("${cas-server-sa-api.client-auth.key-password:}") String keyPassword,
25       @Value("${cas-server-sa-api.client-auth.key-store:}") String keyStore,
26       @Value("${cas-server-sa-api.client-auth.key-store-password:}") String keyStorePassword,
27       @Value("${cas-server-sa-api.client-auth.trust-store:}") String trustStore,
28       @Value("${cas-server-sa-api.client-auth.trust-store-password:}") String trustStorePassword) {
29     
30     if (!enabled) {
31       return new Client.Default(null, null);
32     }
33     
34     if (keyStore == null || keyStore.isEmpty()) {
35       return new Client.Default(null, null);
36     } else {
37       try {
38         SSLContextBuilder sslContextBuilder = SSLContexts.custom();
39         if (trustStore == null || trustStore.isEmpty()) {
40         } else {
41           sslContextBuilder
42 //            .loadTrustMaterial(TrustAllStrategy.INSTANCE)
43             .loadTrustMaterial(
44                 ResourceUtils.getFile(trustStore),
45                 trustStorePassword.toCharArray()
46             );
47         }
48         
49         sslContextBuilder
50           .loadKeyMaterial(
51               ResourceUtils.getFile(keyStore),
52               keyStorePassword.toCharArray(),
53               keyPassword.toCharArray());
54         
55         SSLContext sslContext = sslContextBuilder.build();
56         
57         SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
58
59         Client trustSSLSockets = new Client.Default(sslSocketFactory, new NoopHostnameVerifier());
60         log.info("feignClient load with ssl.");
61         return trustSSLSockets;
62       } catch (Exception e) {
63         e.printStackTrace();
64       }
65     }
66     
67     return new Client.Default(null, null);
68   }
69
70 }