Respuestas:
http://curl.haxx.se/docs/httpscripting.html
Consulte 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á haciendo. La autenticación básica utilizada en HTTP (que es el tipo que curl usa de manera predeterminada) está basada en texto sin formato , lo que significa que envía un nombre de usuario y una contraseña solo ligeramente ofuscados, pero que aún puede ser completamente legible por cualquier persona que huela en 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.
A veces, su acceso HTTP solo está disponible mediante el uso de un proxy HTTP. 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 acceda a Internet. Para especificar aquellos con rizo, 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-ntlm, si requiere Digest use --proxy-digest.
Si utiliza 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 programa, es posible ver sus parámetros 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 comandos simples. Hay formas de evitar esto.
Vale la pena señalar que, si bien es así como funciona la autenticación HTTP, muchos sitios web no utilizarán este concepto cuando proporcionen inicios de sesión, etc. Consulte el capítulo Web Login más abajo para obtener más detalles al respecto.
Solo agregue para que no tenga que hacer clic:
curl --user name:password http://www.example.com
o si está intentando enviar autenticación para OAuth 2:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
-H
opción es genial.
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
siempre obteniendo un error de encabezado de autorización faltante
<Base64EncodedCredentials>
tan mencionado por @ Timoteo-Kansaki, se puede obtener la credencial codificada usando el comando: cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
. Para referencia, consulte stackoverflow.com/questions/16918602/…
Las fichas de portador se ven así:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" 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/
Authorization: bearer xxxxxxxxx
?
Bearer
Bearer
.
Para autenticación básica HTTP:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
reemplazar _your_token_
y la URL.
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
generará el token de autenticación básico.
-H "Authorization: Basic <_your_token_>"
hace el mismo efecto que --user login:password
. Puede comprobarlo concurl -v
Tenga cuidado cuando use:
curl -H "Authorization: token_str" http://www.example.com
token_str
y Authorization
debe estar separado por espacios en blanco, de lo contrario, el lado del servidor no obtendrá el HTTP_AUTHORIZATION
entorno.
Si no tiene el token al momento de realizar 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 | corte -d, -f1 | cortar -d \ "-f4
ya que es la parte que se ocupa 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