diff --git a/eng/jacoco-test-coverage/pom.xml b/eng/jacoco-test-coverage/pom.xml
index c12626402fc3..32ec7f1f1ca3 100644
--- a/eng/jacoco-test-coverage/pom.xml
+++ b/eng/jacoco-test-coverage/pom.xml
@@ -465,117 +465,117 @@
com.azure.spring
spring-cloud-azure-core
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-resourcemanager
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-messaging-azure
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-messaging-azure-eventhubs
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-messaging-azure-servicebus
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-messaging-azure-storage-queue
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-integration-azure-core
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-integration-azure-eventhubs
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-integration-azure-servicebus
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-integration-azure-storage-queue
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-autoconfigure
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-stream-binder-servicebus-core
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-stream-binder-servicebus
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-stream-binder-eventhubs
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-stream-binder-eventhubs-core
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-service
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-trace-sleuth
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-actuator
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-actuator-autoconfigure
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-appconfiguration-config
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-appconfiguration-config-web
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-feature-management
- 4.11.0-beta.1
+ 4.11.0
com.azure.spring
spring-cloud-azure-feature-management-web
- 4.11.0-beta.1
+ 4.11.0
com.azure
diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt
index 0aa32fd041d7..e918b1b9fb24 100644
--- a/eng/versioning/version_client.txt
+++ b/eng/versioning/version_client.txt
@@ -190,58 +190,58 @@ com.azure:azure-identity-extensions;1.1.6;1.1.7
com.azure:azure-analytics-purview-sharing;1.0.0-beta.2;1.0.0-beta.3
com.azure.spring:azure-monitor-spring-native;1.0.0-beta.1;1.0.0-beta.1
com.azure.spring:azure-monitor-spring-native-test;1.0.0-beta.1;1.0.0-beta.1
-com.azure.spring:spring-cloud-azure-appconfiguration-config-web;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-appconfiguration-config;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-feature-management-web;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-feature-management;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-appconfiguration-config;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-dependencies;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-messaging-azure;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-messaging-azure-eventhubs;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-messaging-azure-servicebus;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-messaging-azure-storage-queue;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-integration-azure-core;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-integration-azure-eventhubs;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-integration-azure-servicebus;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-integration-azure-storage-queue;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-core;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-actuator-autoconfigure;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-actuator;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-autoconfigure;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-resourcemanager;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-service;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-active-directory;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-active-directory-b2c;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-actuator;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-appconfiguration;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-cosmos;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-data-cosmos;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-eventhubs;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-eventgrid;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-jdbc-mysql;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-jdbc-postgresql;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-redis;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-keyvault;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-keyvault-certificates;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-keyvault-secrets;4.10.0;4.11.0-beta.1
+com.azure.spring:spring-cloud-azure-appconfiguration-config-web;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-appconfiguration-config;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-feature-management-web;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-feature-management;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-appconfiguration-config;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-dependencies;4.10.0;4.11.0
+com.azure.spring:spring-messaging-azure;4.10.0;4.11.0
+com.azure.spring:spring-messaging-azure-eventhubs;4.10.0;4.11.0
+com.azure.spring:spring-messaging-azure-servicebus;4.10.0;4.11.0
+com.azure.spring:spring-messaging-azure-storage-queue;4.10.0;4.11.0
+com.azure.spring:spring-integration-azure-core;4.10.0;4.11.0
+com.azure.spring:spring-integration-azure-eventhubs;4.10.0;4.11.0
+com.azure.spring:spring-integration-azure-servicebus;4.10.0;4.11.0
+com.azure.spring:spring-integration-azure-storage-queue;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-core;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-actuator-autoconfigure;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-actuator;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-autoconfigure;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-resourcemanager;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-service;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-active-directory;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-active-directory-b2c;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-actuator;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-appconfiguration;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-cosmos;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-data-cosmos;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-eventhubs;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-eventgrid;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-jdbc-mysql;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-jdbc-postgresql;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-redis;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-keyvault;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-keyvault-certificates;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-keyvault-secrets;4.10.0;4.11.0
com.azure.spring:spring-cloud-azure-starter-monitor;1.0.0-beta.1;1.0.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-servicebus-jms;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-servicebus;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-storage;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-storage-blob;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-storage-file-share;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-storage-queue;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-integration-eventhubs;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-integration-servicebus;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-integration-storage-queue;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-stream-eventhubs;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter-stream-servicebus;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-starter;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-stream-binder-eventhubs-core;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-stream-binder-eventhubs;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-stream-binder-servicebus-core;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-stream-binder-servicebus;4.10.0;4.11.0-beta.1
-com.azure.spring:spring-cloud-azure-trace-sleuth;4.10.0;4.11.0-beta.1
+com.azure.spring:spring-cloud-azure-starter-servicebus-jms;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-servicebus;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-storage;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-storage-blob;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-storage-file-share;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-storage-queue;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-integration-eventhubs;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-integration-servicebus;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-integration-storage-queue;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-stream-eventhubs;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter-stream-servicebus;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-starter;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-stream-binder-eventhubs-core;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-stream-binder-eventhubs;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-stream-binder-servicebus-core;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-stream-binder-servicebus;4.10.0;4.11.0
+com.azure.spring:spring-cloud-azure-trace-sleuth;4.10.0;4.11.0
com.azure.resourcemanager:azure-resourcemanager;2.29.0;2.30.0-beta.1
com.azure.resourcemanager:azure-resourcemanager-appplatform;2.29.0;2.30.0-beta.1
com.azure.resourcemanager:azure-resourcemanager-appservice;2.29.0;2.30.0-beta.1
diff --git a/sdk/boms/spring-cloud-azure-dependencies/pom.xml b/sdk/boms/spring-cloud-azure-dependencies/pom.xml
index ebf49d931818..8e9dd7a4a0a9 100644
--- a/sdk/boms/spring-cloud-azure-dependencies/pom.xml
+++ b/sdk/boms/spring-cloud-azure-dependencies/pom.xml
@@ -6,7 +6,7 @@
com.azure.spring
spring-cloud-azure-dependencies
- 4.11.0-beta.1
+ 4.11.0
pom
Spring Cloud Azure Dependencies
diff --git a/sdk/identity/azure-identity-extensions/src/main/java/com/azure/identity/extensions/implementation/credential/provider/DefaultTokenCredentialProvider.java b/sdk/identity/azure-identity-extensions/src/main/java/com/azure/identity/extensions/implementation/credential/provider/DefaultTokenCredentialProvider.java
index 3f7138ef7fb6..4378c8ab8a94 100644
--- a/sdk/identity/azure-identity-extensions/src/main/java/com/azure/identity/extensions/implementation/credential/provider/DefaultTokenCredentialProvider.java
+++ b/sdk/identity/azure-identity-extensions/src/main/java/com/azure/identity/extensions/implementation/credential/provider/DefaultTokenCredentialProvider.java
@@ -4,6 +4,9 @@
package com.azure.identity.extensions.implementation.credential.provider;
import com.azure.core.credential.TokenCredential;
+import com.azure.core.http.policy.HttpLogOptions;
+import com.azure.core.util.HttpClientOptions;
+import com.azure.core.util.logging.ClientLogger;
import com.azure.identity.ClientCertificateCredentialBuilder;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.identity.DefaultAzureCredentialBuilder;
@@ -12,11 +15,17 @@
import com.azure.identity.extensions.implementation.credential.TokenCredentialProviderOptions;
import reactor.util.annotation.Nullable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+
/**
* Default tokenCredentialProvider implementation that provides tokenCredential instance.
*/
public class DefaultTokenCredentialProvider implements TokenCredentialProvider {
+ private static final ClientLogger LOGGER = new ClientLogger(DefaultTokenCredentialProvider.class);
+
private final TokenCredentialProviderOptions options;
private final TokenCredential tokenCredential;
@@ -24,21 +33,25 @@ public class DefaultTokenCredentialProvider implements TokenCredentialProvider {
DefaultTokenCredentialProvider() {
this.options = new TokenCredentialProviderOptions();
this.tokenCredential = get(this.options);
+ LOGGER.verbose("DefaultTokenCredentialProvider 1 create token credential. - {}, {}", this.tokenCredential, this.tokenCredential.getClass());
}
DefaultTokenCredentialProvider(TokenCredentialProviderOptions options) {
this.options = options;
this.tokenCredential = get(this.options);
+ LOGGER.verbose("DefaultTokenCredentialProvider 2 create token credential. - {}, {}", this.tokenCredential, this.tokenCredential.getClass());
}
@Override
public TokenCredential get() {
+ LOGGER.verbose("tokenCredential class name - {}", tokenCredential.getClass());
return tokenCredential;
}
@Override
public TokenCredential get(TokenCredentialProviderOptions options) {
if (options == null) {
+ LOGGER.verbose("options is null, create dac builder to build token credential.");
return new DefaultAzureCredentialBuilder().build();
}
return resolveTokenCredential(options);
@@ -94,10 +107,20 @@ && hasText(options.getPassword())) {
return builder.build();
}
+ LOGGER.verbose("Use the dac builder.");
+ ExecutorService executorService = Executors.newFixedThreadPool(1, new ThreadFactory() {
+ private int count = 0;
+ @Override
+ public Thread newThread(Runnable runnable) {
+ return new Thread(runnable, "az-id-test-" + count++);
+ }
+ });
+
return new DefaultAzureCredentialBuilder()
.authorityHost(authorityHost)
.tenantId(tenantId)
.managedIdentityClientId(clientId)
+ .executorService(executorService).enableAccountIdentifierLogging().addPolicy(new HttpDebugLoggingPolicy())
.build();
}
diff --git a/sdk/identity/azure-identity-extensions/src/main/java/com/azure/identity/extensions/implementation/credential/provider/HttpDebugLoggingPolicy.java b/sdk/identity/azure-identity-extensions/src/main/java/com/azure/identity/extensions/implementation/credential/provider/HttpDebugLoggingPolicy.java
new file mode 100644
index 000000000000..76ebf78fbfac
--- /dev/null
+++ b/sdk/identity/azure-identity-extensions/src/main/java/com/azure/identity/extensions/implementation/credential/provider/HttpDebugLoggingPolicy.java
@@ -0,0 +1,264 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package com.azure.identity.extensions.implementation.credential.provider;
+
+import com.azure.core.http.ContentType;
+import com.azure.core.http.HttpHeader;
+import com.azure.core.http.HttpHeaders;
+import com.azure.core.http.HttpPipelineCallContext;
+import com.azure.core.http.HttpPipelineNextPolicy;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.HttpResponse;
+import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpPipelinePolicy;
+import com.azure.core.util.CoreUtils;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import reactor.core.publisher.Mono;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
+import java.nio.channels.Channels;
+import java.nio.channels.WritableByteChannel;
+import java.nio.charset.StandardCharsets;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * The pipeline policy that handles logging of HTTP requests and responses.
+ */
+public class HttpDebugLoggingPolicy implements HttpPipelinePolicy {
+
+ private static final ObjectMapper PRETTY_PRINTER = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+ private static final String REDACTED_PLACEHOLDER = "REDACTED";
+ private static final Set DISALLOWED_HEADER_NAMES = new HashSet<>();
+ private static final boolean PRETTY_PRINT_BODY = true;
+
+ /**
+ * Creates an HttpDebugLoggingPolicy with the given log configurations.
+ */
+ public HttpDebugLoggingPolicy() {
+ DISALLOWED_HEADER_NAMES.add("authorization");
+ }
+
+ @Override
+ public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) {
+ final Logger logger = LoggerFactory.getLogger((String) context.getData("caller-method").orElse(""));
+ final long startNs = System.nanoTime();
+
+ return logRequest(logger, context.getHttpRequest(), context.getData(HttpLoggingPolicy.RETRY_COUNT_CONTEXT))
+ .then(next.process())
+ .flatMap(response -> logResponse(logger, response, startNs))
+ .doOnError(throwable -> logger.warn("<-- HTTP FAILED: ", throwable));
+ }
+
+ private Mono logRequest(final Logger logger, final HttpRequest request,
+ final Optional