使用 Azure SAS 令牌的放心请求总是 returns 403
Rest-assured request using Azure SAS token always returns 403
我正在使用 azure-cli 生成 SAS 令牌
az storage blob generate-sas --account-key mykey --account-name myaccount --container-name my --expiry 2023-01-01T00:00:00Z --name 0.0.1/uk/787867898767/structure/calendar/a12calendar.json --permissions r
其中 returns 一个 SAS 令牌如下所示:
se=2023-01-01T00%3A00%3A00Z&sp=r&sv=2020-02-10&sr=b&sig=u2VWd2i8cdYhkjA%2BZRBCYZbHwmZDCrjirs%2BYstwxmjI%3D
我有一个放心的测试,它执行 GET 到
given().get("https://myaccount.blob.core.windows.net/mycontainer/0.0.1/uk/787867898767/structure/calendar/a12calendar.json?se=2023-01-01T00%3A00%3A00Z&sp=r&sv=2020-02-10&sr=b&sig=u2VWd2i8cdYhkjA%2BZRBCYZbHwmZDCrjirs%2BYstwxmjI%3DD").then().statusCode(200)
失败并显示 HTTP 403。
<?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:5ab15b27-701e-00b3-298c-b0ffa0000000
Time:2021-09-23T15:08:56.1619254Z</Message><AuthenticationErrorDetail>Signature fields not well formed.</AuthenticationErrorDetail></Error>
但是相同的 url 在 Postman 和 Chrome 上运行良好。看起来像是某种编码问题,但找不到什么。任何帮助将不胜感激。
好的,问题出在默认的 RestAssured 设置上。
RestAssured 默认有 urlEncodingEnabled = true
。
使用
将其设置为 false
RestAssured.urlEncodingEnabled = false;
如果您遇到 url 编码问题。
我正在使用 azure-cli 生成 SAS 令牌
az storage blob generate-sas --account-key mykey --account-name myaccount --container-name my --expiry 2023-01-01T00:00:00Z --name 0.0.1/uk/787867898767/structure/calendar/a12calendar.json --permissions r
其中 returns 一个 SAS 令牌如下所示:
se=2023-01-01T00%3A00%3A00Z&sp=r&sv=2020-02-10&sr=b&sig=u2VWd2i8cdYhkjA%2BZRBCYZbHwmZDCrjirs%2BYstwxmjI%3D
我有一个放心的测试,它执行 GET 到
given().get("https://myaccount.blob.core.windows.net/mycontainer/0.0.1/uk/787867898767/structure/calendar/a12calendar.json?se=2023-01-01T00%3A00%3A00Z&sp=r&sv=2020-02-10&sr=b&sig=u2VWd2i8cdYhkjA%2BZRBCYZbHwmZDCrjirs%2BYstwxmjI%3DD").then().statusCode(200)
失败并显示 HTTP 403。
<?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:5ab15b27-701e-00b3-298c-b0ffa0000000
Time:2021-09-23T15:08:56.1619254Z</Message><AuthenticationErrorDetail>Signature fields not well formed.</AuthenticationErrorDetail></Error>
但是相同的 url 在 Postman 和 Chrome 上运行良好。看起来像是某种编码问题,但找不到什么。任何帮助将不胜感激。
好的,问题出在默认的 RestAssured 设置上。
RestAssured 默认有 urlEncodingEnabled = true
。
使用
将其设置为 falseRestAssured.urlEncodingEnabled = false;
如果您遇到 url 编码问题。