[Identity][Core] Add support for the Bleu national partner cloud (France)#48069
[Identity][Core] Add support for the Bleu national partner cloud (France)#48069devi0042JD wants to merge 4 commits into
Conversation
|
Azure Pipelines: Successfully started running 1 pipeline(s). 8 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
|
Thank you for your contribution @devi0042JD! We will review the pull request and get back to you soon. |
d9bde6f to
32a5ae1
Compare
|
@microsoft-github-policy-service agree |
|
Dear @yonzhan, Could you please review this PR ? I work as a Cloud Architect at Bleu, the French national partner cloud. I can confirm the authority host, ARM scope, and DNS suffixes used in this PR are correct and match Bleu environment. Today, users onboarding to Bleu with the Azure SDK for Python have to configure the authority manually. Shipping Bleu as a well-known authority in |
|
Azure Pipelines: Successfully started running 1 pipeline(s). 8 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
Pull request overview
Adds Bleu national partner cloud support to azure-identity.
Changes:
- Adds the Bleu authority host and default ARM scope.
- Documents the new support.
- Adds authority validation and spell-check configuration.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
.vscode/cspell.json |
Allows the sovcloud term. |
sdk/identity/azure-identity/CHANGELOG.md |
Documents Bleu support. |
azure/identity/_constants.py |
Adds AZURE_BLEU. |
azure/identity/_internal/interactive.py |
Adds the Bleu default ARM scope. |
tests/test_authority.py |
Verifies the new authority constant. |
| _LOGGER = logging.getLogger(__name__) | ||
|
|
||
| _DEFAULT_AUTHENTICATE_SCOPES = { | ||
| "https://" + KnownAuthorities.AZURE_BLEU: ("https://management.sovcloud-api.fr//.default",), |
… cloud (France) Adds the BleuCloud (login.sovcloud-identity.fr) authority host constant and its default ARM scope for interactive credentials' authenticate() method.
14d95b6 to
cefe7a8
Compare
…artner cloud (France) azure-core: adds the AZURE_BLEUCLOUD member to the AzureClouds enum so the Bleu cloud can be selected via AZURE_SDK_CLOUD_CONF or settings.azure_cloud. azure-mgmt-core: get_arm_endpoints now returns the Bleu ARM endpoint (management.sovcloud-api.fr) and credential scopes, and the minimum azure-core requirement is raised to 1.42.0 accordingly.
|
Note on the two failing checks — both are unrelated to this PR: 1. The failing tests are the 14 recorded tests of The failure is a URI mismatch in playback: The double slash comes from that package's test fixtures, which set This looks like a latent issue in those fixtures, likely surfaced by the test-proxy bump to 2. Fails in "Prepare Environment" while cloning Happy to help with a fix for the textanalytics fixtures in a separate PR if useful. |
Description
Adds official support for the Bleu national partner cloud (France) across
azure-identity,azure-core, andazure-mgmt-core.azure-identity
AzureAuthorityHosts.AZURE_BLEUCLOUD = "login.sovcloud-identity.fr"in_constants.py(also available through theKnownAuthoritiesalias).https://management.sovcloud-api.fr//.default) to_DEFAULT_AUTHENTICATE_SCOPESso interactive credentials'authenticate()method works against Bleu without explicit scopes.1.26.0b3 (Unreleased)/ Features Added.test_well_known_authority_hostsintests/test_authority.py.azure-core (1.42.0)
AzureClouds.AZURE_BLEUCLOUDenum member in_azure_clouds.py. It is automatically accepted by theAZURE_SDK_CLOUD_CONFenvironment variable andsettings.current.azure_cloud(conversion iterates over the enum).test_convert_azure_cloudto cover conversion of all enum members.azure-mgmt-core (1.7.0)
get_arm_endpointsnow supportsAzureClouds.AZURE_BLEUCLOUD, returning:resource_manager:https://management.sovcloud-api.fr/credential_scopes:["https://management.sovcloud-api.fr/.default"]azure-corerequirement to>=1.42.0: the newAzureClouds.AZURE_BLEUCLOUDattribute is evaluated on everyget_arm_endpointscall, so running against an older azure-core would raiseAttributeErrorfor all clouds.test_arm_endpoints.With these changes, authenticating against Bleu works with
DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_BLEUCLOUD), andexport AZURE_SDK_CLOUD_CONF=AZURE_BLEUCLOUD(or passingcloud_setting=AzureClouds.AZURE_BLEUCLOUDto a generated mgmt client) is enough for recentazure-mgmt-*clients to resolve their base URL and credential scopes for Bleu.Context
Bleu is a Microsoft national partner cloud operated in France by a joint venture between Orange and Capgemini, designed to meet the French ANSSI SecNumCloud requirements. Its Entra authority host (
login.sovcloud-identity.fr) is already a well-known authority host in MSAL Python (AZURE_GOV_FR, since msal 1.35.1).Testing
pytest sdk/identity/azure-identity/tests/test_authority.py— 3 passedpytest sdk/identity/azure-identity/tests/test_browser_credential.py tests/test_device_code_credential.py tests/test_interactive_credential.py tests/test_username_password_credential.py— 94 passed, 2 skippedpytest sdk/core/azure-core/tests/test_settings.py— 61 passedpytest sdk/core/azure-mgmt-core/tests/test_arm_endpoints.py— 1 passedAZURE_SDK_CLOUD_CONF=AZURE_BLEUCLOUD→settings.current.azure_cloudresolves toAzureClouds.AZURE_BLEUCLOUDandget_arm_endpointsreturns the Bleu endpointsblack --checkclean on all modified files