Cómo configurar el encabezado de autorización usando curl


¿Cómo paso el encabezado authorization usando cURL? ( ejecutable en /usr/bin/curl).

 260
Author: Vidya, 2010-06-15

8 answers

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

Véase la parte 6. Autenticación HTTP

Autenticación HTTP

La autenticación HTTP es la capacidad de decirle al servidor su nombre de usuario y contraseña para que pueda verificar que se le permite hacer la solicitud que está hacer. La autenticación básica utilizada en HTTP (que es el tipo curl utiliza por por defecto) es llano text basado, lo que significa que envía nombre de usuario y contraseña solo ligeramente ofuscado, pero todavía completamente legible por cualquiera que olfatee la red entre usted y el servidor remoto.

Para decirle a curl que use 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 (verifique los encabezados devuelto por el servidor), y luego --ntlm ,digest digest, negotiate negotiate o incluso -- anyauth podría ser opciones que le convienen.

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

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

Si su proxy requiere que la autenticación se realice utilizando el método NTLM, use proxy proxy-ntlm, si requiere Digest use proxy proxy-digest.

Si utiliza cualquiera de estas opciones de usuario+contraseña, pero omite la contraseña parte, rizo voluntad solicitar la contraseña de forma interactiva.

Tenga en cuenta que cuando se ejecuta un programa, es posible ver sus parámetros al enumerar los procesos en ejecución del sistema. Por lo tanto, otros usuarios pueden ser capaz de ver sus contraseñas si las pasa como línea de comandos simple opcion. Hay maneras de evitar esto.

Vale la pena señalar que si bien así es como funciona la autenticación HTTP, muy muchos sitios web no utilizarán este concepto cuando proporcionan inicios de sesión, etc. Ver el capítulo de inicio de sesión web más abajo para más detalles sobre eso.

 289
Author: Oli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-28 23:37:32

Simplemente agregando para que no tenga que hacer clic:

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

O si está tratando de enviar autenticación para OAuth 2:

curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
 226
Author: Tony,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-31 18:52:30

Los tokens al portador se ven así:

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
 113
Author: Steve Tauber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-30 12:14:38

(para aquellos que están buscando php-curl respuesta)

$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);
 51
Author: Rao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-04 19:21:42

Esto funcionó para mí:

 curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
 34
Author: timj98,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-09 09:50:42

Tenga cuidado de que al usar: curl -H "Authorization: token_str" http://www.example.com

token_str y Authorization debe estar separado por espacio en blanco, de lo contrario el lado del servidor no obtendrá el entorno HTTP_AUTHORIZATION.

 12
Author: jianpx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-31 23:49:20

Para HTTP Basic Auth:

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

Sustitúyase _your_token_ y la URL.

 10
Author: Devaroop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-28 10:52:22

Si no tiene el token en el momento en que se realiza la llamada, tendrá que hacer dos llamadas, una para obtener el token y la otra para extraer el token de la respuesta, preste atención a

Grep token / cut-d,- f1 | cut-d\" - f4

Ya que es la parte que trata de extraer el token de la respuesta.

echo "Getting token response and extracting token"    
def token = sh (returnStdout: true, script: """
    curl -S -i -k -X POST https://www.example.com/getToken -H \"Content-Type: application/json\" -H \"Accept: application/json\" -d @requestFile.json | grep token | cut -d, -f1 | cut -d\\" -f4
""").split()

Después de extraer el token, puede usar el token para realizar llamadas posteriores de la siguiente manera.

echo "Token : ${token[-1]}"       
echo "Making calls using token..."       
curl -S -i -k  -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer ${token[-1]}" https://www.example.com/api/resources 
 1
Author: Upul Doluweera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-22 06:56:42