ソースを参照

添加BS 客户端

wanghui 7 年 前
コミット
5bde48f380

+ 42 - 0
src/main/java/com/goafanti/core/auth/HttpComponentsClientHttpRequestFactoryDigestAuth.java

@@ -0,0 +1,42 @@
+package com.goafanti.core.auth;
+
+
+import java.net.URI;
+import org.apache.http.HttpHost;
+import org.apache.http.client.AuthCache;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.protocol.ClientContext;
+import org.apache.http.impl.auth.DigestScheme;
+import org.apache.http.impl.client.BasicAuthCache;
+import org.apache.http.protocol.BasicHttpContext;
+import org.apache.http.protocol.HttpContext;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+ 
+public class HttpComponentsClientHttpRequestFactoryDigestAuth extends HttpComponentsClientHttpRequestFactory {
+	 
+	public HttpComponentsClientHttpRequestFactoryDigestAuth(HttpClient client) {
+        super(client);
+    }
+ 
+    @Override
+    protected HttpContext createHttpContext(HttpMethod httpMethod, URI uri) {
+        return createHttpContext(uri);
+    }
+ 
+    private HttpContext createHttpContext(URI uri) {
+        // Create AuthCache instance
+        AuthCache authCache = new BasicAuthCache();
+        // Generate DIGEST scheme object, initialize it and add it to the local auth cache
+        DigestScheme digestAuth = new DigestScheme();
+        // If we already know the realm name
+        digestAuth.overrideParamter("realm", "myrealm");
+        HttpHost targetHost = new HttpHost(uri.getHost(), uri.getPort());
+        authCache.put(targetHost, digestAuth);
+ 
+        // Add AuthCache to the execution context
+        BasicHttpContext localcontext = new BasicHttpContext();
+        localcontext.setAttribute(ClientContext.AUTH_CACHE, authCache);
+        return localcontext;
+    }
+}

+ 43 - 0
src/main/java/com/goafanti/core/auth/RestClient.java

@@ -0,0 +1,43 @@
+package com.goafanti.core.auth;
+
+import java.util.Base64;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+public class RestClient {
+	private final String BS_HOST= "http://localhost:8090/";
+	//@Test
+	public void whenSecuredRestApiIsConsumed_then200OK() {
+	    RestTemplate restTemplate = new RestTempleteConfig().getRestTemplate();
+	    ResponseEntity<String> entity = restTemplate.exchange(BS_HOST, HttpMethod.GET, null, String.class);
+	    System.out.println(entity.getStatusCode());
+	    System.out.println(entity.getBody());
+	}
+	private HttpHeaders getHeaders(){
+		String plainCredentials="dev:123456";
+		String base64Credentials = Base64.getEncoder().encodeToString(plainCredentials.getBytes());
+		HttpHeaders headers = new HttpHeaders();
+		headers.add("Authorization", "Basic " + base64Credentials);
+		return headers;
+	}
+ 
+	public String sendToBs(String apiUrl,HttpMethod method,LinkedMultiValueMap<String, String> params) {
+		RestTemplate restTemplate = new RestTemplate();
+		HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(params,getHeaders());
+		ResponseEntity<String> response = restTemplate.exchange(BS_HOST + "/" + apiUrl, method,request, String.class);
+		
+		return response.getBody();
+	}
+	
+	@Test
+	public void testLogin() {
+		System.out.println(sendToBs("login", HttpMethod.GET, null));
+	}
+}

+ 29 - 0
src/main/java/com/goafanti/core/auth/RestTempleteConfig.java

@@ -0,0 +1,29 @@
+package com.goafanti.core.auth;
+
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.springframework.web.client.RestTemplate;
+
+
+public class RestTempleteConfig {
+	public RestTemplate getRestTemplate() {
+		CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider())
+				.useSystemProperties().build();
+		HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactoryDigestAuth(
+				client);
+ 
+		return new RestTemplate(requestFactory);
+	}
+ 
+	private CredentialsProvider provider() {
+		CredentialsProvider provider = new BasicCredentialsProvider();
+		UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("dev", "123456");
+		provider.setCredentials(AuthScope.ANY, credentials);
+		return provider;
+	}
+}