Autenticació bàsica de servidor intermediari amb OkHttp: atureu els reintents rebutjats
Feu servir el proxyAuthenticator d'OkHttp per als reptes del servidor intermediari i atureu la repetició d'un intent d'autorització sense canvis.
Per a un servidor intermediari HTTP que ofereix autenticació bàsica, proxyAuthenticator d'OkHttp pot retornar una petició amb credencials. Retorneu null després que un intent d'autorització ja hagi estat rebutjat, en lloc de tornar a enviar la mateixa resposta:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
Aquest esbós utilitza valors del compte de la configuració secreta de l'aplicació. La guàrdia permet un intent inicial i n'atura un de repetit. Implementa Basic, no tots els esquemes que un servidor intermediari pugui anunciar; examineu el repte abans de triar aquesta resposta.
Si el resultat final continua sent 407, compareu el servidor intermediari seleccionat, l'esquema anunciat i la identitat del compte documentada. Una contrasenya rebutjada, un mètode no admès i una forma de nom d'usuari incorrecta necessiten correccions diferents. Conserveu aquestes observacions i l'estat final en diagnòstics redactats.
CONNECT té un altre context de devolució de trucada: OkHttp documenta un repte sintètic d'autenticació prèvia del servidor intermediari abans d'obrir el túnel. Tracteu aquest context segons l'API en lloc de suposar que cada devolució representa una resposta de destinació ordinària.
L'authenticator separat és per a l'autenticació del servidor de destinació. Manteniu les seves credencials separades de l'inici de sessió del servidor intermediari; un interceptor genèric que posa una contrasenya del servidor intermediari a cada petició sortint la pot enviar a l'àmbit equivocat.
Els informes històrics també descriuen errors d'implementació, com ara el tractament del cos de resposta rebutjat del servidor intermediari. Registreu la versió d'OkHttp i l'intercanvi final abans d'atribuir una fallada actual a un informe antic. La decisió de reintent encara hauria d'aturar un intent de credencials sense canvis que no té cap resposta nova útil.