2010-06-15 34 views

Respuesta

259

http://curl.haxx.se/docs/httpscripting.html

Véase la parte de autenticación HTTP 6.

autenticación HTTP

autenticación HTTP es la posibilidad de indicar al servidor su nombre de usuario y contraseña para que se pueda verificar que eres permitido hacer la solicitud que está haciendo. La autenticación básica utilizada en HTTP (que es el tipo rizo utiliza por por defecto) es llanuratexto con base, lo que significa que envía nombre de usuario y contraseña sólo un poco ofuscado, pero todavía totalmente legibles por cualquier persona que olfatea en la red entre usted y el servidor remoto.

A decir rizo utilizar un usuario y una contraseña para la autenticación:

curl --user name:password http://www.example.com 

El sitio puede requerir un método de autenticación diferente (compruebe las cabeceras devuelto por el servidor), y luego --ntlm, - digest, --negotiate o incluso --anyauth puede ser opciones que se ajusten a usted.

A veces, su acceso HTTP solo está disponible mediante el uso de un proxy HTTP . Esto parece ser especialmente común en varias compañías. Un proxy HTTP puede requerir su propio usuario y contraseña para permitir que el cliente obtenga acceso a Internet al . Para especificar aquellos con rizo, ejecutar algo como:

curl --proxy-user proxyuser:proxypassword curl.haxx.se 

Si su proxy requiere autenticación que ser hecho usando el método NTLM, uso --proxy-NTLM, si se requiere usar Digesto --proxy de digerir.

Si usa cualquiera de estas opciones de usuario + contraseña pero omite la contraseña , curl solicitará la contraseña de forma interactiva.

Tenga en cuenta que cuando se ejecuta un programa, sus parámetros pueden ser posibles para ver al enumerar los procesos en ejecución del sistema. Por lo tanto, otros usuarios pueden ser capaces de ver sus contraseñas si las pasa como opciones de línea de comando . Hay formas de eludir esto.

Vale la pena señalar que, si bien esto es cómo funciona la autenticación HTTP, muy muchos sitios web no utilizan este concepto cuando proporcionan conexiones etc. Ver el capítulo de sesión Web más abajo para obtener más detalles al respecto.

+1

bien, pero ¿cómo en php? – Vixed

+11

@Vixed Esta pregunta no es explícitamente sobre PHP. [¿Qué pasa con los resultados de Google] (s)? – Oli

198

Simplemente añadiendo por lo que no tiene que hacer clic a través de:

curl --user name:password http://www.example.com 

o si está tratando de hacer la autenticación para enviar OAuth 2:

curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com 
+14

Muchas API ahora usan tokens de autorización de encabezado. La opción '-H' es genial. – eliocs

+5

Si usa -u o --user, Curl Codificará las credenciales en Base64 y generará un encabezado como este: '-H Autorización: Básico ' –

12

tener cuidado de que cuando usa: curl -H "Authorization: token_str" http://www.example.com

token_str y Authorization deben separarse por espacio en blanco, de lo contrario, el servidor no obtendrá el entorno HTTP_AUTHORIZATION.

+0

No es cierto, si se necesita un espacio en blanco, su servidor HTTP es roto. También necesita dos cadenas por tipo y luego el token. –

46

(para los que están en busca de php-curl respuesta)

fichas
$service_url = 'https://example.com/something/something.json'; 
$curl = curl_init($service_url); 
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); //Your credentials goes here 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //IMP if the url has https and you don't want to verify source certificate 

$curl_response = curl_exec($curl); 
$response = json_decode($curl_response); 
curl_close($curl); 

var_dump($response); 
87

portador aspecto:

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com 
+0

@esqew - ¿Eh? Tenía exactamente la misma pregunta y esta respuesta me sirve. –

+5

Y si está buscando hacer una autorización 'Básica', simplemente cambie 'Portador' por 'Básico' –

26

Esto funcionó para mí:

curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/ 
7

Para autenticación básica de HTTP :

curl -H "Authorization: Basic <_your_token_>" http://www.example.com

reemplazar _your_token_ y la URL.

+0

Al usar oauth, ¿de dónde procedería el token de Autorización? Intento utilizar curl para descargar archivos de un sitio donde utilizo un usuario y una contraseña, pero parece estar fallando debido a que oauth2 está en uso. – toasteez

+0

@toasteez tienes que pasar por el flujo de Oauth2 para recibir un token. Normalmente es un proceso de dos pasos y debe detallarse en la documentación del servidor. – Devaroop

+6

buena respuesta. un pequeño ayudante 'echo -ne" : "| base64 --wrap 0' generará el token básico de autenticación. –

Cuestiones relacionadas