diff --git a/eng/jacoco-test-coverage/pom.xml b/eng/jacoco-test-coverage/pom.xml index 719120b82e34..5ecad264dd96 100644 --- a/eng/jacoco-test-coverage/pom.xml +++ b/eng/jacoco-test-coverage/pom.xml @@ -213,7 +213,7 @@ com.azure azure-identity - 1.9.0-beta.4 + 1.9.0 com.azure diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index c434d9a91d5a..130eceba31b0 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -113,7 +113,7 @@ com.azure:azure-developer-devcenter;1.0.0-beta.2;1.0.0-beta.3 com.azure:azure-e2e;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-health-insights-clinicalmatching;1.0.0-beta.1;1.0.0-beta.2 com.azure:azure-health-insights-cancerprofiling;1.0.0-beta.1;1.0.0-beta.2 -com.azure:azure-identity;1.8.3;1.9.0-beta.4 +com.azure:azure-identity;1.8.3;1.9.0 com.azure:azure-identity-perf;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-iot-deviceupdate;1.0.6;1.1.0-beta.1 com.azure:azure-iot-modelsrepository;1.0.0-beta.1;1.0.0-beta.2 diff --git a/sdk/e2e/pom.xml b/sdk/e2e/pom.xml index c499d242fc91..caa2989926c7 100644 --- a/sdk/e2e/pom.xml +++ b/sdk/e2e/pom.xml @@ -39,7 +39,7 @@ com.azure azure-identity - 1.9.0-beta.4 + 1.9.0 com.azure diff --git a/sdk/identity/azure-identity-perf/pom.xml b/sdk/identity/azure-identity-perf/pom.xml index d272ddddc34d..68b5e929d08b 100644 --- a/sdk/identity/azure-identity-perf/pom.xml +++ b/sdk/identity/azure-identity-perf/pom.xml @@ -25,7 +25,7 @@ com.azure azure-identity - 1.9.0-beta.4 + 1.9.0 com.azure diff --git a/sdk/identity/azure-identity/CHANGELOG.md b/sdk/identity/azure-identity/CHANGELOG.md index 0419e6137ad9..689254418875 100644 --- a/sdk/identity/azure-identity/CHANGELOG.md +++ b/sdk/identity/azure-identity/CHANGELOG.md @@ -1,17 +1,19 @@ # Release History -## 1.9.0-beta.4 (Unreleased) +## 1.9.0 (2023-05-08) ### Features Added -### Breaking Changes - -### Bugs Fixed +#### Features Generally Available from v1.9.0-beta3 +- Added configurable timeout for developer credentials (Azure CLI, Azure Developer CLI) +- Added `WorkloadIdentityCredential` to authenticate using workload identity in Azure Kubernetes. ### Other Changes -- renamed `disableInstanceDiscovery` to `disableAuthorityValidationAndInstanceDiscovery`. - renamed `DefaultAzureCredential.processTimeout` to `credentialProcessTimeout`. +#### Dependency Updates +- Upgraded `azure-core` from `1.38.0` to version `1.39.0`. + ## 1.8.3 (2023-05-01) ### Other Changes diff --git a/sdk/identity/azure-identity/README.md b/sdk/identity/azure-identity/README.md index 5a45c010ebe8..9cbaad413c75 100644 --- a/sdk/identity/azure-identity/README.md +++ b/sdk/identity/azure-identity/README.md @@ -46,7 +46,7 @@ To take dependency on a particular version of the library that isn't present in com.azure azure-identity - 1.8.2 + 1.9.0 ``` [//]: # ({x-version-update-end}) diff --git a/sdk/identity/azure-identity/pom.xml b/sdk/identity/azure-identity/pom.xml index 27ae2fcd005f..754e7af5b547 100644 --- a/sdk/identity/azure-identity/pom.xml +++ b/sdk/identity/azure-identity/pom.xml @@ -6,7 +6,7 @@ com.azure azure-identity - 1.9.0-beta.4 + 1.9.0 Microsoft Azure client library for Identity This module contains client library for Microsoft Azure Identity. diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/AadCredentialBuilderBase.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/AadCredentialBuilderBase.java index 686325890ac7..403ac0d19dcd 100644 --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/AadCredentialBuilderBase.java +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/AadCredentialBuilderBase.java @@ -122,8 +122,8 @@ public T additionallyAllowedTenants(List additionallyAllowedTenants) { */ @SuppressWarnings("unchecked") - public T disableAuthorityValidationAndInstanceDiscovery() { - this.identityClientOptions.disableAuthorityValidationAndInstanceDiscovery(); + public T disableInstanceDiscovery() { + this.identityClientOptions.disableInstanceDiscovery(); return (T) this; } } diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/DefaultAzureCredentialBuilder.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/DefaultAzureCredentialBuilder.java index 7ec1a57c4b3c..74d7d8513a4d 100644 --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/DefaultAzureCredentialBuilder.java +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/DefaultAzureCredentialBuilder.java @@ -240,8 +240,8 @@ public DefaultAzureCredentialBuilder credentialProcessTimeout(Duration credentia * * @return An updated instance of this builder with instance discovery disabled. */ - public DefaultAzureCredentialBuilder disableAuthorityValidationAndInstanceDiscovery() { - this.identityClientOptions.disableAuthorityValidationAndInstanceDiscovery(); + public DefaultAzureCredentialBuilder disableInstanceDiscovery() { + this.identityClientOptions.disableInstanceDiscovery(); return this; } diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClient.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClient.java index b9eb8931d4dc..760ffbe5db63 100644 --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClient.java +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClient.java @@ -235,7 +235,7 @@ public Mono authenticateWithIntelliJ(TokenRequestContext request) { ConfidentialClientApplication.builder(spDetails.get("client"), ClientCredentialFactory.createFromSecret(spDetails.get("key"))) .authority(authorityUrl) - .instanceDiscovery(options.getDisableAuthorityValidationAndInstanceDiscovery()); + .instanceDiscovery(options.isInstanceDiscoveryEnabled()); // If http pipeline is available, then it should override the proxy options if any configured. if (httpPipelineAdapter != null) { diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClientBase.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClientBase.java index e3dc53d159e3..459ca76dfdfc 100644 --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClientBase.java +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClientBase.java @@ -23,6 +23,7 @@ import com.azure.core.util.UserAgentUtil; import com.azure.core.util.builder.ClientBuilderUtil; import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.logging.LogLevel; import com.azure.core.util.serializer.JacksonAdapter; import com.azure.core.util.serializer.SerializerAdapter; import com.azure.core.util.serializer.SerializerEncoding; @@ -213,7 +214,13 @@ ConfidentialClientApplication getConfidentialClient() { ConfidentialClientApplication.Builder applicationBuilder = ConfidentialClientApplication.builder(clientId, credential); try { - applicationBuilder = applicationBuilder.authority(authorityUrl).instanceDiscovery(options.getDisableAuthorityValidationAndInstanceDiscovery()); + applicationBuilder = applicationBuilder.authority(authorityUrl).instanceDiscovery(options.isInstanceDiscoveryEnabled()); + + if (!options.isInstanceDiscoveryEnabled()) { + LOGGER.log(LogLevel.VERBOSE, () -> "Instance discovery and authority validation is disabled. In this" + + " state, the library will not fetch metadata to validate the specified authority host. As a" + + " result, it is crucial to ensure that the configured authority host is valid and trustworthy."); + } } catch (MalformedURLException e) { throw LOGGER.logExceptionAsWarning(new IllegalStateException(e)); } @@ -268,7 +275,13 @@ PublicClientApplication getPublicClient(boolean sharedTokenCacheCredential) { + tenantId; PublicClientApplication.Builder builder = PublicClientApplication.builder(clientId); try { - builder = builder.authority(authorityUrl).instanceDiscovery(options.getDisableAuthorityValidationAndInstanceDiscovery()); + builder = builder.authority(authorityUrl).instanceDiscovery(options.isInstanceDiscoveryEnabled()); + + if (!options.isInstanceDiscoveryEnabled()) { + LOGGER.log(LogLevel.VERBOSE, () -> "Instance discovery and authority validation is disabled. In this" + + " state, the library will not fetch metadata to validate the specified authority host. As a" + + " result, it is crucial to ensure that the configured authority host is valid and trustworthy."); + } } catch (MalformedURLException e) { throw LOGGER.logExceptionAsWarning(new IllegalStateException(e)); } @@ -376,7 +389,14 @@ ConfidentialClientApplication getWorkloadIdentityConfidentialClient() { : clientId, credential); try { - applicationBuilder = applicationBuilder.authority(authorityUrl).instanceDiscovery(options.getDisableAuthorityValidationAndInstanceDiscovery()); + applicationBuilder = applicationBuilder.authority(authorityUrl).instanceDiscovery(options.isInstanceDiscoveryEnabled()); + + if (!options.isInstanceDiscoveryEnabled()) { + LOGGER.log(LogLevel.VERBOSE, () -> "Instance discovery and authority validation is disabled. In this" + + " state, the library will not fetch metadata to validate the specified authority host. As a" + + " result, it is crucial to ensure that the configured authority host is valid and trustworthy."); + } + } catch (MalformedURLException e) { throw LOGGER.logExceptionAsWarning(new IllegalStateException(e)); } diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClientOptions.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClientOptions.java index c05d7197dfd2..c3519ecc3188 100644 --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClientOptions.java +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClientOptions.java @@ -665,7 +665,7 @@ IdentityClientOptions setPerRetryPolicies(List perRetryPolic * * @return the updated client options */ - public IdentityClientOptions disableAuthorityValidationAndInstanceDiscovery() { + public IdentityClientOptions disableInstanceDiscovery() { this.instanceDiscovery = false; return this; } @@ -674,7 +674,7 @@ public IdentityClientOptions disableAuthorityValidationAndInstanceDiscovery() { * Gets the instance discovery policy. * @return boolean indicating if instance discovery is enabled. */ - public boolean getDisableAuthorityValidationAndInstanceDiscovery() { + public boolean isInstanceDiscoveryEnabled() { return this.instanceDiscovery; } @@ -737,8 +737,8 @@ public IdentityClientOptions clone() { .setRetryPolicy(this.retryPolicy) .setPerCallPolicies(this.perCallPolicies) .setPerRetryPolicies(this.perRetryPolicies); - if (!getDisableAuthorityValidationAndInstanceDiscovery()) { - clone.disableAuthorityValidationAndInstanceDiscovery(); + if (!isInstanceDiscoveryEnabled()) { + clone.disableInstanceDiscovery(); } return clone; } diff --git a/sdk/identity/azure-identity/src/test/java/com/azure/identity/implementation/IdentityClientOptionsTest.java b/sdk/identity/azure-identity/src/test/java/com/azure/identity/implementation/IdentityClientOptionsTest.java index e8055c9230b9..3c34b7e4ad3d 100644 --- a/sdk/identity/azure-identity/src/test/java/com/azure/identity/implementation/IdentityClientOptionsTest.java +++ b/sdk/identity/azure-identity/src/test/java/com/azure/identity/implementation/IdentityClientOptionsTest.java @@ -39,7 +39,7 @@ public void testCustomAuthorityHost() { @Test public void testDisableAuthorityValidationAndInstanceDiscovery() { IdentityClientOptions identityClientOptions = new IdentityClientOptions(); - identityClientOptions.disableAuthorityValidationAndInstanceDiscovery(); - Assert.assertFalse(identityClientOptions.getDisableAuthorityValidationAndInstanceDiscovery()); + identityClientOptions.disableInstanceDiscovery(); + Assert.assertFalse(identityClientOptions.isInstanceDiscoveryEnabled()); } }