aut*_*tix 106 curl authorization http basic-authentication apigility
我正在学习Apigility(Apigility docu - > REST Service Tutorial)并尝试通过cURL发送带有基本身份验证的POST请求:
$ curl -X POST -i -H "Content-Type: application/hal+json" -H "Authorization: Basic YXBpdXNlcjphcGlwd2Q=" http://apigilityhw.sandbox.loc/status
Run Code Online (Sandbox Code Playgroud)
YXBpdXNlcjphcGlwd2Q=是我的凭据的基本64编码字符串apiuser:apipwd.凭证保存在/data/htpasswd(apiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/)中.
看起来像这样:
HTTP/1.1 401 Unauthorized
Server: nginx/1.4.7
Date: Mon, 22 Sep 2014 07:48:47 GMT
Content-Type: application/problem+json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.5.12-1~dotdeb.1
WWW-Authenticate: Basic realm="api"
Run Code Online (Sandbox Code Playgroud)
这里的错误在哪里?如何让它工作?
Gaj*_*jus 201
curl -u username:password http://
curl -u username http://
Run Code Online (Sandbox Code Playgroud)
从文档页面:
-u, - user <user:password>
指定用于服务器身份验证的用户名和密码.覆盖-n, - inttrc和--netrc-optional.
如果您只是指定用户名,curl将提示输入密码.
用户名和密码在第一个冒号上分开,这使得使用此选项无法在用户名中使用冒号.密码仍然可以.
将Kerberos V5与基于Windows的服务器一起使用时,应在用户名中包含Windows域名,以便服务器成功获取Kerberos票证.如果不这样做,则初始身份验证握手可能会失败.
使用NTLM时,如果您的设置中存在单个域和林,则可以将用户名简单地指定为没有域的用户名.
要指定域名,请使用"低级别登录名"或"UPN(用户主要名称)"格式.例如,分别为EXAMPLE\user和user@example.com.
如果您使用支持Windows SSPI的curl二进制文件并执行Kerberos V5,Negotiate,NTLM或Digest身份验证,那么您可以告诉curl通过使用此选项指定单个冒号来从您的环境中选择用户名和密码:" - u:" .
如果多次使用此选项,将使用最后一个选项.
http://curl.haxx.se/docs/manpage.html#-u
请注意,您不需要--basic标记,因为它是默认值.
nad*_*000 18
弄清楚授权标头应该是什么样子的最简单方法可能是首先使用 -u (或将凭据放在 URL 中)和 -v 运行curl ,输出将显示请求标头:
$ curl -v -u 'apiuser:apipwd' ... http://apigilityhw.sandbox.loc/status
# OR putting the credentials in the URL:
$ curl -v ... http://apiuser:apipwd@apigilityhw.sandbox.loc/status
# copy and paste the "Authorization" header from the output:
$ curl -H 'Authorization: Basic YWRtaW46YXBpcHdk' ... http://apigilityhw.sandbox.loc/status
Run Code Online (Sandbox Code Playgroud)
srg*_*hma 10
作为标题
AUTH=$(echo -ne "$BASIC_AUTH_USER:$BASIC_AUTH_PASSWORD" | base64 --wrap 0)
curl \
--header "Content-Type: application/json" \
--header "Authorization: Basic $AUTH" \
--request POST \
--data '{"key1":"value1", "key2":"value2"}' \
https://example.com/
Run Code Online (Sandbox Code Playgroud)
使用OAuth或其他身份验证服务时,您通常也可以在查询字符串中而不是在授权标头中发送访问令牌,例如:
GET https://www.example.com/v1/users/1?access_token=abcdefghijklmnopqrstuvwxyz1234567890ABCD
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
236178 次 |
| 最近记录: |