class SignerV4
extends java.lang.Object
See http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
ALGORITHM |
private static java.lang.String |
DATE_STRING_FORMAT |
private static java.lang.String |
HEX |
private static java.lang.String |
HMACSHA256 |
private static java.lang.String |
ISO8601_BASIC_FORMAT |
private static java.lang.String |
S3 |
private static java.lang.String |
SCHEME |
private static java.lang.String |
TERMINATOR |
(package private) static java.lang.String |
UNSIGNED_PAYLOAD |
private static java.lang.String |
UTC |
private static java.lang.String |
X_AMZ_ALGORITHM |
(package private) static java.lang.String |
X_AMZ_CONTENT_SHA256 |
private static java.lang.String |
X_AMZ_CREDENTIAL |
private static java.lang.String |
X_AMZ_DATE |
(package private) static java.lang.String |
X_AMZ_EXPIRES |
private static java.lang.String |
X_AMZ_SIGNATURE |
private static java.lang.String |
X_AMZ_SIGNED_HEADERS |
(package private) static java.lang.String |
X_AMZ_STORAGE_CLASS |
Constructor and Description |
---|
SignerV4() |
Modifier and Type | Method and Description |
---|---|
private static void |
addHostHeader(java.net.URL url,
java.util.Map<java.lang.String,java.lang.String> headers) |
private static void |
appendQuery(java.lang.StringBuilder s,
java.lang.String key,
java.lang.String value) |
private static java.lang.String |
canonicalizeHeaderNames(java.util.Map<java.lang.String,java.lang.String> headers) |
private static java.lang.String |
canonicalizeHeaderString(java.util.Map<java.lang.String,java.lang.String> headers) |
private static java.lang.String |
canonicalizeQueryString(java.util.Map<java.lang.String,java.lang.String> parameters) |
private static java.lang.String |
canonicalizeResourcePath(java.net.URL endpoint) |
private static java.lang.String |
canonicalRequest(java.net.URL endpoint,
java.lang.String httpMethod,
java.lang.String queryParameters,
java.lang.String canonicalizedHeaderNames,
java.lang.String canonicalizedHeaders,
java.lang.String bodyHash) |
(package private) static java.lang.String |
createAuthorizationQuery(S3Config bucketConfig,
java.net.URL url,
java.lang.String httpMethod,
java.util.Map<java.lang.String,java.lang.String> headers,
java.util.Map<java.lang.String,java.lang.String> queryParameters,
java.lang.String bodyHash)
Create an AWSV4 authorization for a request, suitable for embedding in
query parameters.
|
(package private) static java.util.Map<java.lang.String,java.lang.String> |
createHeaderAuthorization(S3Config bucketConfig,
java.net.URL url,
java.lang.String httpMethod,
java.util.Map<java.lang.String,java.lang.String> headers,
java.lang.String bodyHash)
Sign headers for given bucket, url and HTTP method and add signature in
Authorization header.
|
private static byte[] |
createSignature(S3Config bucketConfig,
java.lang.String dateTimeStamp,
java.lang.String dateStamp,
java.lang.String scope,
java.lang.String canonicalRequest) |
private static java.lang.String |
dateStamp(java.util.Date now) |
private static java.lang.String |
dateTimeStampISO8601(java.util.Date now) |
private static java.lang.String |
formatAuthorizationHeader(S3Config bucketConfig,
java.lang.String canonicalizedHeaderNames,
java.lang.String scope,
byte[] signature) |
private static java.lang.String |
formatAuthorizationQuery(java.util.Map<java.lang.String,java.lang.String> queryParameters) |
private static byte[] |
hash(java.lang.String s) |
private static java.lang.String |
scope(java.lang.String region,
java.lang.String dateStamp) |
private static byte[] |
sign(java.lang.String stringData,
byte[] key) |
private static java.lang.String |
stringToSign(java.lang.String scheme,
java.lang.String algorithm,
java.lang.String dateTime,
java.lang.String scope,
java.lang.String canonicalRequest) |
private static java.lang.String |
toHex(byte[] bytes) |
private static java.lang.String |
urlEncode(java.lang.String url,
boolean keepPathSlash) |
static final java.lang.String UNSIGNED_PAYLOAD
private static final java.lang.String ALGORITHM
private static final java.lang.String DATE_STRING_FORMAT
private static final java.lang.String HEX
private static final java.lang.String HMACSHA256
private static final java.lang.String ISO8601_BASIC_FORMAT
private static final java.lang.String S3
private static final java.lang.String SCHEME
private static final java.lang.String TERMINATOR
private static final java.lang.String UTC
private static final java.lang.String X_AMZ_ALGORITHM
private static final java.lang.String X_AMZ_CREDENTIAL
private static final java.lang.String X_AMZ_DATE
private static final java.lang.String X_AMZ_SIGNATURE
private static final java.lang.String X_AMZ_SIGNED_HEADERS
static final java.lang.String X_AMZ_CONTENT_SHA256
static final java.lang.String X_AMZ_EXPIRES
static final java.lang.String X_AMZ_STORAGE_CLASS
static java.lang.String createAuthorizationQuery(S3Config bucketConfig, java.net.URL url, java.lang.String httpMethod, java.util.Map<java.lang.String,java.lang.String> headers, java.util.Map<java.lang.String,java.lang.String> queryParameters, java.lang.String bodyHash)
bucketConfig
- configuration of S3 storage bucket this request should be
signed forurl
- HTTP request URLhttpMethod
- HTTP methodheaders
- The HTTP request headers; 'Host' and 'X-Amz-Date' will be
added to this set.queryParameters
- Any query parameters that will be added to the endpoint. The
parameters should be specified in canonical format.bodyHash
- Pre-computed SHA256 hash of the request body content; this
value should also be set as the header 'X-Amz-Content-SHA256'
for non-streaming uploads.private static java.lang.String formatAuthorizationQuery(java.util.Map<java.lang.String,java.lang.String> queryParameters)
private static void appendQuery(java.lang.StringBuilder s, java.lang.String key, java.lang.String value)
static java.util.Map<java.lang.String,java.lang.String> createHeaderAuthorization(S3Config bucketConfig, java.net.URL url, java.lang.String httpMethod, java.util.Map<java.lang.String,java.lang.String> headers, java.lang.String bodyHash)
bucketConfig
- configuration of S3 storage bucket this request should be
signed forurl
- HTTP request URLhttpMethod
- HTTP methodheaders
- HTTP headers to signbodyHash
- Pre-computed SHA256 hash of the request body content; this
value should also be set as the header 'X-Amz-Content-SHA256'
for non-streaming uploads.private static java.lang.String formatAuthorizationHeader(S3Config bucketConfig, java.lang.String canonicalizedHeaderNames, java.lang.String scope, byte[] signature)
private static void addHostHeader(java.net.URL url, java.util.Map<java.lang.String,java.lang.String> headers)
private static java.lang.String canonicalizeHeaderNames(java.util.Map<java.lang.String,java.lang.String> headers)
private static java.lang.String canonicalizeHeaderString(java.util.Map<java.lang.String,java.lang.String> headers)
private static java.lang.String dateStamp(java.util.Date now)
private static java.lang.String dateTimeStampISO8601(java.util.Date now)
private static java.lang.String scope(java.lang.String region, java.lang.String dateStamp)
private static java.lang.String canonicalizeQueryString(java.util.Map<java.lang.String,java.lang.String> parameters)
private static java.lang.String canonicalRequest(java.net.URL endpoint, java.lang.String httpMethod, java.lang.String queryParameters, java.lang.String canonicalizedHeaderNames, java.lang.String canonicalizedHeaders, java.lang.String bodyHash)
private static java.lang.String canonicalizeResourcePath(java.net.URL endpoint)
private static byte[] hash(java.lang.String s)
private static byte[] sign(java.lang.String stringData, byte[] key)
private static java.lang.String stringToSign(java.lang.String scheme, java.lang.String algorithm, java.lang.String dateTime, java.lang.String scope, java.lang.String canonicalRequest)
private static java.lang.String toHex(byte[] bytes)
private static java.lang.String urlEncode(java.lang.String url, boolean keepPathSlash)
private static byte[] createSignature(S3Config bucketConfig, java.lang.String dateTimeStamp, java.lang.String dateStamp, java.lang.String scope, java.lang.String canonicalRequest)