Skip to content

Commit 1fdd71e

Browse files
authored
Fix DefaultAzureCredentialOptions.TenantId setter validation logic (Azure#47037)
1 parent 8a63175 commit 1fdd71e

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

sdk/identity/Azure.Identity/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
### Breaking Changes
88

99
### Bugs Fixed
10+
- Fixed an issue where setting `DefaultAzureCredentialOptions.TenantId` twice throws an `InvalidOperationException` ([#47035](https://github.com/Azure/azure-sdk-for-net/issues/47035))
1011

1112
### Other Changes
1213

sdk/identity/Azure.Identity/src/Credentials/DefaultAzureCredentialOptions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,22 @@ public string TenantId
5353
get => _tenantId.Value;
5454
set
5555
{
56-
if (_interactiveBrowserTenantId.Updated && value != _interactiveBrowserTenantId.Value)
56+
if (_interactiveBrowserTenantId.Updated && _tenantId.Value != _interactiveBrowserTenantId.Value)
5757
{
5858
throw new InvalidOperationException("Applications should not set both TenantId and InteractiveBrowserTenantId. TenantId is preferred, and is functionally equivalent. InteractiveBrowserTenantId exists only to provide backwards compatibility.");
5959
}
6060

61-
if (_sharedTokenCacheTenantId.Updated && value != _sharedTokenCacheTenantId.Value)
61+
if (_sharedTokenCacheTenantId.Updated && _tenantId.Value != _sharedTokenCacheTenantId.Value)
6262
{
6363
throw new InvalidOperationException("Applications should not set both TenantId and SharedTokenCacheTenantId. TenantId is preferred, and is functionally equivalent. SharedTokenCacheTenantId exists only to provide backwards compatibility.");
6464
}
6565

66-
if (_visualStudioTenantId.Updated && value != _visualStudioTenantId.Value)
66+
if (_visualStudioTenantId.Updated && _tenantId.Value != _visualStudioTenantId.Value)
6767
{
6868
throw new InvalidOperationException("Applications should not set both TenantId and VisualStudioTenantId. TenantId is preferred, and is functionally equivalent. VisualStudioTenantId exists only to provide backwards compatibility.");
6969
}
7070

71-
if (_visualStudioCodeTenantId.Updated && value != _visualStudioCodeTenantId.Value)
71+
if (_visualStudioCodeTenantId.Updated && _tenantId.Value != _visualStudioCodeTenantId.Value)
7272
{
7373
throw new InvalidOperationException("Applications should not set both TenantId and VisualStudioCodeTenantId. TenantId is preferred, and is functionally equivalent. VisualStudioCodeTenantId exists only to provide backwards compatibility.");
7474
}

sdk/identity/Azure.Identity/tests/DefaultAzureCredentialOptionsTests.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,26 @@ public void ValidateAzureAdditionallyAllowedTenantsEnvVarDefaultHonored(string e
9090
}
9191

9292
[Test]
93-
public void ValidateShallowCloneCopiesAllProperties([Values]bool useTenantId)
93+
public void DeprecatedTenantIdPropertiesCannotMismatch()
94+
{
95+
var options = new DefaultAzureCredentialOptions();
96+
options.TenantId = "1";
97+
Assert.Throws<InvalidOperationException>(() => options.InteractiveBrowserTenantId = "2");
98+
Assert.Throws<InvalidOperationException>(() => options.SharedTokenCacheTenantId = "2");
99+
Assert.Throws<InvalidOperationException>(() => options.VisualStudioTenantId = "2");
100+
Assert.Throws<InvalidOperationException>(() => options.VisualStudioCodeTenantId = "2");
101+
}
102+
103+
[Test]
104+
public void TenantIdCanBeSetTwice()
105+
{
106+
var options = new DefaultAzureCredentialOptions();
107+
options.TenantId = "1";
108+
options.TenantId = "2";
109+
}
110+
111+
[Test]
112+
public void ValidateShallowCloneCopiesAllProperties([Values] bool useTenantId)
94113
{
95114
Random rand = new Random();
96115

0 commit comments

Comments
 (0)