摘要验证

对于这种验证模式,让我们一起看下开发者怎么将Apache的HttpClient(https://hc.apache.org)作为底层的HTTP客户端框架。为了实现这个目标,我们需要添加下面依赖到我们项目。

<dependency>  
    <groupId>org.apache.httpcomponents</groupId>  
    <artifactId>httpclient</artifactId>  
    <version>4.3.4</version> 
</dependency>

另外,我们要我们创建RestTemplate实例的方法:

CredentialsProvider provider = new BasicCredentialsProvider(); 
CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build(); UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(username, password); 
provider.setCredentials(AuthScope.ANY, credentials); 
RestTemplate template = new RestTemplate(new DigestAuthHttpRequestFactory(host, client));

通过传递请求的工厂给模板,我们可以让HttpClient来管理摘要验证。如下所示,我们需要创建一个``的继承类:

@Override        
protected HttpContext createHttpContext(HttpMethod httpMethod, URI uri)    {                                
    AuthCache authCache = new BasicAuthCache();                                
    authCache.put(host,    new DigestScheme());                                
    BasicHttpContext localcontext = new BasicHttpContext();                                
    localcontext.setAttribute(AUTH_CACHE, authCache);                                
    return localcontext;                
}

这个类创建了一个存储了摘要凭证的HTTP上下文。

results matching ""

    No results matching ""