Fa indy autenticazione supporto 10 TIdWebDav di utenti che hanno caratteri Unicode nel nome utente?

StackOverflow https://stackoverflow.com/questions/5344790

Domanda

L'autore di un servizio web che sto provando a connettersi, mi dice che il nome utente io mando a modulo WebDAV del loro web server Apache, è in arrivo senza l'encoding = utf-8 nelle intestazioni, o che MIME64 codifica è previsto per le intestazioni, e quindi, userid dell'utente caricamento, che può contenere caratteri unicode, non è stata accettata e decodificato.

Quello che voglio sapere è, in qualche modo posso impostare una proprietà in TidWebDAV che cambierà come lo fa il http codifica, in un modo che consentirà l'autenticazione di un nome utente che contiene caratteri Unicode che non possono essere mostrati in ASCII. Ho pensato che forse la proprietà AuthenticationManager potrebbe avere qualcosa a che fare con esso. In Indy 9 documetnation, si dice "questa proprietà non fa nulla". Lo fa qualcosa in Indy 10? Sembra come se fosse implementato.

I misteri non ho ancora capito includono:

(1) Cosa significa 'LoginType' (con valore intero) fare WebDAV, e quali valori fare ho impostato a? Attualmente il codice che ho set a 3.

(2) Ho bisogno di forza codifica params con hoForceEncodeParams?

(3) Come faccio a ispezionare le intestazioni nella forma che il lato remoto li vedrà?

Aggiornamento: Come Remy dice, supporta l'autenticazione NTLM caratteri Unicode. Ho anche scoperto che è possibile utilizzare unicode utf8 mimo (base64) stringhe codificati in autenticazione di base, in "username: password". Modulo

È stato utile?

Soluzione

Lo scopo di TIdAuthenticationManager è quello di mantenere una cache di parametri di autenticazione vengono utilizzati per accedere correttamente a particolari URL. Niente di più. TIdHTTP non fa uso di quella cache durante l'autenticazione, ma si può utilizzare da soli negli eventi OnSelectAuthentication e OnAuthentication, se lo si desidera.

Quale schema di autenticazione è effettivamente utilizzato in questa situazione? Quale (s) un colpo di testa è il modulo webdav aspettandosi la codifica di caratteri da specificare in? In Indy 10, le classi NTLM supportano stringhe Unicode durante l'hashing, ma usano UTF-16, UTF-8.

Può l'autore WebDAV fornire maggiori informazioni su ciò che egli è in realtà aspetta da voi?

Per rispondere alle vostre domande:

(1) Che 'LoginType' ti riferisci? Non esiste una proprietà o parametro in Indy.

(2) hoForceEncodeParams si applica solo quando si chiama Post () per inviare un TStrings oggetto per 'application / x-www-form-urlencoded' richieste. Non ha alcun effetto su di autenticazione.

(3) Per visualizzare i dati vengono trasmessi avanti e indietro attraverso la connessione, è possibile collegare un componente TIdLog..., come ad esempio TIdLogFile o TIdLogEvent, alla proprietà Intercept. O l'uso di un altro packet sniffer esterno, come Wireshark.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top