Criar um cliente que faça autenticação Digest em um servidor REST

Preciso de uma ajuda, não consegui uma forma fácil de autenticar em um servidor REST com autenticação Digest.
Entendo que o método de autenticação Digest é padrão, então deve ter algo pronto que não me faça ter que interpretar os cabeçalhos, fazer o algoritmo de reposta e enviar a chave de confirmação.

-> Send request
<- 401 - Authorization Required
Www-Authenticate: Digest realm=“www.XXXX.com”, qop=“auth”, nonce=“9d27377099ff7ab15a9bd720c3dfaa4b”, opaque=“79d7518d51dea057a55960605d8cc320”

-> Responder ao servidor
Authorization: Digest username=…

<- 201 OK :slight_smile:

  public int connectToApi(String username, String password, String url, int port) throws Exception 
    {
    	this.setUrl(url);
    	
		/**
		 * HTTP client
		 */
        httpclient = new DefaultHttpClient();
        
        List<String> authpref = new ArrayList<String>();
        authpref.add(AuthPolicy.DIGEST);
        httpclient.getParams().setParameter(AuthPNames.CREDENTIAL_CHARSET, authpref);
        
        AuthScope scope =  new AuthScope(url,port, AuthScope.ANY_REALM);
        Credentials credentials =  new UsernamePasswordCredentials(username, password);
        
		httpclient.getCredentialsProvider().setCredentials(scope , credentials); 

		httpclient.addRequestInterceptor(new HttpRequestInterceptor() {
			@Override
		    public void process(
		            HttpRequest request, HttpContext context)
		            throws HttpException, IOException {
		        request.setHeader(HTTP.USER_AGENT, USER_AGENT);
		    }
		});
		
		httpclient.addResponseInterceptor(new HttpResponseInterceptor() {
			
			@Override
			public void process(HttpResponse response, HttpContext context)
					throws HttpException, IOException {
				setResponseSession(response.getFirstHeader(SESSIONKEY));
			}
		});
		
		HttpGet httpget = new HttpGet(url);
		HttpResponse response =  httpclient.execute(httpget);
		
		this.setResponsecode(response.getStatusLine().getStatusCode());
		
		return this.getResponsecode();
    }