in core/src/main/java/com/google/cloud/sql/core/CredentialFactoryProvider.java [64:97]
CredentialFactory getInstanceCredentialFactory(ConnectorConfig config) {
CredentialFactory instanceCredentialFactory;
if (config.getGoogleCredentialsSupplier() != null) {
instanceCredentialFactory =
new SupplierCredentialFactory(config.getGoogleCredentialsSupplier());
} else if (config.getGoogleCredentials() != null) {
instanceCredentialFactory = new ConstantCredentialFactory(config.getGoogleCredentials());
} else if (config.getGoogleCredentialsPath() != null) {
instanceCredentialFactory = new FileCredentialFactory(config.getGoogleCredentialsPath());
} else {
instanceCredentialFactory = getDefaultCredentialFactory();
}
// Validate targetPrincipal and delegates
if (config.getTargetPrincipal() == null
&& config.getDelegates() != null
&& !config.getDelegates().isEmpty()) {
throw new IllegalArgumentException(
String.format(
"Connection property %s must be when %s is set.",
ConnectionConfig.CLOUD_SQL_TARGET_PRINCIPAL_PROPERTY,
ConnectionConfig.CLOUD_SQL_DELEGATES_PROPERTY));
}
// If targetPrincipal and delegates are set, then
if (config.getTargetPrincipal() != null && !config.getTargetPrincipal().isEmpty()) {
instanceCredentialFactory =
new ServiceAccountImpersonatingCredentialFactory(
instanceCredentialFactory, config.getTargetPrincipal(), config.getDelegates());
}
return instanceCredentialFactory;
}