Skip to content

Commit 6025646

Browse files
trwalketrwalke
andauthored
Fixing IsCommonOrOrganizationsTenant check to not return true for consumers (#5195)
* Fixing IsCommonOrOrganizationsTenant check to not return true for consumers * Updating tests to better validate IsCommonOrOrganizationsTenant * Removing extra test * Test update --------- Co-authored-by: trwalke <[email protected]>
1 parent f38ec8d commit 6025646

File tree

3 files changed

+52
-16
lines changed

3 files changed

+52
-16
lines changed

src/client/Microsoft.Identity.Client/Instance/AadAuthority.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ internal bool IsCommonOrOrganizationsTenant()
7575

7676
internal static bool IsCommonOrOrganizationsTenant(string tenantId)
7777
{
78-
return !string.IsNullOrEmpty(tenantId) &&
78+
return !string.IsNullOrEmpty(tenantId) &&
79+
!IsConsumers(tenantId) &&
7980
s_tenantlessTenantNames.Contains(tenantId);
8081
}
8182

tests/Microsoft.Identity.Test.Unit/CoreTests/InstanceTests/AadAuthorityTests.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,34 @@ public void IsOrganizationsTenantWithMsaPassthroughEnabled()
333333
Assert.IsTrue(aadAuthorityInstance.IsOrganizationsTenantWithMsaPassthroughEnabled(true, "9188040d-6c67-4c5b-b112-36a304b66dad"));
334334
}
335335

336+
[TestMethod]
337+
public void IsCommonOrOrganizationsTenantTest()
338+
{
339+
//Test for common tenant
340+
AadAuthority aadAuthorityInstance = new AadAuthority(Authority.CreateAuthority("https://login.microsoftonline.com/common").AuthorityInfo);
341+
342+
Assert.IsNotNull(aadAuthorityInstance);
343+
Assert.AreEqual(aadAuthorityInstance.AuthorityInfo.AuthorityType, AuthorityType.Aad);
344+
345+
Assert.IsTrue(aadAuthorityInstance.IsCommonOrOrganizationsTenant());
346+
347+
//Test for common Organizations tenant
348+
aadAuthorityInstance = new AadAuthority(Authority.CreateAuthority("https://login.microsoftonline.com/organizations").AuthorityInfo);
349+
350+
Assert.IsNotNull(aadAuthorityInstance);
351+
Assert.AreEqual(aadAuthorityInstance.AuthorityInfo.AuthorityType, AuthorityType.Aad);
352+
353+
Assert.IsTrue(aadAuthorityInstance.IsCommonOrOrganizationsTenant());
354+
355+
//Test for common Organizations tenant
356+
aadAuthorityInstance = new AadAuthority(Authority.CreateAuthority("https://login.microsoftonline.com/consumers").AuthorityInfo);
357+
358+
Assert.IsNotNull(aadAuthorityInstance);
359+
Assert.AreEqual(aadAuthorityInstance.AuthorityInfo.AuthorityType, AuthorityType.Aad);
360+
361+
Assert.IsFalse(aadAuthorityInstance.IsCommonOrOrganizationsTenant());
362+
}
363+
336364
[TestMethod]
337365
public async Task CreateAuthorityForRequestAsync_MSAPassthroughAsync()
338366
{

tests/Microsoft.Identity.Test.Unit/PublicApiTests/ConfidentialClientApplicationTests.cs

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1881,7 +1881,10 @@ private void AfterCacheAccess(TokenCacheNotificationArgs args)
18811881
}
18821882

18831883
[TestMethod]
1884-
public async Task AcquireTokenForClientAuthorityCheckTestAsync()
1884+
[DataRow(TestConstants.AuthorityCommonTenant)]
1885+
[DataRow(TestConstants.AuthorityOrganizationsTenant)]
1886+
[DataRow(TestConstants.AuthorityConsumersTenant)]
1887+
public async Task AcquireTokenForClientAuthorityCheckTestAsync(string tenant)
18851888
{
18861889
using (var httpManager = new MockHttpManager())
18871890
{
@@ -1895,32 +1898,29 @@ public async Task AcquireTokenForClientAuthorityCheckTestAsync()
18951898
.WithClientSecret(TestConstants.ClientSecret)
18961899
.WithHttpManager(httpManager)
18971900
.WithLogging((LogLevel _, string message, bool _) => log += message)
1901+
.WithAuthority(tenant, true)
18981902
.BuildConcrete();
18991903

1900-
#pragma warning disable CS0618 // Type or member is obsolete
19011904
var result = await app
19021905
.AcquireTokenForClient(TestConstants.s_scope)
1903-
.WithAuthority(TestConstants.AuthorityCommonTenant, true)
1904-
.ExecuteAsync(CancellationToken.None)
1905-
.ConfigureAwait(false);
1906-
1907-
Assert.IsTrue(log.Contains(MsalErrorMessage.ClientCredentialWrongAuthority));
1908-
1909-
log = string.Empty;
1910-
result = await app
1911-
.AcquireTokenForClient(TestConstants.s_scope)
1912-
.WithAuthority(TestConstants.AuthorityOrganizationsTenant, true)
19131906
.ExecuteAsync(CancellationToken.None)
19141907
.ConfigureAwait(false);
1915-
#pragma warning restore CS0618 // Type or member is obsolete
19161908

1917-
Assert.IsTrue(log.Contains(MsalErrorMessage.ClientCredentialWrongAuthority));
1909+
if (tenant.Equals(TestConstants.AuthorityConsumersTenant))
1910+
{
1911+
Assert.IsFalse(log.Contains(MsalErrorMessage.ClientCredentialWrongAuthority));
1912+
}
1913+
else
1914+
{
1915+
Assert.IsTrue(log.Contains(MsalErrorMessage.ClientCredentialWrongAuthority));
1916+
}
19181917
}
19191918
}
19201919

19211920
[TestMethod]
19221921
[DataRow(TestConstants.AuthorityCommonTenant)]
19231922
[DataRow(TestConstants.AuthorityOrganizationsTenant)]
1923+
[DataRow(TestConstants.AuthorityConsumersTenant)]
19241924
public async Task AcquireTokenOboAuthorityCheckTestAsync(string tenant)
19251925
{
19261926
using (var httpManager = new MockHttpManager())
@@ -1943,7 +1943,14 @@ public async Task AcquireTokenOboAuthorityCheckTestAsync(string tenant)
19431943
.ExecuteAsync(CancellationToken.None)
19441944
.ConfigureAwait(false);
19451945

1946-
Assert.IsTrue(log.Contains(MsalErrorMessage.OnBehalfOfWrongAuthority));
1946+
if (tenant.Equals(TestConstants.AuthorityConsumersTenant))
1947+
{
1948+
Assert.IsFalse(log.Contains(MsalErrorMessage.OnBehalfOfWrongAuthority));
1949+
}
1950+
else
1951+
{
1952+
Assert.IsTrue(log.Contains(MsalErrorMessage.OnBehalfOfWrongAuthority));
1953+
}
19471954
}
19481955
}
19491956

0 commit comments

Comments
 (0)