¿Indy 10 TidWebDav admite la autenticación de usuarios que tienen caracteres Unicode en el nombre de usuario?

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

Pregunta

El autor de un servicio web al que estoy tratando de conectarme me dice que el nombre de usuario que envía al módulo WebDAV de su servidor web Apache está llegando sin la codificación = UTF-8 en los encabezados, o que MIME64 codifica se espera para los encabezados y, por lo tanto, el ID de usuario de la carga, que puede contener caracteres Unicode, no se está aceptando ni decodifica.

Lo que quiero saber es, ¿puedo establecer de alguna manera una propiedad en TidWebDav que cambiará la forma en que la codificación HTTP, de una manera que permitirá la autenticación de un nombre de usuario que contiene caracteres Unicode que no se pueden mostrar en ASCII simple. Pensé que tal vez la propiedad AuthenticationManager podría tener algo que ver con eso. En Indy 9 Documetnation, dice "Esta propiedad no hace nada". ¿Hace algo en Indy 10? Parece que está implementado.

Los misterios que aún no entiendo incluyen:

(1) ¿Qué hace 'logintype' (con valor entero) en WebDAV y a qué valores lo configuro? Actualmente el código que tengo lo establece en 3.

(2) ¿Necesito forzar los parámetros de codificación con Hoforceencodeparams?

(3) ¿Cómo inspecciono los encabezados en la forma en que el lado remoto los verá?

ACTUALIZACIÓN: Como dice Remy, la autenticación NTLM admite caracteres Unicode. También descubrí que puede usar cadenas codificadas UNICODE UTF8 MIME (Base64) en la autenticación básica, en el formulario "Nombre de usuario: contraseña".

¿Fue útil?

Solución

El propósito de TIdAuthenticationManager es mantener un caché de parámetros de autenticación se utilizan para iniciar sesión con éxito en URL particulares. Nada mas. TIdHTTP no utiliza ese caché durante la autenticación, pero puede utilizarlo usted mismo en el OnSelectAuthentication y OnAuthentication eventos, si lo desea.

¿Qué esquema de autenticación se está utilizando realmente en esta situación? ¿En qué encabezado (s) el módulo WebDAV está esperando que se especifique la codificación de caracteres? En Indy 10, las clases NTLM admiten cadenas Unicode durante el hashing, pero usan UTF-16, no UTF-8.

¿Puede el autor de WebDav proporcionar más información sobre lo que realmente espera de usted?

Para responder a sus otras preguntas:

(1) ¿A qué 'logintype' se refiere? No existe dicha propiedad o parámetro en Indy.

(2) HOFORCEECODEPARAMS solo se aplica al llamar a Post () para enviar un objeto TStrings para solicitudes 'Aplicación/X-WWW-Form-URLIncoded'. No tiene ningún efecto en la autenticación.

(3) Para ver qué datos se transmiten de un lado a otro a través de la conexión, puede adjuntar un TIdLog... componente, como TIdLogFile o TIdLogEvent, hacia Intercept propiedad. O use un rastreador de paquetes externos, como Wireshark.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top