come dice già la domanda, sto cercando di fare l'autenticazione digest in Android.
Fino ad ora ho usato il DefaultHttpClient
ed è metodo di autenticazione (utilizzando UsernamePasswordCredentials
e così via), ma è sconsigliato in quanto Android 5 e sarà rimosso in Android 6.
Quindi sto per passare dalla DefaultHttpClient
a HttpUrlConnection
.
Ora sto cercando di ottenere l'autenticazione del digest, che dovrebbe funzionare abbastanza semplici come spiegato here:Autenticazione del digest in Android utilizzando HttpURLConnection
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
Ma la getPasswordAuthentication
ottiene mai chiamato per qualche motivo.
Durante la mia ricerca di questo problema ho trovato post diversi, dicendo che l'autenticazione digest non è supportata dallo HttpUrlConnection
in Android, ma quei post sono del 2010-2012, quindi non sono sicuro che questo sia ancora vero. Inoltre stiamo usando HttpUrlConnection
con l'autenticazione digest nella nostra applicazione java desktop, dove funziona.
Ho anche trovato alcuni post, parlando di OkHttp
. OkHttp
sembra essere utilizzato da Android sotto il cofano (per essere più specifici il HttpUrlConnectionImpl
). Ma questo HttpUrlConnectionImpl
è un po 'strano, non è nemmeno mostrato nella gerarchia di tipo Eclipse e non sono in grado di eseguirne il debug. Inoltre dovrebbe essere un com.squareup.okhttp.internal.huc.HttpUrlConnectionImpl
, mentre in Android è un com.android.okhttp.internal.http.HttpUrlConnectionImpl
.
Quindi non sono in grado di eseguire l'autenticazione digest con questo HttpUrlConnection
in Android.
Qualcuno può dirmi come farlo senza librerie esterne?
EDIT:
Il server chiede l'autenticazione digest:
WWW-Authenticate: Digest realm="Realm Name",domain="/domain",nonce="nonce",algorithm=MD5,qop="auth"
Così Basic-autenticazione shouldn' di lavoro, come il server sta chiedendo digest.
Grazie per questa risposta. È solo la versione di Androids di 'HttpUrlConnection', che non supporta digest o anche il' default java.net.HttpURLConnection'? – Springrbua
@Springrbua Solo su Android non è supportato, almeno per quanto ne so. Forse troverai fonti per l'implementazione di JDK. – Nappy
Ok, grazie per la risposta. Continuerò con il "DefaultHttpClient" per ora, ma sembra che ho bisogno di passare prima o poi quindi dovrò implementare digerire me stesso. Grazie! – Springrbua