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

0 respostas
lucas.lnx

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();
    }
Criado 23 de outubro de 2011
Respostas 0
Participantes 1