in java/client/src/main/java/org/apache/rocketmq/client/java/rpc/Signature.java [56:117]
public static Metadata sign(ClientConfiguration config, ClientId clientId) throws
NoSuchAlgorithmException, InvalidKeyException {
Metadata metadata = new Metadata();
metadata.put(Metadata.Key.of(LANGUAGE_KEY, Metadata.ASCII_STRING_MARSHALLER), "JAVA");
metadata.put(Metadata.Key.of(PROTOCOL_VERSION, Metadata.ASCII_STRING_MARSHALLER),
Utilities.getProtocolVersion());
metadata.put(Metadata.Key.of(CLIENT_VERSION_KEY, Metadata.ASCII_STRING_MARSHALLER), MetadataUtils.getVersion());
String dateTime = new SimpleDateFormat(DATE_TIME_FORMAT).format(new Date());
metadata.put(Metadata.Key.of(DATE_TIME_KEY, Metadata.ASCII_STRING_MARSHALLER), dateTime);
final String requestId = RequestIdGenerator.getInstance().next();
metadata.put(Metadata.Key.of(REQUEST_ID_KEY, Metadata.ASCII_STRING_MARSHALLER), requestId);
metadata.put(Metadata.Key.of(CLIENT_ID_KEY, Metadata.ASCII_STRING_MARSHALLER), clientId.toString());
final Optional<SessionCredentialsProvider> optionalSessionCredentialsProvider =
config.getCredentialsProvider();
if (!optionalSessionCredentialsProvider.isPresent()) {
return metadata;
}
final SessionCredentialsProvider provider = optionalSessionCredentialsProvider.get();
final SessionCredentials credentials = provider.getSessionCredentials();
if (null == credentials) {
return metadata;
}
final Optional<String> optionalSecurityToken = credentials.tryGetSecurityToken();
optionalSecurityToken.ifPresent(s -> metadata.put(Metadata.Key.of(SESSION_TOKEN_KEY,
Metadata.ASCII_STRING_MARSHALLER), s));
final String accessKey = credentials.getAccessKey();
final String accessSecret = credentials.getAccessSecret();
if (StringUtils.isBlank(accessKey)) {
return metadata;
}
if (StringUtils.isBlank(accessSecret)) {
return metadata;
}
String sign = TLSHelper.sign(accessSecret, dateTime);
final String authorization = ALGORITHM
+ " "
+ CREDENTIAL
+ "="
+ accessKey
+ ", "
+ SIGNED_HEADERS
+ "="
+ DATE_TIME_KEY
+ ", "
+ SIGNATURE
+ "="
+ sign;
metadata.put(Metadata.Key.of(AUTHORIZATION_KEY, Metadata.ASCII_STRING_MARSHALLER), authorization);
return metadata;
}