diff --git a/mi-sql-public-demo/dependency-reduced-pom.xml b/mi-sql-public-demo/dependency-reduced-pom.xml new file mode 100644 index 0000000..9a8898f --- /dev/null +++ b/mi-sql-public-demo/dependency-reduced-pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + com.example + demo + 1.0-SNAPSHOT + + + + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + com.example.MainSQL + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + + + + + com.azure.spring + spring-cloud-azure-dependencies + 5.22.0 + pom + import + + + + + 17 + 17 + 17 + + diff --git a/mi-sql-public-demo/src/main/java/com/example/MainSQL.java b/mi-sql-public-demo/src/main/java/com/example/MainSQL.java index 5a8f9a5..e26dcb1 100644 --- a/mi-sql-public-demo/src/main/java/com/example/MainSQL.java +++ b/mi-sql-public-demo/src/main/java/com/example/MainSQL.java @@ -11,6 +11,29 @@ public class MainSQL { + /** + * Resolves environment variable placeholders in the format ${VAR_NAME} + */ + private static String resolveEnvironmentVariables(String input) { + if (input == null) { + return null; + } + + String result = input; + java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\$\\{([^}]+)\\}"); + java.util.regex.Matcher matcher = pattern.matcher(input); + + while (matcher.find()) { + String envVar = matcher.group(1); + String envValue = System.getenv(envVar); + if (envValue != null) { + result = result.replace("${" + envVar + "}", envValue); + } + } + + return result; + } + public static void main(String[] args) { @@ -30,8 +53,12 @@ public static void main(String[] args) { String connString = properties.getProperty("AZURE_SQLDB_CONNECTIONSTRING"); String clientId = properties.getProperty("AZURE_CLIENT_ID"); + // Resolve environment variables in connection string + connString = resolveEnvironmentVariables(connString); + clientId = resolveEnvironmentVariables(clientId); + connString = connString + ";msiClientId=" + clientId + ";authentication=ActiveDirectoryMSI"; - System.out.print(connString); + System.out.println("Connection string: " + connString); SQLServerDataSource ds = new SQLServerDataSource(); ds.setURL(connString); diff --git a/mi-sql-public-demo/src/main/resources/application.properties b/mi-sql-public-demo/src/main/resources/application.properties index ed7d015..d4813cc 100644 --- a/mi-sql-public-demo/src/main/resources/application.properties +++ b/mi-sql-public-demo/src/main/resources/application.properties @@ -1,5 +1,5 @@ AZURE_SQLDB_CONNECTIONSTRING=jdbc:sqlserver://${AZ_DATABASE_SERVER_NAME}.database.windows.net:1433;database=demo;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30; -AZURE_CLIENT_ID= +AZURE_CLIENT_ID=${AZURE_CLIENT_ID} # Enable Azure managed identity for Spring Cloud Azure spring.cloud.azure.credential.managed-identity-enabled=true