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

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

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

Ver parte 6. Autenticación HTTP

Autenticación HTTP

Autenticación HTTP es la capacidad de decirle al servidor su nombre de usuario y contraseña para que pueda verificar que puede hacer la solicitud que está haciendo. La autenticación básica utilizada en HTTP (que es el tipo que curl usa de forma predeterminada) está basada en texto sin formato , lo que significa que envía el nombre de usuario y la contraseña ligeramente ofuscados, pero aún así puede leerlos cualquier persona 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 devueltos por el servidor), y luego –ntlm, –digest, –negotiate o incluso –anyauth pueden ser opciones que le convengan.

En ocasiones, 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 se conecte a 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 usando el método NTLM, use –proxy-ntlm, si requiere Digest use –proxy-digest.

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

Tenga en cuenta que cuando se ejecuta un progtwig, es posible que sus parámetros se vean al enumerar los procesos en ejecución del sistema. Por lo tanto, otros usuarios pueden 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 así es como funciona la Autenticación HTTP, muchos sitios web no usarán este concepto cuando proporcionen inicios de sesión, etc. Consulte el capítulo de Inicio de sesión web más adelante para obtener más detalles al respecto.

Solo agregue para que no tenga que cliquear:

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

o si intentas enviar autenticación para OAuth 2:

 curl -H "Authorization: OAuth " http://www.example.com 

Los tokens de portador se ven así:

 curl -H "Authorization: Bearer " http://www.example.com 

(para aquellos que buscan respuesta php-curl )

 $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); 

Esto funcionó para mí:

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

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

token_str y Authorization deben estar separados por espacios en blanco; de lo contrario, el servidor no obtendrá el entorno HTTP_AUTHORIZATION .

Para HTTP Basic Auth:

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

reemplace _your_token_ y la URL.

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

token grep | cut -d, -f1 | cortar -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 subsecuentes 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