with curlopt_userpwd auth curl http-basic-authentication

curlopt_userpwd - curl-- user



Autenticación básica HTTP: ¿cuál es la experiencia esperada del navegador? (6)

Cuando un servidor permite el acceso a través de la autenticación HTTP básica, ¿cuál es la experiencia que se espera que tenga el navegador?

Normalmente hago esto con curl:

curl -u myusername:mypassword http://somesite.com

Y funciona bien. Sin embargo, en este momento no tengo acceso a curl (historia larga), y quiero hacerlo desde el navegador web, si es posible.

Pensé que la forma en que debía funcionar Basic Auth era: escribo la url que quiero, el servidor decide que no estoy autorizado, devuelve el código de respuesta 401 y escribo mi nombre de usuario y contraseña en un mensaje. Si es correcto, la página se carga!

Sin embargo, en somesite.com, no recibo ninguna solicitud de autorización, solo una página que dice que no estoy autorizado. ¿Somesite no implementó correctamente el flujo de trabajo de Autenticación básica o hay algo más que deba hacer?


WWW-Autenticar el encabezado

También puede obtener esto si el servidor envía un código de respuesta 401 pero no configura correctamente el encabezado WWW-Authenticate. Debería saberlo, lo he solucionado con el código propio porque las aplicaciones de VB no mostraban la solicitud de autenticación.


Es posible que tenga un nombre de usuario / contraseña inválido en su navegador. Intenta borrarlos y vuelve a comprobar.

Si está utilizando IE y somesite.com se encuentra en su zona de seguridad de Intranet, es posible que IE le esté enviando sus credenciales de Windows automáticamente.


Has probado ?

curl somesite.com --user username:password


Para ayudar a todos a evitar la confusión, reformularé la pregunta en dos partes.

Primero: "¿cómo puedo hacer con un navegador ese comando curl?" .

En el navegador, puede hacer una autenticación http básica primero esperando que aparezca el mensaje o editando la URL si sigue este formato: http://myusername:[email protected]

NB: el comando curl mencionado en la pregunta está perfectamente bien, si tiene una línea de comandos y un curl instalados. ;)

Referencias:

También de acuerdo con la página del manual de CURL https://curl.haxx.se/docs/manual.html

HTTP Curl also supports user and password in HTTP URLs, thus you can pick a file like: curl http://name:[email protected]/full/path/to/file or specify user and password separately like in curl -u name:passwd http://machine.domain/full/path/to/file HTTP offers many different methods of authentication and curl supports several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which method to use, curl defaults to Basic. You can also ask curl to pick the most secure ones out of the ones that the server accepts for the given URL, by using --anyauth. NOTE! According to the URL specification, HTTP URLs can not contain a user and password, so that style will not work when using curl via a proxy, even though curl allows it at other times. When using a proxy, you _must_ use the -u style for user and password.

La segunda y verdadera pregunta es "Sin embargo, en somesite.com, no recibo ninguna solicitud de autorización, solo una página que dice que no estoy autorizada. ¿No implementó correctamente el flujo de trabajo de Autenticación Básica o hay algo otra cosa que necesito hacer? "

La documentación de curl dice que la opción -u admite muchos métodos de autenticación, siendo Basic el predeterminado.


Puedes usar Postman un plugin para Chrome. Ofrece la posibilidad de elegir el tipo de autenticación que necesita para cada una de las solicitudes. En ese menú puede configurar usuario y contraseña. Postman traducirá automáticamente la configuración a un encabezado de autenticación que se enviará con su solicitud.


Si no hay credenciales proporcionadas en los encabezados de solicitud, la siguiente es la respuesta mínima requerida para que IE solicite al usuario las credenciales y vuelva a enviar la solicitud.

Response.Clear(); Response.StatusCode = (Int32)HttpStatusCode.Unauthorized; Response.AddHeader("WWW-Authenticate", "Basic");