Der Windows-Datei-Explorer „Netzlaufwerk verbinden“ generiert eine HTTP OPTIONS-Anforderung, die nicht autorisiert ist

Der Windows-Datei-Explorer „Netzlaufwerk verbinden“ generiert eine HTTP OPTIONS-Anforderung, die nicht autorisiert ist

Wir entwickeln einen WebDAV-Server in Java, den wir einem Windows-Datei-Explorer-Client bereitstellen möchten. Ich kann den folgenden curlBefehl ausführen, der eine gute Antwort liefert:

>curl -i -X OPTIONS http://localhost:8080/storage-explorer/rest/dav -u joe:JoeSchmo1!

Wenn ich versuche, mithilfe des Datei-Explorers ein „Netzlaufwerk zuzuordnen“, und dabei denselben Benutzer und dasselbe Kennwort wie im curlBefehl angebe, erhalte ich die Antwort „nicht autorisiert“.

Bildbeschreibung hier eingeben

Wir entwickeln einen WebDAV-Server in Java, den wir einem Windows-Datei-Explorer-Client bereitstellen möchten. Ich kann den folgenden Curl-Befehl ausführen, der eine gute Antwort liefert:

curl -i -X ​​OPTIONS http://localhost:8080/storage-explorer/rest/dav -u joe:JoeSchmo1! Wenn ich versuche, mit dem Datei-Explorer ein „Netzlaufwerk zuzuordnen“, während ich denselben Benutzer und dasselbe Passwort angebe wie im curl-Befehl, erhalte ich die Antwort „nicht autorisiert“.

Ich habe die Anfragen und Antworten mit WireShark untersucht. Für curlsehe ich:

OPTIONS /storage-explorer/rest/dav HTTP/1.1
Host: localhost:8080
Authorization: Basic am9lOkpvZVNjaG1vMSE=
User-Agent: curl/8.4.0
Accept: */*

HTTP/1.1 200 OK
Expires: 0
Cache-Control: no-cache, no-store, must-revalidate
Server: milton.io-3.0.0.1
Pragma: no-cache
DAV: 1, 2
Accept-Ranges: bytes
Date: Wed, 27 Mar 2024 17:46:05 GMT
Allow: HEAD, PROPFIND, REPORT, OPTIONS, HEAD, PROPPATCH
Connection: keep-alive
Content-Length: 0
MS-Author-Via: DAV

Im Datei-Explorer wird Folgendes angezeigt:

OPTIONS /storage-explorer/rest/dav HTTP/1.1
Connection: Keep-Alive
User-Agent: Microsoft-WebDAV-MiniRedir/10.0.19045
translate: f
Host: localhost:8080

HTTP/1.1 401 Unauthorized
Expires: 0
Connection: keep-alive
WWW-Authenticate: Basic realm="ApplicationRealm"
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: text/html;charset=UTF-8
Content-Length: 71
Date: Wed, 27 Mar 2024 18:06:34 GMT

<html><head><title>Error</title></head><body>Unauthorized</body></html>

Eine weitere Merkwürdigkeit ist, dass ich im Protokoll unserer Webanwendung Aktivität für die curlAnfrage sehen kann, aber nicht für die Datei-Explorer-Anfrage.

Was ist der wichtige Unterschied zwischen den beiden OPTIONS-Anfragen, der die unterschiedlichen Antworten verursacht? Was kann ich im Datei-Explorer tun, damit er eine akzeptable Anfrage generiert, z. B. eine, die curl's entspricht?

Basierend aufArtikel, ich habe regeditdie HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevelEinstellung geändert, um http zuzulassen, aber es hat keinen Unterschied gemacht.

Ich bin für alle Vorschläge zur Fehlerbehebung offen.

Antwort1

Der wichtige Unterschied ist dieser Teil:

Authorization: Basic am9lOkpvZVNjaG1vMSE=

Die Zeichenfolge nach dem Wort „Basic“ ist eine Base64-Kodierung Ihres Benutzernamens und Passworts. Ihr WebDAV-Server erlaubt offensichtlich keinen anonymen Zugriff auf diese Ressource.

Ich kann nicht wissen, wie Ihre Seite und der Servercode programmiert sind, aber offensichtlich werden der eingegebene Benutzername/das Passwort nicht wie in der generierten Anfrage an den Server weitergegeben.

Eine Alternative zur Übergabe des Benutzers/Passworts über einen Authorization Header besteht darin, dies über an die URL angehängte Abfrageparameter zu tun, wie z http://example.com?u=username,p=password. B. . Eine andere Möglichkeit ist: .http://username:[email protected]/

Ihr WebDAV-Server sollte so programmiert sein, dass er solche Parameter versteht.

verwandte Informationen