Autenticação Digest no Android usando HttpURLConnection
como a pergunta já diz, estou tentando digerir autenticação no android.
Até agora eu tenho usado oDefaultHttpClient
e é o método de autenticação (usandoUsernamePasswordCredentials
e assim por diante), mas está obsoleto desde o Android 5 e será removido no Android 6.
Então, eu estou prestes a mudar deDefaultHttpClient
paraHttpUrlConnection
.
Agora estou tentando obter autenticação Digest, que deve funcionar bem simples, conforme explicadoaqui:
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
Mas ogetPasswordAuthentication
nunca é chamado por algum motivo.
Durante minha busca por esse problema, encontrei postagens diferentes, dizendo que a autenticação Digest não é suportada peloHttpUrlConnection
no android, mas essas postagens são de 2010-2012, então não tenho certeza se isso ainda é verdade. Também estamos usandoHttpUrlConnection
com autenticação digest em nosso aplicativo java para desktop, onde funciona.
Eu também encontrei alguns posts, falando sobreOkHttp
. OkHttp
parece ser usado pelo Android sob o capô (para ser mais específico oHttpUrlConnectionImpl
) Mas issoHttpUrlConnectionImpl
é um pouco estranho, nem é mostrado na hierarquia do tipo Eclipse e não consigo depurá-lo. Também deve ser umcom.squareup.okhttp.internal.huc.HttpUrlConnectionImpl
, enquanto no android é umcom.android.okhttp.internal.http.HttpUrlConnectionImpl
.
Então, eu simplesmente não sou capaz de digerir autenticação com esteHttpUrlConnection
no android.
Alguém pode me dizer como fazer isso sem bibliotecas externas?
EDITAR:
O servidor solicita a autenticação Digest:
WWW-Authenticate: Digest realm="Realm Name",domain="/domain",nonce="nonce",algorithm=MD5,qop="auth"
Portanto, a autenticação básica não deve funcionar, pois o servidor está solicitando um resumo.