Unterstützt Indy 10 TIdWebDav die Authentifizierung von Benutzern, deren Benutzernamen Unicode-Zeichen enthalten?

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

Frage

Der Autor eines Webdienstes, zu dem ich eine Verbindung herstellen möchte, teilt mir mit, dass der Benutzername, den ich an das Webdav-Modul seines Apache-Webservers sende, ohne „encoding=utf-8“ in den Headern oder ohne die mime64-Kodierung eingeht wird für die Header erwartet und daher wird die Benutzer-ID des hochladenden Benutzers, die Unicode-Zeichen enthalten kann, nicht akzeptiert und dekodiert.

Ich möchte wissen, ob ich in TidWebDAV irgendwie eine Eigenschaft festlegen kann, die die HTTP-Kodierung so ändert, dass die Authentifizierung eines Benutzernamens möglich ist, der Unicode-Zeichen enthält, die nicht im einfachen ASCII-Format angezeigt werden können.Ich dachte, dass die AuthenticationManager-Eigenschaft möglicherweise etwas damit zu tun hat.In der Indy-9-Dokumentation heißt es: „Diese Eigenschaft macht nichts“.Macht es etwas in Indy 10?Es sieht so aus, als wäre es implementiert.

Zu den Geheimnissen, die ich noch nicht verstehe, gehören:

(1) Was macht „logintype“ (mit ganzzahligem Wert) in webdav und auf welche Werte stelle ich es ein?Derzeit ist der Code, den ich habe, auf 3 festgelegt.

(2) Muss ich Codierungsparameter mit hoForceEncodeParams erzwingen?

(3) Wie überprüfe ich die Header so, dass die Gegenseite sie sehen kann?

Aktualisieren:Wie Remy sagt, unterstützt die NTLM-Authentifizierung Unicode-Zeichen.Ich habe auch festgestellt, dass Sie in der Standardauthentifizierung Unicode-UTF8-MIME-codierte Zeichenfolgen (Base64) im Format „Benutzername:Passwort“ verwenden können.

War es hilfreich?

Lösung

Der Zweck von TIdAuthenticationManager besteht darin, einen Cache mit Authentifizierungsparametern zu speichern, die für die erfolgreiche Anmeldung bei bestimmten URLs verwendet werden.Nichts mehr. TIdHTTP verwendet diesen Cache während der Authentifizierung nicht, Sie können ihn jedoch selbst in der verwenden OnSelectAuthentication Und OnAuthentication Veranstaltungen, falls gewünscht.

Welches Authentifizierungsschema wird in dieser Situation tatsächlich verwendet?In welchen Headern erwartet das WebDAV-Modul die Angabe der Zeichenkodierung?In Indy 10 unterstützen die NTLM-Klassen Unicode-Zeichenfolgen beim Hashing, verwenden jedoch UTF-16, nicht UTF-8.

Kann der Webdav-Autor weitere Informationen darüber geben, was er tatsächlich von Ihnen erwartet?

Um Ihre anderen Fragen zu beantworten:

(1) Auf welchen „Anmeldetyp“ beziehen Sie sich?In Indy gibt es keine solche Eigenschaft oder keinen solchen Parameter.

(2) hoForceEncodeParams gilt nur, wenn Post() aufgerufen wird, um ein TStrings-Objekt für „application/x-www-form-urlencoded“-Anfragen zu senden.Es hat keine Auswirkung auf die Authentifizierung.

(3) Um zu sehen, welche Daten über die Verbindung hin und her übertragen werden, können Sie eine anhängen TIdLog... Komponente, wie z TIdLogFile oder TIdLogEvent, zum Intercept Eigentum.Oder verwenden Sie einen externen Paket-Sniffer wie Wireshark.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top