如何使用curl设置授权标头

时间:2010-06-15 10:28:20

标签: curl oauth

如何使用cURL传递授权标头? (/usr/bin/curl中的可执行文件)。

11 个答案:

答案 0 :(得分:337)

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

参见第6部分.HTTP认证

  

HTTP身份验证

     

HTTP身份验证可以告诉服务器您的用户名和    密码,以便它可以验证您是否被允许执行您的请求    这样做。 HTTP中使用的基本身份验证(curl使用的类型    默认)是 plain text ,这意味着它发送用户名和密码    只是略微混淆,但任何嗅探的人仍然完全可读    您和远程服务器之间的网络。

     

告诉curl使用用户和密码进行身份验证:

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

该网站可能需要不同的身份验证方法(请检查标头    由服务器返回),然后--ntlm, - digest, - 谈判甚至    --anyauth可能是适合你的选择。

     

有时您的HTTP访问仅可通过使用HTTP获得    代理。这似乎在各个公司中尤为常见。 HTTP代理    可能需要自己的用户和密码才能让客户端通过    互联网。要指定具有curl的那些,请运行类似:

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

如果您的代理需要使用NTLM方法进行身份验证,    使用--proxy-ntlm,如果它需要Digest使用--proxy-digest。

     

如果你使用这些用户+密码选项中的任何一个但是没有密码    部分,curl将以交互方式提示输入密码。

     

请注意,运行程序时,可能会看到其参数    列出系统的运行进程时。因此,其他用户可能是    如果您将密码作为普通命令行传递,则能够查看密码    选项。有办法绕过这个。

     

值得注意的是,虽然这是HTTP身份验证的工作方式,但非常    许多网站在提供登录等时都不会使用这个概念    下面进一步详细介绍Web登录章节。

答案 1 :(得分:255)

只需添加即可无需点击:

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

或者如果您尝试为OAuth 2发送身份验证:

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

答案 2 :(得分:132)

持票人代币看起来像这样:

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

答案 3 :(得分:59)

(对于那些正在寻找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);

答案 4 :(得分:47)

这对我有用:

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

答案 5 :(得分:14)

对于HTTP Basic Auth:

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

替换_your_token_和网址。

答案 6 :(得分:12)

使用时请注意: curl -H "Authorization: token_str" http://www.example.com

token_strAuthorization必须用空格分隔,否则服务器端将无法获得HTTP_AUTHORIZATION环境。

答案 7 :(得分:3)

{ _id:1 name: "stu 1", class: "7th", tasks: ["Craft work 1", "Craft work 2"] }, { _id:1 name: "stu 2", class: "7th", tasks: [] }, { _id:1 name: "stu 3", class: "7th", tasks: ["Craft work 1", "Craft work 2"] } 7.61.0 开始,您可以使用 curl 选项设置正确的 Bearer 授权标头。

答案 8 :(得分:2)

如果您在拨打电话时没有令牌,则必须进行两次调用,一次是获取令牌,另一次是从响应中提取令牌,注意

  

grep token | cut -d,-f1 |切-d \“ - f4

因为它是处理从响应中提取令牌的部分。

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()

提取令牌后,您可以使用令牌进行后续调用,如下所示。

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 

答案 9 :(得分:1)

此示例包括以下内容:

curl -X POST -H "Content-Type: application/json" -d '{"name”:”Johnny B. Goode”, "email”:”johnny.b.goode@mail.com"}' -H "Authorization: Bearer $(echo -n  Guitar Maestro | base64)" https://url-address.com 

答案 10 :(得分:0)

一个简单的例子是使用授权转换为base64的参数

curl -XPOST 'http://exemplo.com/webhooks?Authorization=Basic%20dGVzdDoxMjM0NTYK'