String httpMethod, Map<String, String> headers, Map<String, String> queryParameters, String bodyHash) { addHostHeader(url, headers); String dateStamp = dateStamp(now); String scope = scope(bucketConfig.getRegion(), dateStamp); queryParameters.put(X_AMZ_CREDENTIAL, bucketConfig.getAccessKey() + "/" + scope); //$NON-NLS-1$ String dateTimeStampISO8601 = dateTimeStampISO8601(now); queryParameters.put(X_AMZ_DATE, dateTimeStampISO8601); String canonicalizedHeaderNames = canonicalizeHeaderNames(headers); queryParameters.put(X_AMZ_SIGNED_HEADERS, canonicalizedHeaderNames); String canonicalizedQueryParameters = canonicalizeQueryString( queryParameters); String canonicalizedHeaders = canonicalizeHeaderString(headers); String canonicalRequest = canonicalRequest(url, httpMethod, canonicalizedQueryParameters, canonicalizedHeaderNames, canonicalizedHeaders, bodyHash); byte[] signature = createSignature(bucketConfig, dateTimeStampISO8601, dateStamp, scope, canonicalRequest); queryParameters.put(X_AMZ_SIGNATURE, toHex(signature)); return formatAuthorizationQuery(queryParameters);
private static String formatAuthorizationQuery( Map<String, String> queryParameters) { StringBuilder s = new StringBuilder(); for (String key : queryParameters.keySet()) { appendQuery(s, key, queryParameters.get(key)); } return s.toString(); }
private static String canonicalRequest(URL endpoint, String httpMethod, String queryParameters, String canonicalizedHeaderNames, String canonicalizedHeaders, String bodyHash) { return String.format("%s\n%s\n%s\n%s\n%s\n%s", //$NON-NLS-1$ httpMethod, canonicalizeResourcePath(endpoint), queryParameters, canonicalizedHeaders, canonicalizedHeaderNames, bodyHash); }
S3Config bucketConfig, URL url, String httpMethod, Map<String, String> headers, String bodyHash) { addHostHeader(url, headers); String dateTimeStamp = dateTimeStampISO8601(now); headers.put(X_AMZ_DATE, dateTimeStamp); String canonicalizedHeaderNames = canonicalizeHeaderNames(headers); String canonicalizedHeaders = canonicalizeHeaderString(headers); String canonicalRequest = canonicalRequest(url, httpMethod, "", //$NON-NLS-1$ canonicalizedHeaderNames, canonicalizedHeaders, bodyHash); String dateStamp = dateStamp(now); String scope = scope(bucketConfig.getRegion(), dateStamp); byte[] signature = createSignature(bucketConfig, dateTimeStamp, dateStamp, scope, canonicalRequest); headers.put(HDR_AUTHORIZATION, formatAuthorizationHeader(bucketConfig,
@Override public Response.Action getDownloadAction(AnyLongObjectId oid) { URL endpointUrl = getObjectUrl(oid); Map<String, String> queryParams = new HashMap<String, String>(); queryParams.put(X_AMZ_EXPIRES, Integer.toString(s3Config.getExpirationSeconds())); Map<String, String> headers = new HashMap<String, String>(); String authorizationQueryParameters = SignerV4.createAuthorizationQuery( s3Config, endpointUrl, METHOD_GET, headers, queryParams, UNSIGNED_PAYLOAD); Response.Action a = new Response.Action(); a.href = endpointUrl.toString() + "?" + authorizationQueryParameters; //$NON-NLS-1$ return a; }
@Override public Response.Action getUploadAction(AnyLongObjectId oid, long size) { cacheObjectMetaData(oid, size); URL objectUrl = getObjectUrl(oid); Map<String, String> headers = new HashMap<String, String>(); headers.put(X_AMZ_CONTENT_SHA256, oid.getName()); headers.put(HDR_CONTENT_LENGTH, Long.toString(size)); headers.put(X_AMZ_STORAGE_CLASS, s3Config.getStorageClass()); headers.put(HttpSupport.HDR_CONTENT_TYPE, "application/octet-stream"); //$NON-NLS-1$ headers = SignerV4.createHeaderAuthorization(s3Config, objectUrl, METHOD_PUT, headers, oid.getName()); Response.Action a = new Response.Action(); a.href = objectUrl.toString(); a.header = new HashMap<>(); a.header.putAll(headers); return a; }
S3Config bucketConfig, URL url, String httpMethod, Map<String, String> headers, String bodyHash) { addHostHeader(url, headers); String dateTimeStamp = dateTimeStampISO8601(now); headers.put(X_AMZ_DATE, dateTimeStamp); String canonicalizedHeaderNames = canonicalizeHeaderNames(headers); String canonicalizedHeaders = canonicalizeHeaderString(headers); String canonicalRequest = canonicalRequest(url, httpMethod, "", //$NON-NLS-1$ canonicalizedHeaderNames, canonicalizedHeaders, bodyHash); String dateStamp = dateStamp(now); String scope = scope(bucketConfig.getRegion(), dateStamp); byte[] signature = createSignature(bucketConfig, dateTimeStamp, dateStamp, scope, canonicalRequest); headers.put(HDR_AUTHORIZATION, formatAuthorizationHeader(bucketConfig,
/** {@inheritDoc} */ @Override public Response.Action getDownloadAction(AnyLongObjectId oid) { URL endpointUrl = getObjectUrl(oid); Map<String, String> queryParams = new HashMap<>(); queryParams.put(X_AMZ_EXPIRES, Integer.toString(s3Config.getExpirationSeconds())); Map<String, String> headers = new HashMap<>(); String authorizationQueryParameters = SignerV4.createAuthorizationQuery( s3Config, endpointUrl, METHOD_GET, headers, queryParams, UNSIGNED_PAYLOAD); Response.Action a = new Response.Action(); a.href = endpointUrl.toString() + "?" + authorizationQueryParameters; //$NON-NLS-1$ return a; }
/** {@inheritDoc} */ @Override public Response.Action getUploadAction(AnyLongObjectId oid, long size) { cacheObjectMetaData(oid, size); URL objectUrl = getObjectUrl(oid); Map<String, String> headers = new HashMap<>(); headers.put(X_AMZ_CONTENT_SHA256, oid.getName()); headers.put(HDR_CONTENT_LENGTH, Long.toString(size)); headers.put(X_AMZ_STORAGE_CLASS, s3Config.getStorageClass()); headers.put(HttpSupport.HDR_CONTENT_TYPE, "application/octet-stream"); //$NON-NLS-1$ headers = SignerV4.createHeaderAuthorization(s3Config, objectUrl, METHOD_PUT, headers, oid.getName()); Response.Action a = new Response.Action(); a.href = objectUrl.toString(); a.header = new HashMap<>(); a.header.putAll(headers); return a; }
String httpMethod, Map<String, String> headers, Map<String, String> queryParameters, String bodyHash) { addHostHeader(url, headers); String dateStamp = dateStamp(now); String scope = scope(bucketConfig.getRegion(), dateStamp); queryParameters.put(X_AMZ_CREDENTIAL, bucketConfig.getAccessKey() + "/" + scope); //$NON-NLS-1$ String dateTimeStampISO8601 = dateTimeStampISO8601(now); queryParameters.put(X_AMZ_DATE, dateTimeStampISO8601); String canonicalizedHeaderNames = canonicalizeHeaderNames(headers); queryParameters.put(X_AMZ_SIGNED_HEADERS, canonicalizedHeaderNames); String canonicalizedQueryParameters = canonicalizeQueryString( queryParameters); String canonicalizedHeaders = canonicalizeHeaderString(headers); String canonicalRequest = canonicalRequest(url, httpMethod, canonicalizedQueryParameters, canonicalizedHeaderNames, canonicalizedHeaders, bodyHash); byte[] signature = createSignature(bucketConfig, dateTimeStampISO8601, dateStamp, scope, canonicalRequest); queryParameters.put(X_AMZ_SIGNATURE, toHex(signature)); return formatAuthorizationQuery(queryParameters);
Map<String, String> headers = new HashMap<String, String>(); String authorizationQueryParameters = SignerV4.createAuthorizationQuery( s3Config, endpointUrl, METHOD_HEAD, headers, queryParams, UNSIGNED_PAYLOAD);
private static String canonicalRequest(URL endpoint, String httpMethod, String queryParameters, String canonicalizedHeaderNames, String canonicalizedHeaders, String bodyHash) { return String.format("%s\n%s\n%s\n%s\n%s\n%s", //$NON-NLS-1$ httpMethod, canonicalizeResourcePath(endpoint), queryParameters, canonicalizedHeaders, canonicalizedHeaderNames, bodyHash); }
private static String formatAuthorizationQuery( Map<String, String> queryParameters) { StringBuilder s = new StringBuilder(); for (String key : queryParameters.keySet()) { appendQuery(s, key, queryParameters.get(key)); } return s.toString(); }
Map<String, String> headers = new HashMap<>(); String authorizationQueryParameters = SignerV4.createAuthorizationQuery( s3Config, endpointUrl, METHOD_HEAD, headers, queryParams, UNSIGNED_PAYLOAD);