-
Notifications
You must be signed in to change notification settings - Fork 206
Reginal endpoint support #358
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
9052ef7
acquire_token_for_client() can use regional endpoint
rayluo c2e9899
Expensive IMDS call
rayluo b0f3299
Only call IMDS when input region != None
rayluo 46f7592
An explicit short timeout is needed because the test case is run outs…
rayluo 84fca2d
Assert regional request reaches regional endpoint
rayluo 8422ea3
Tolerate authority validation error if opting in a region
rayluo ab45659
Addresses https://github.com/AzureAD/microsoft-authentication-library…
rayluo 177bf28
Addresses https://github.com/AzureAD/microsoft-authentication-library…
rayluo f7ec1e4
Rename region to azure_region based on https://github.com/AzureAD/mic…
rayluo 6876820
Addresses https://github.com/AzureAD/microsoft-authentication-library…
rayluo 080d995
Addresses https://github.com/AzureAD/microsoft-authentication-library…
rayluo 6053380
Addresses https://github.com/AzureAD/microsoft-authentication-library…
rayluo babe142
Change ATTEMPT_REGION_DISCOVERY to boolean, to facilitate the runtime…
rayluo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
import os | ||
import logging | ||
|
||
logger = logging.getLogger(__name__) | ||
|
||
|
||
def _detect_region(http_client=None): | ||
region = _detect_region_of_azure_function() # It is cheap, so we do it always | ||
if http_client and not region: | ||
rayluo marked this conversation as resolved.
Show resolved
Hide resolved
|
||
return _detect_region_of_azure_vm(http_client) # It could hang for minutes | ||
return region | ||
|
||
|
||
def _detect_region_of_azure_function(): | ||
return os.environ.get("REGION_NAME") | ||
|
||
|
||
def _detect_region_of_azure_vm(http_client): | ||
rayluo marked this conversation as resolved.
Show resolved
Hide resolved
|
||
url = ( | ||
"http://169.254.169.254/metadata/instance" | ||
|
||
# Utilize the "route parameters" feature to obtain region as a string | ||
# https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux#route-parameters | ||
"/compute/location?format=text" | ||
|
||
# Location info is available since API version 2017-04-02 | ||
# https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux#response-1 | ||
"&api-version=2021-01-01" | ||
) | ||
logger.info( | ||
"Connecting to IMDS {}. " | ||
"It may take a while if you are running outside of Azure. " | ||
"You should consider opting in/out region behavior on-demand, " | ||
'by loading a boolean flag "is_deployed_in_azure" ' | ||
'from your per-deployment config and then do ' | ||
'"app = ConfidentialClientApplication(..., ' | ||
'azure_region=is_deployed_in_azure)"'.format(url)) | ||
try: | ||
# https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux#instance-metadata | ||
resp = http_client.get(url, headers={"Metadata": "true"}) | ||
except: | ||
logger.info( | ||
"IMDS {} unavailable. Perhaps not running in Azure VM?".format(url)) | ||
return None | ||
else: | ||
return resp.text.strip() | ||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.