在Linux和Windows中如何使用 cURL 通过设置 JWT Bearer token 进行身份验证

介绍

使用 cURL 访问或测试需要通过 token 进行身份验证的接口时,我们可以将登录接口返回的 token 保存到一个变量中,在访问其他接口时直接通过该变量实现身份验证。

如果使用的是 Postman 来测试接口,如何配置 token 可以参见另一篇介绍:

怎样在 Postman 中配置 token,实现登录一次其他请求自动设置 token?

在 Linux 中如何设置 token

1. 使用 cURL 和 jq 获得 Bearer token

请求授权接口,通过 jq 解析接口返回的 JSON 将 token 保存到一个变量中

TOKEN=$(curl -s -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' --data '{"username":"username","password":"password","rememberMe":false}' https://itmob.cn/api/logintest | jq -r 'token')

此示例中,登录接口需要一个包含用户名、密码和 rememberMe 字段的 POST 请求,通过 jq 解析接口返回的 JSON,其中包含一个名为 token 的字段。实际使用中根据您自己的需要进行调整。

2. 在 Authorization 请求头中传递 Bearer token

curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://itmob.cn/api/other-resource

访问其他接口时,将上一步中 jq 解析到的 token 字段添加到 Authorization 请求头。


在 Windows 中如何设置 token

1. 在 PowerShell 中执行 cURL

这里先介绍在 PowerShell 中执行 cURL 时如何设置 token。因为从 Powershell 3.0 开始集成了解析 JSON 的 ConvertFrom-Json,因此如果 PowerShell 的版本是 PowerShell 3.0+,可用直接在 PowerShell 中操作而无需安装第三方程序来解析 JSON。

可以通过 $Host.Version 查看当前的版本信息

PS C:\Users\itmob.cn> $Host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      11011  1111

访问登录接口,解析 JSON,将 token 保存到变量中

$TOKEN=(curl -Method POST -Body '{"username":"username","password":"password","rememberMe":false}' https://itmob.cn/api/logintest | ConvertFrom-Json).token

测试接口返回的 json 是:{“token”:”xqoq39hg81…”},所以使用 $TOKEN=(...).token 来获取 json 中的 token 字段。

使用 cURL 测试接口,并将 token 添加到 Authorization

curl -V -Method POST -Headers @{"Authorization"="Bearer $TOKEN"} https://itmob.cn/api/tokentest

查看 TOKEN 变量中保存的 token 信息

$TOKEN=(curl -Method POST -Body '{"username":"username","password":"password","rememberMe":false}' https://itmob.cn/api/logintest | ConvertFrom-Json).token

$TOKEN
xqoq39hg81…

2. 在命令行 CMD 中执行 cURL

如果使用普通的命令行 CMD,则需要用到一个第三方工具 jqhttps://stedolan.github.io/jq/ 用于解析 JSON

访问登录接口,解析 JSON,将 token 保存到变量中

for /F "delims=" %i in ('curl  -s -X POST --data "{"username":"username","password":"password","rememberMe":false}" https://itmob.cn/api/logintest') do set TOKEN=%i

# 查看变量中保存的 token
echo %TOKEN%
xqoq39hg81…

使用 cURL 测试接口,并将 token 添加到 Authorization

curl -H "Accept: application/json" -H "Authorization: Bearer %TOKEN%" https://itmob.cn/api/tokentest

作者:ITmob
来源:ITmob.cn
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×