Est-ce que l'authentification indy de support 10 TIdWebDav des utilisateurs qui ont des caractères unicode dans le nom d'utilisateur?

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

Question

L'auteur d'un service web que je suis en train de se connecter à, me dit que le nom d'utilisateur que je vous envoie à leur module webdav du serveur Web Apache, vient en sans encoding = utf-8 dans les en-têtes, ou que le codage MIME64 est prévu pour les en-têtes, et donc, l'ID utilisateur de l'ajout de l'utilisateur, qui peut contenir des caractères unicode, n'est pas accepté et décodé.

Ce que je veux savoir est, je peux en quelque sorte définir une propriété dans TidWebDAV qui va changer la façon dont il fait le http encodage, d'une manière qui permettra l'authentification d'un nom d'utilisateur qui contient des caractères unicode qui ne peuvent pas être affichés en ascii. Je pensais que peut-être la propriété AuthenticationManager pourrait avoir quelque chose à voir avec elle. Dans indy 9 documetnation, il dit: « cette propriété ne fait rien ». Est-il faire quelque chose dans Indy 10? On dirait qu'il est mis en œuvre.

Mystères Je ne comprends pas encore inclure:

(1) Qu'est-ce que « LoginType » (avec valeur entière) faire en webdav, et quelles sont les valeurs que je l'ai mis à? Actuellement, le code que j'ai ensembles à 3.

(2) Ai-je besoin de forcer l'encodage params avec hoForceEncodeParams?

(3) Comment puis-je inspectent les en-têtes sous la forme que le côté à distance les voir?

Mise à jour: Comme le dit remy, supports d'authentification NTLM caractères unicode. J'ai aussi trouvé que vous pouvez utiliser des chaînes unicode UTF8 mime encodées (base64) dans l'authentification de base, dans « nom d'utilisateur: mot de passe ». Formulaire

Était-ce utile?

La solution

Le but de TIdAuthenticationManager est de garder un cache des paramètres d'authentification sont utilisés pour se connecter avec succès à des URL spécifiques. Rien de plus. TIdHTTP ne fait pas l'utilisation de ce cache lors de l'authentification, mais vous pouvez l'utiliser vous-même dans les événements OnSelectAuthentication et OnAuthentication, si on le souhaite.

Quel système d'authentification est effectivement utilisé dans cette situation? Quelle tête (s) est le module webdav attend le codage de caractères à préciser dans? Dans Indy 10, les classes NTLM prennent en charge les chaînes Unicode lors de hachage, mais ils utilisent UTF-16, pas UTF-8.

l'auteur peut-webdav fournir plus d'informations sur ce qu'il attend réellement de vous?

Pour répondre à vos questions:

(1) Qu'est-ce que 'LoginType' faites-vous référence? Il n'y a pas de telle propriété ou paramètre Indy.

(2) hoForceEncodeParams applique uniquement lorsque vous appelez Post () pour envoyer un objet TStrings pour les demandes 'application / x-www-form-urlencoded'. Il n'a pas d'effet sur l'authentification.

(3) Pour voir ce que les données sont transmises en arrière sur la connexion, vous pouvez joindre un composant TIdLog..., comme TIdLogFile ou TIdLogEvent, à la propriété Intercept. Ou utilisez bien un renifleur de paquets externe, tel que Wireshark.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top