Skip to content

Commit f94428c

Browse files
authored
Rename AZURE_POD_IDENTITY_TOKEN_URL -> AZURE_POD_IDENTITY_AUTHORITY_HOST (#19867)
1 parent 85cf69c commit f94428c

File tree

8 files changed

+38
-28
lines changed

8 files changed

+38
-28
lines changed

sdk/identity/azure-identity/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
### Features Added
66

77
### Breaking Changes
8+
> These changes do not impact the API of stable versions such as 1.6.0.
9+
> Only code written against a beta version such as 1.7.0b1 may be affected.
10+
- Renamed `AZURE_POD_IDENTITY_TOKEN_URL` to `AZURE_POD_IDENTITY_AUTHORITY_HOST`.
11+
The value should now be a host, for example "http://169.254.169.254" (the
12+
default).
813

914
### Bugs Fixed
1015
- Fixed import of `azure.identity.aio.AzureApplicationCredential`

sdk/identity/azure-identity/azure/identity/_constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class EnvironmentVariables:
3535
AZURE_PASSWORD = "AZURE_PASSWORD"
3636
USERNAME_PASSWORD_VARS = (AZURE_CLIENT_ID, AZURE_USERNAME, AZURE_PASSWORD)
3737

38-
AZURE_POD_IDENTITY_TOKEN_URL = "AZURE_POD_IDENTITY_TOKEN_URL"
38+
AZURE_POD_IDENTITY_AUTHORITY_HOST = "AZURE_POD_IDENTITY_AUTHORITY_HOST"
3939
IDENTITY_ENDPOINT = "IDENTITY_ENDPOINT"
4040
IDENTITY_HEADER = "IDENTITY_HEADER"
4141
IDENTITY_SERVER_THUMBPRINT = "IDENTITY_SERVER_THUMBPRINT"

sdk/identity/azure-identity/azure/identity/_credentials/imds.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
from typing import Any, Optional
2121
from azure.core.credentials import AccessToken
2222

23-
IMDS_URL = "http://169.254.169.254/metadata/identity/oauth2/token"
23+
IMDS_AUTHORITY = "http://169.254.169.254"
24+
IMDS_TOKEN_PATH = "/metadata/identity/oauth2/token"
2425

2526
PIPELINE_SETTINGS = {
2627
"connection_timeout": 2,
@@ -33,7 +34,11 @@
3334

3435

3536
def get_request(scope, identity_config):
36-
request = HttpRequest("GET", os.environ.get(EnvironmentVariables.AZURE_POD_IDENTITY_TOKEN_URL, IMDS_URL))
37+
url = (
38+
os.environ.get(EnvironmentVariables.AZURE_POD_IDENTITY_AUTHORITY_HOST, IMDS_AUTHORITY).strip("/")
39+
+ IMDS_TOKEN_PATH
40+
)
41+
request = HttpRequest("GET", url)
3742
request.format_parameters(dict({"api-version": "2018-02-01", "resource": scope}, **identity_config))
3843
return request
3944

@@ -44,7 +49,7 @@ def __init__(self, **kwargs):
4449
super(ImdsCredential, self).__init__()
4550

4651
self._client = ManagedIdentityClient(get_request, **dict(PIPELINE_SETTINGS, **kwargs))
47-
if EnvironmentVariables.AZURE_POD_IDENTITY_TOKEN_URL in os.environ:
52+
if EnvironmentVariables.AZURE_POD_IDENTITY_AUTHORITY_HOST in os.environ:
4853
self._endpoint_available = True # type: Optional[bool]
4954
else:
5055
self._endpoint_available = None

sdk/identity/azure-identity/azure/identity/aio/_credentials/imds.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def __init__(self, **kwargs: "Any") -> None:
2424
super().__init__()
2525

2626
self._client = AsyncManagedIdentityClient(get_request, **PIPELINE_SETTINGS, **kwargs)
27-
if EnvironmentVariables.AZURE_POD_IDENTITY_TOKEN_URL in os.environ:
27+
if EnvironmentVariables.AZURE_POD_IDENTITY_AUTHORITY_HOST in os.environ:
2828
self._endpoint_available = True # type: Optional[bool]
2929
else:
3030
self._endpoint_available = None

sdk/identity/azure-identity/tests/test_imds_credential.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
from azure.identity import CredentialUnavailableError
1212
from azure.identity._constants import EnvironmentVariables
13-
from azure.identity._credentials.imds import ImdsCredential, IMDS_URL, PIPELINE_SETTINGS
13+
from azure.identity._credentials.imds import IMDS_TOKEN_PATH, ImdsCredential, IMDS_AUTHORITY, PIPELINE_SETTINGS
1414
from azure.identity._internal.user_agent import USER_AGENT
1515
import pytest
1616

@@ -147,9 +147,9 @@ def test_identity_config():
147147
scope = "scope"
148148
transport = validating_transport(
149149
requests=[
150-
Request(base_url=IMDS_URL),
150+
Request(base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH),
151151
Request(
152-
base_url=IMDS_URL,
152+
base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH,
153153
method="GET",
154154
required_headers={"Metadata": "true", "User-Agent": USER_AGENT},
155155
required_params={"api-version": "2018-02-01", "resource": scope, param_name: param_value},
@@ -177,16 +177,16 @@ def test_identity_config():
177177
assert token == expected_token
178178

179179

180-
def test_imds_url_override():
181-
url = "https://localhost/token"
180+
def test_imds_authority_override():
181+
authority = "https://localhost"
182182
expected_token = "***"
183183
scope = "scope"
184184
now = int(time.time())
185185

186186
transport = validating_transport(
187187
requests=[
188188
Request(
189-
base_url=url,
189+
base_url=authority + IMDS_TOKEN_PATH,
190190
method="GET",
191191
required_headers={"Metadata": "true", "User-Agent": USER_AGENT},
192192
required_params={"api-version": "2018-02-01", "resource": scope},
@@ -207,7 +207,7 @@ def test_imds_url_override():
207207
],
208208
)
209209

210-
with mock.patch.dict("os.environ", {EnvironmentVariables.AZURE_POD_IDENTITY_TOKEN_URL: url}, clear=True):
210+
with mock.patch.dict("os.environ", {EnvironmentVariables.AZURE_POD_IDENTITY_AUTHORITY_HOST: authority}, clear=True):
211211
credential = ImdsCredential(transport=transport)
212212
token = credential.get_token(scope)
213213

sdk/identity/azure-identity/tests/test_imds_credential_async.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from azure.core.exceptions import ClientAuthenticationError
1111
from azure.identity import CredentialUnavailableError
1212
from azure.identity._constants import EnvironmentVariables
13-
from azure.identity._credentials.imds import IMDS_URL
13+
from azure.identity._credentials.imds import IMDS_AUTHORITY, IMDS_TOKEN_PATH
1414
from azure.identity._internal.user_agent import USER_AGENT
1515
from azure.identity.aio._credentials.imds import ImdsCredential, PIPELINE_SETTINGS
1616
import pytest
@@ -182,9 +182,9 @@ async def test_identity_config():
182182

183183
transport = async_validating_transport(
184184
requests=[
185-
Request(base_url=IMDS_URL),
185+
Request(base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH),
186186
Request(
187-
base_url=IMDS_URL,
187+
base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH,
188188
method="GET",
189189
required_headers={"Metadata": "true", "User-Agent": USER_AGENT},
190190
required_params={"api-version": "2018-02-01", "resource": scope, param_name: param_value},
@@ -212,16 +212,16 @@ async def test_identity_config():
212212
assert token == expected_token
213213

214214

215-
async def test_imds_url_override():
216-
url = "https://localhost/token"
215+
async def test_imds_authority_override():
216+
authority = "https://localhost"
217217
expected_token = "***"
218218
scope = "scope"
219219
now = int(time.time())
220220

221221
transport = async_validating_transport(
222222
requests=[
223223
Request(
224-
base_url=url,
224+
base_url=authority + IMDS_TOKEN_PATH,
225225
method="GET",
226226
required_headers={"Metadata": "true", "User-Agent": USER_AGENT},
227227
required_params={"api-version": "2018-02-01", "resource": scope},
@@ -242,7 +242,7 @@ async def test_imds_url_override():
242242
],
243243
)
244244

245-
with mock.patch.dict("os.environ", {EnvironmentVariables.AZURE_POD_IDENTITY_TOKEN_URL: url}, clear=True):
245+
with mock.patch.dict("os.environ", {EnvironmentVariables.AZURE_POD_IDENTITY_AUTHORITY_HOST: authority}, clear=True):
246246
credential = ImdsCredential(transport=transport)
247247
token = await credential.get_token(scope)
248248

sdk/identity/azure-identity/tests/test_managed_identity.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from azure.core.pipeline.transport import HttpRequest
1616
from azure.identity import ManagedIdentityCredential
1717
from azure.identity._constants import EnvironmentVariables
18-
from azure.identity._credentials.imds import IMDS_URL
18+
from azure.identity._credentials.imds import IMDS_AUTHORITY, IMDS_TOKEN_PATH
1919
from azure.identity._internal.managed_identity_client import ManagedIdentityClient
2020
from azure.identity._internal.user_agent import USER_AGENT
2121
import pytest
@@ -438,9 +438,9 @@ def test_imds():
438438
scope = "scope"
439439
transport = validating_transport(
440440
requests=[
441-
Request(base_url=IMDS_URL), # first request should be availability probe => match only the URL
441+
Request(base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH),
442442
Request(
443-
base_url=IMDS_URL,
443+
base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH,
444444
method="GET",
445445
required_headers={"Metadata": "true", "User-Agent": USER_AGENT},
446446
required_params={"api-version": "2018-02-01", "resource": scope},
@@ -532,7 +532,7 @@ def test_imds_user_assigned_identity():
532532
access_token = "****"
533533
expires_on = 42
534534
expected_token = AccessToken(access_token, expires_on)
535-
endpoint = IMDS_URL
535+
endpoint = IMDS_AUTHORITY + IMDS_TOKEN_PATH
536536
scope = "scope"
537537
client_id = "some-guid"
538538
transport = validating_transport(

sdk/identity/azure-identity/tests/test_managed_identity_async.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from azure.core.pipeline.transport import HttpRequest
1212
from azure.identity.aio import ManagedIdentityCredential
1313
from azure.identity.aio._internal.managed_identity_client import AsyncManagedIdentityClient
14-
from azure.identity._credentials.imds import IMDS_URL
14+
from azure.identity._credentials.imds import IMDS_AUTHORITY, IMDS_TOKEN_PATH
1515
from azure.identity._constants import EnvironmentVariables
1616
from azure.identity._internal.user_agent import USER_AGENT
1717

@@ -499,9 +499,9 @@ async def test_imds():
499499
scope = "scope"
500500
transport = async_validating_transport(
501501
requests=[
502-
Request(base_url=IMDS_URL), # first request should be availability probe => match only the URL
502+
Request(base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH),
503503
Request(
504-
base_url=IMDS_URL,
504+
base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH,
505505
method="GET",
506506
required_headers={"Metadata": "true", "User-Agent": USER_AGENT},
507507
required_params={"api-version": "2018-02-01", "resource": scope},
@@ -539,9 +539,9 @@ async def test_imds_user_assigned_identity():
539539
client_id = "some-guid"
540540
transport = async_validating_transport(
541541
requests=[
542-
Request(base_url=IMDS_URL), # first request should be availability probe => match only the URL
542+
Request(base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH),
543543
Request(
544-
base_url=IMDS_URL,
544+
base_url=IMDS_AUTHORITY + IMDS_TOKEN_PATH,
545545
method="GET",
546546
required_headers={"Metadata": "true", "User-Agent": USER_AGENT},
547547
required_params={"api-version": "2018-02-01", "client_id": client_id, "resource": scope},

0 commit comments

Comments
 (0)