Estamos desarrollando un servidor WebDAV en Java que nos gustaría que sirviera como cliente del Explorador de archivos de Windows. Puedo ejecutar el siguiente curl
comando que da una buena respuesta:
>curl -i -X OPTIONS http://localhost:8080/storage-explorer/rest/dav -u joe:JoeSchmo1!
Si intento "Asignar unidad de red" usando el Explorador de archivos mientras especifico el mismo usuario y contraseña que en el curl
comando, obtengo una respuesta "no autorizada".
Estamos desarrollando un servidor WebDAV en Java que nos gustaría que sirviera como cliente del Explorador de archivos de Windows. Puedo ejecutar el siguiente comando curl que da una buena respuesta:
curl -i -X OPCIONES http://localhost:8080/storage-explorer/rest/dav -u joe:JoeSchmo1! Si intento "Asignar unidad de red" usando el Explorador de archivos mientras especifico el mismo usuario y contraseña que en el comando curl, obtengo una respuesta "no autorizada".
Examiné las solicitudes y respuestas usando WireShark. Para curl
, veo:
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
Para el Explorador de archivos, veo:
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>
Otra rareza es que puedo ver la actividad en el registro de nuestra aplicación web para la curl
solicitud, pero no para la solicitud del Explorador de archivos.
¿Cuál es la diferencia importante entre las dos solicitudes de OPCIONES que provoca las diferentes respuestas? ¿Qué puedo hacer desde el Explorador de archivos para que genere una solicitud aceptable, por ejemplo, una equivalente a curl
's?
Basado en estoartículo, Solía regedit
modificar la HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel
configuración para permitir http, pero no hizo ninguna diferencia.
Estoy abierto a cualquier sugerencia de depuración.
Respuesta1
La diferencia importante es esta parte:
Authorization: Basic am9lOkpvZVNjaG1vMSE=
La cadena después de la palabra "Básico" es una codificación base64 de su nombre de usuario y contraseña. Evidentemente su servidor WebDAV no permite el acceso anónimo a este recurso.
No puedo saber cómo están programados su página y el código del servidor, pero evidentemente el nombre de usuario/contraseña ingresados no se pasan al servidor como dentro de la solicitud generada.
Una alternativa a pasar el usuario/contraseña a través de un Authorization
encabezado es hacerlo mediante parámetros de consulta agregados a la URL, como http://example.com?u=username,p=password
. Otra opción es: .http://username:[email protected]/
Su servidor WebDAV debe estar programado para comprender dichos parámetros.