266 votos

¿Puedes pasar el usuario/pasar por la autentificación básica de HTTP en los parámetros de la URL?

Creo que no es posible, pero alguien que conozco insistió en que funcionara. Ni siquiera sé qué parámetros probar, y no he encontrado esto documentado en ninguna parte.

Lo intenté. http://myserver.com/~user=nombre de usuario y contraseña=contraseña pero no funciona.

¿Puede confirmar que de hecho no es posible pasar el usuario/pasar a través de los parámetros HTTP (GET o POST)?

11 votos

0 votos

@sam - ¿qué? ¿Cómo sería la URL completa?

6 votos

Todo en las especificaciones ietf.org/rfc/rfc1738.txt (3.1)

355voto

Ryan Sampson Puntos 2898

Efectivamente, no es posible pasar el nombre de usuario y la contraseña a través de parámetros de consulta en la autentificación HTTP estándar. En su lugar, se utiliza un formato de URL especial, como este: http://username:password@example.com/ -- esto envía las credenciales en la cabecera estándar HTTP "Authorization".

Es posible que tu interlocutor estuviera pensando en un módulo o código personalizado que mirara los parámetros de la consulta y verificara las credenciales. Sin embargo, esto no es una autentificación HTTP estándar, es algo específico de la aplicación.

1 votos

Gracias, esto es justo lo que estaba buscando... no es crítico que sean parámetros GET, sólo que pueda elaborarlo en la URL.

0 votos

Muy bien. Asegúrate de codificar también tu contraseña en caso de que tenga caracteres especiales. Simplemente abre la consola de tu navegador encode("my&password&") . Le devuelve la cadena codificada que se utilizará después de la username

66 votos

Para su información, el http://username:password@example.com ya no es compatible con el formato IE o Cromo No me sorprendería que otros siguieran su ejemplo, si no lo han hecho ya.

26voto

Girish Kumar Puntos 61

http://username:password@example.com funciona para FireFox, Chrome, Safari PERO no para IE.

Base de conocimientos de Microsoft

4 votos

Esta capacidad fue eliminada de Chrome 19+. Ver code.google.com/p/chromium/issues/detail?id=123150

6 votos

Por lo que leo en ese informe de errores, se volvió a añadir en Chrome 20. Ciertamente, esperaría ver un montón de quejas continuas al respecto si no lo hubieran hecho.

0 votos

Ahora lo he solicitado para Internet Explorer: connect.microsoft.com/IE/feedback/details/873575/ . Un caso de uso ligeramente diferente, pero aborda el mismo problema ;)

24voto

Tom Puntos 622

No se recomienda pasar parámetros de autenticación básica en la URL

Hay un campo de cabecera de autorización para este propósito, compruébelo aquí: lista de encabezados http

Aquí se explica cómo utilizarlo: Autenticación básica de acceso

Allí también se puede leer que aunque todavía es soportado por algunos navegadores la solución sugerida de añadir las credenciales de autorización básicas en la url no es recomendable.

Lea también capítulo 4.1 del RFC 2617 - Autenticación HTTP para más detalles sobre por qué NO usar la autenticación básica.


Pasar parámetros de autenticación en la cadena de consulta

Cuando se utiliza OAuth u otros servicios de autenticación, a menudo también se puede enviar el token de acceso en una cadena de consulta en lugar de en una cabecera de autorización, por lo que algo como:

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD

0 votos

¿Y cómo se hace para codificar una cabecera de autorización en una URL?

2 votos

¿No es esa la forma que usted declaró como obsoleta?

4 votos

La pregunta que respondiste con "Hay un campo de cabecera de autorización para este propósito" estaba preguntando cómo poner los parámetros de autenticación en la URL . Si no se pueden codificar los campos de cabecera HTTP en una URL (que no se puede), tu respuesta es un non sequitur.

1voto

Clark Vera Puntos 11

En su ejemplo, la URL http://myserver.com/ Sería:

http://username:password@example.com/myserver.com/

A partir del 19/12/2019 he probado esto y funciona para Chrome Firefox Safari

Pero no para IE, que ya no soporta la autenticación básica. He implementado esto usando SSRS 2017, que oculta el nombre de usuario y la contraseña. Te recomiendo que pruebes esto con un navegador de incógnito. Pruebe con y sin la contraseña en diferentes navegadores de incógnito. El que no tiene la contraseña debería pedirte la contraseña.

1 votos

"IE, que ya no soporta la autenticación básica". - Te refieres al paso de las credenciales del usuario en el userinfo parte de la URL. IE todavía soporta "[HTTP] autenticación básica". Y su URL de ejemplo debería ser: http://username:password@myserver.com/ .

0voto

Colossus Puntos 19

Es (obviamente) posible enviar cualquier cadena en los parámetros GET, aunque no se recomienda enviar el nombre de usuario y la contraseña ya que puede hacerlo muy visible, especialmente si no es en una petición AJAX.

Sin embargo, tendrá que codificar la página del servidor para extraer el nombre de usuario y la contraseña y luego validarlos y utilizarlos de la manera que sea necesaria.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X