#include "rgw_crypt_sanitize.h"
#include <boost/container/small_vector.hpp>
+#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/trim_all.hpp>
#define dout_context g_ceph_context
/* auth ships with req params ... */
/* look for required params */
- credential = info.args.get("X-Amz-Credential");
+ credential = info.args.get("x-amz-credential");
if (credential.size() == 0) {
return -EPERM;
}
- date = info.args.get("X-Amz-Date");
+ date = info.args.get("x-amz-date");
struct tm date_t;
if (!parse_iso8601(sview2cstr(date).data(), &date_t, nullptr, false)) {
return -EPERM;
}
- std::string_view expires = info.args.get("X-Amz-Expires");
+ std::string_view expires = info.args.get("x-amz-expires");
if (expires.empty()) {
return -EPERM;
}
return -EPERM;
}
- signedheaders = info.args.get("X-Amz-SignedHeaders");
+ signedheaders = info.args.get("x-amz-signedheaders");
if (signedheaders.size() == 0) {
return -EPERM;
}
- signature = info.args.get("X-Amz-Signature");
+ signature = info.args.get("x-amz-signature");
if (signature.size() == 0) {
return -EPERM;
}
- if (info.args.exists("X-Amz-Security-Token")) {
- sessiontoken = info.args.get("X-Amz-Security-Token");
+ if (info.args.exists("x-amz-security-token")) {
+ sessiontoken = info.args.get("x-amz-security-token");
if (sessiontoken.size() == 0) {
return -EPERM;
}
key = s;
}
- if (using_qs && key == "X-Amz-Signature") {
+ if (using_qs && boost::iequals(key, "X-Amz-Signature")) {
/* Preserving the original behaviour of get_v4_canonical_qs() here. */
continue;
}
int ret = nv.parse();
if (ret >= 0) {
string& name = nv.get_name();
+ if (name.find("X-Amz-") != string::npos) {
+ std::for_each(name.begin(),
+ name.end(),
+ [](char &c){
+ if (c != '-') {
+ c = ::tolower(static_cast<unsigned char>(c));
+ }
+ });
+ }
string& val = nv.get_val();
-
+ dout(10) << "name: " << name << " val: " << val << dendl;
append(name, val);
}
} else {
route = AwsRoute::QUERY_STRING;
- if (info.args.get("X-Amz-Algorithm") == AWS4_HMAC_SHA256_STR) {
+ if (info.args.get("x-amz-algorithm") == AWS4_HMAC_SHA256_STR) {
/* AWS v4 */
version = AwsVersion::V4;
} else if (!info.args.get("AWSAccessKeyId").empty()) {
if (now >= exp) {
throw -EPERM;
}
- if (s->info.args.exists("X-Amz-Security-Token")) {
- session_token = s->info.args.get("X-Amz-Security-Token");
+ if (s->info.args.exists("x-amz-security-token")) {
+ session_token = s->info.args.get("x-amz-security-token");
if (session_token.size() == 0) {
throw -EPERM;
}
const completer_factory_t& completer_factory,
const req_state* const s) const
{
- if (! s->info.args.exists("X-Amz-Security-Token") &&
+ if (! s->info.args.exists("x-amz-security-token") &&
! s->info.env->exists("HTTP_X_AMZ_SECURITY_TOKEN") &&
s->auth.s3_postobj_creds.x_amz_security_token.empty()) {
return result_t::deny();