保誠-保戶業務員媒合平台
wayne
2021-11-25 e28415e8f6d76ddcf0c936027669c22ed2b2e05d
pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java
@@ -1,5 +1,6 @@
package com.pollex.pam.security.provider;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.pollex.pam.config.ApplicationProperties;
import com.pollex.pam.domain.Consultant;
@@ -17,7 +18,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException;
import org.springframework.security.authentication.AuthenticationServiceException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
@@ -28,14 +32,12 @@
import org.springframework.web.client.RestTemplate;
import javax.net.ssl.SSLContext;
import java.security.GeneralSecurityException;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
@Component
public class EServiceAuthenticationProvider {
@@ -64,11 +66,15 @@
                if(E_SERVICE_LOGIN_SUCCESS_CODE.equals(eServiceResponse.getCode())){
                    return getConsultantToken(account, credentials);
                }
                throw new RuntimeException("eService login failed, eService response code = " + eServiceResponse.getCode());
            }
            throw new AuthenticationCredentialsNotFoundException("");
        } catch (Exception e) {
            throw new AuthenticationCredentialsNotFoundException("");
            throw new RuntimeException("eService http error!, response http status code = " + responseEntity.getStatusCode());
        } catch (JsonProcessingException e) {
            throw new AuthenticationServiceException("convert to json processing error!");
        } catch (GeneralSecurityException e) {
            throw new AuthenticationServiceException("General Security SSL error!");
        }
    }
@@ -87,7 +93,7 @@
        return authenticationToken;
    }
    private ResponseEntity<EServiceResponse> loginByEService(String account, String paxxword) throws Exception{
    private ResponseEntity<EServiceResponse> loginByEService(String account, String paxxword) throws JsonProcessingException, GeneralSecurityException {
        EServiceRequest dto = new EServiceRequest();
        dto.setFunc("ValidateUserLogin");
        dto.setId(account);
@@ -98,6 +104,7 @@
        String dtoJson = new ObjectMapper().writeValueAsString(dto);
        RestTemplate restTemplate = getTrustAllRestTemplate();
        settingMessageConvertesToSpecifyType(restTemplate, MediaType.ALL);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
@@ -120,4 +127,12 @@
        requestFactory.setReadTimeout(300000);
        return new RestTemplate(requestFactory);
    }
    private void settingMessageConvertesToSpecifyType(RestTemplate restTemplate, MediaType mediaType) {
        List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converter.setSupportedMediaTypes(Collections.singletonList(mediaType));
        messageConverters.add(converter);
        restTemplate.setMessageConverters(messageConverters);
    }
}