Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,12 @@ internal static string GetCloudUrl(AzureCloudInstance azureCloudInstance)
return "https://login.microsoftonline.de";
case AzureCloudInstance.AzureUsGovernment:
return "https://login.microsoftonline.us";
case AzureCloudInstance.AzureBleu:
return "https://login.sovcloud-identity.fr";
case AzureCloudInstance.AzureDelos:
return "https://login.sovcloud-identity.de";
case AzureCloudInstance.AzureGovSG:
return "https://login.sovcloud-identity.sg";
default:
throw new ArgumentException(nameof(azureCloudInstance));
}
Expand Down
15 changes: 15 additions & 0 deletions src/client/Microsoft.Identity.Client/AppConfig/AzureCloud.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,20 @@ public enum AzureCloudInstance
/// US Government cloud. Maps to https://login.microsoftonline.us
/// </summary>
AzureUsGovernment,

/// <summary>
/// Azure Bleu sovereign cloud (France). Maps to https://login.sovcloud-identity.fr
/// </summary>
AzureBleu,

/// <summary>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The three new enum values are public API surface. All six per-TFM PublicAPI.Unshipped.txt files need to be updated, which is why 2/7 CI checks are currently failing.

Add the following lines to each src/client/Microsoft.Identity.Client/PublicApi/<tfm>/PublicAPI.Unshipped.txt:

Microsoft.Identity.Client.AzureCloudInstance.AzureBleu = 5 -> Microsoft.Identity.Client.AzureCloudInstance
Microsoft.Identity.Client.AzureCloudInstance.AzureDelos = 6 -> Microsoft.Identity.Client.AzureCloudInstance
Microsoft.Identity.Client.AzureCloudInstance.AzureGovSG = 7 -> Microsoft.Identity.Client.AzureCloudInstance

TFMs to update: net462, net472, net8.0, net8.0-android, net8.0-ios, netstandard2.0.

/// Azure Delos sovereign cloud (Germany). Maps to https://login.sovcloud-identity.de
/// </summary>
AzureDelos,

/// <summary>
/// Azure GovSG sovereign cloud (Singapore). Maps to https://login.sovcloud-identity.sg
/// </summary>
AzureGovSG,
Comment on lines +38 to +48
Copy link

Copilot AI Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These new enum members are a public API surface change. The repo uses PublicApiAnalyzers with per-TFM API baselines; please add the new AzureCloudInstance members (AzureBleu=5, AzureDelos=6, AzureGovSG=7) to the corresponding src/client/Microsoft.Identity.Client/PublicApi/<tfm>/PublicAPI.Unshipped.txt files (or move to Shipped if appropriate), otherwise the public API analyzer will fail the build.

Suggested change
AzureBleu,
/// <summary>
/// Azure Delos sovereign cloud (Germany). Maps to https://login.sovcloud-identity.de
/// </summary>
AzureDelos,
/// <summary>
/// Azure GovSG sovereign cloud (Singapore). Maps to https://login.sovcloud-identity.sg
/// </summary>
AzureGovSG,
AzureBleu = 5,
/// <summary>
/// Azure Delos sovereign cloud (Germany). Maps to https://login.sovcloud-identity.de
/// </summary>
AzureDelos = 6,
/// <summary>
/// Azure GovSG sovereign cloud (Singapore). Maps to https://login.sovcloud-identity.sg
/// </summary>
AzureGovSG = 7,

Copilot uses AI. Check for mistakes.
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,15 @@ public void EnsureCreatePublicClientWithAzureAdMyOrgAndValidTenantSucceeds()
[DataRow(AzureCloudInstance.AzureChina, AadAuthorityAudience.AzureAdMultipleOrgs, "https://login.chinacloudapi.cn/organizations/", DisplayName = "AzureChina + AzureAdMultipleOrgs")]
[DataRow(AzureCloudInstance.AzureChina, AadAuthorityAudience.AzureAdAndPersonalMicrosoftAccount, "https://login.chinacloudapi.cn/common/", DisplayName = "AzureChina + AzureAdAndPersonalMicrosoftAccount")]
[DataRow(AzureCloudInstance.AzureChina, AadAuthorityAudience.PersonalMicrosoftAccount, "https://login.chinacloudapi.cn/consumers/", DisplayName = "AzureChina + PersonalMicrosoftAccount")]
[DataRow(AzureCloudInstance.AzureBleu, AadAuthorityAudience.AzureAdMultipleOrgs, "https://login.sovcloud-identity.fr/organizations/", DisplayName = "AzureBleu + AzureAdMultipleOrgs")]
[DataRow(AzureCloudInstance.AzureBleu, AadAuthorityAudience.AzureAdAndPersonalMicrosoftAccount, "https://login.sovcloud-identity.fr/common/", DisplayName = "AzureBleu + AzureAdAndPersonalMicrosoftAccount")]
[DataRow(AzureCloudInstance.AzureBleu, AadAuthorityAudience.PersonalMicrosoftAccount, "https://login.sovcloud-identity.fr/consumers/", DisplayName = "AzureBleu + PersonalMicrosoftAccount")]
[DataRow(AzureCloudInstance.AzureDelos, AadAuthorityAudience.AzureAdMultipleOrgs, "https://login.sovcloud-identity.de/organizations/", DisplayName = "AzureDelos + AzureAdMultipleOrgs")]
[DataRow(AzureCloudInstance.AzureDelos, AadAuthorityAudience.AzureAdAndPersonalMicrosoftAccount, "https://login.sovcloud-identity.de/common/", DisplayName = "AzureDelos + AzureAdAndPersonalMicrosoftAccount")]
[DataRow(AzureCloudInstance.AzureDelos, AadAuthorityAudience.PersonalMicrosoftAccount, "https://login.sovcloud-identity.de/consumers/", DisplayName = "AzureDelos + PersonalMicrosoftAccount")]
[DataRow(AzureCloudInstance.AzureGovSG, AadAuthorityAudience.AzureAdMultipleOrgs, "https://login.sovcloud-identity.sg/organizations/", DisplayName = "AzureGovSG + AzureAdMultipleOrgs")]
[DataRow(AzureCloudInstance.AzureGovSG, AadAuthorityAudience.AzureAdAndPersonalMicrosoftAccount, "https://login.sovcloud-identity.sg/common/", DisplayName = "AzureGovSG + AzureAdAndPersonalMicrosoftAccount")]
[DataRow(AzureCloudInstance.AzureGovSG, AadAuthorityAudience.PersonalMicrosoftAccount, "https://login.sovcloud-identity.sg/consumers/", DisplayName = "AzureGovSG + PersonalMicrosoftAccount")]
public void TestAuthorityPermutations(
AzureCloudInstance cloudInstance,
AadAuthorityAudience audience,
Expand Down
Loading