in sdk/src/main/java/software/amazon/awssdk/iot/AwsIotMqtt5ClientBuilder.java [225:280]
public static AwsIotMqtt5ClientBuilder newWebsocketMqttBuilderWithSigv4Auth(String hostName, WebsocketSigv4Config config) {
TlsContextOptions options = TlsContextOptions.createDefaultClient();
options.alpnList.clear();
AwsIotMqtt5ClientBuilder builder = new AwsIotMqtt5ClientBuilder(hostName, DEFAULT_WEBSOCKET_MQTT_PORT, options);
options.close();
CredentialsProvider provider = null;
if (config != null) {
provider = config.credentialsProvider;
}
try (AwsSigningConfig signingConfig = new AwsSigningConfig()) {
signingConfig.setAlgorithm(AwsSigningAlgorithm.SIGV4);
signingConfig.setSignatureType(AwsSignatureType.HTTP_REQUEST_VIA_QUERY_PARAMS);
if (provider != null) {
signingConfig.setCredentialsProvider(provider);
} else {
DefaultChainCredentialsProvider.DefaultChainCredentialsProviderBuilder providerBuilder = new DefaultChainCredentialsProvider.DefaultChainCredentialsProviderBuilder();
providerBuilder.withClientBootstrap(ClientBootstrap.getOrCreateStaticDefault());
try (CredentialsProvider defaultProvider = providerBuilder.build()) {
signingConfig.setCredentialsProvider(defaultProvider);
}
}
if (config != null) {
if (config.region != null) {
signingConfig.setRegion(config.region);
} else {
signingConfig.setRegion(extractRegionFromEndpoint(hostName));
}
} else {
signingConfig.setRegion(extractRegionFromEndpoint(hostName));
}
signingConfig.setService("iotdevicegateway");
signingConfig.setOmitSessionToken(true);
// Needs to stay alive as long as the MQTT5 client, which we can allow by pinning
// the resource to the signingConfig
options.addReferenceTo(signingConfig);
try (AwsMqtt5Sigv4HandshakeTransformer transformer = new AwsMqtt5Sigv4HandshakeTransformer(signingConfig)) {
builder.config.withWebsocketHandshakeTransform(transformer);
// Needs to stay alive as long as the MQTT5 client, which we can allow by pinning
// the resource to the signingConfig
options.addReferenceTo(transformer);
}
} catch (Exception ex) {
System.out.println("Error - exception occurred while making Websocket Sigv4 builder: " + ex.toString());
ex.printStackTrace();
return null;
}
return builder;
}