comuni http cliente - token Kerberos, mentre negoziale ha caratteri (carriage return linea di alimentazione) \ r \ n
-
26-09-2019 - |
Domanda
Sto cercando di utilizzare comuni Jakarta http client. Facendo autenticazione Kerberos per comunicare con un server. L'autenticazione non riesce sempre. A scavare più profondo ho scoperto che Kerberos intestazione pedina ha carrozza riga avanzamento dei caratteri di ritorno in essa che è la causa principale del problema. Perché ha \ r \ n caratteri e perché è che un problema?
Soluzione
\ r \ n caratteri nei token Kerberos è un problema perché \ R è un caratteri di controllo HTTP. Ciò significa in sostanza che il server vede solo prima riga del token e ignora quindi stare in mancanza di autenticazione. A peggiorare le cose, i prossimi calibro del token sono trattati come nuove intestazioni e non verranno formattati bene. Così http server fuori di testa.
Il motivo per cui questo accade è perché RFC 1521 specifica dice che codifica base64 lunghezza della linea è limitato a 76 caratteri. Quindi \ r \ n caratteri. E questo non funziona bene con il protocollo HTTP. Questo emerge solo se si utilizza token Kerberos che sono Base64 codificati.
Quindi la soluzione a questo è per togliere \ r \ n caratteri da Kerberos Base64 codificato intestazione token. Inoltre, le versioni precedenti di apache comuni codec base64 limite non codificante a 76 linee e quindi non è un problema. Quindi, se avete il gancio in codifica, nudo fuori i caratteri problematici. Se non si utilizza quindi la versione precedente di Apache codice comuni con commons-HttpClient.