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());
}
}