Skip to content

Commit 6baa1e9

Browse files
authored
Warn on unsupported managed identity configuration (#27991)
1 parent 72d912c commit 6baa1e9

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

sdk/identity/Azure.Identity/src/CloudShellManagedIdentitySource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static ManagedIdentitySource TryCreate(ManagedIdentityClientOptions optio
4141
private CloudShellManagedIdentitySource(Uri endpoint, ManagedIdentityClientOptions options) : base(options.Pipeline)
4242
{
4343
_endpoint = endpoint;
44-
if (!string.IsNullOrEmpty(options.ClientId) || null == options.ResourceIdentifier)
44+
if (!string.IsNullOrEmpty(options.ClientId) || null != options.ResourceIdentifier)
4545
{
4646
AzureIdentityEventSource.Singleton.UserAssignedManagedIdentityNotSupported("Cloud Shell");
4747
}

sdk/identity/Azure.Identity/tests/ManagedIdentityCredentialTests.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -459,9 +459,8 @@ public async Task VerifyCloudShellMsiRequestMockAsync()
459459

460460
[NonParallelizable]
461461
[Test]
462-
[TestCase(null)]
463-
[TestCase("mock-client-id")]
464-
public async Task VerifyCloudShellMsiRequestWithClientIdMockAsync(string clientId)
462+
[TestCaseSource(nameof(ResourceAndClientIds))]
463+
public async Task VerifyCloudShellMsiRequestWithClientIdMockAsync(string clientId, bool includeResourceIdentifier)
465464
{
466465
using var environment = new TestEnvVar(new() { { "MSI_ENDPOINT", "https://mock.msi.endpoint/" }, { "MSI_SECRET", null }, { "IDENTITY_ENDPOINT", null }, { "IDENTITY_HEADER", null }, { "AZURE_POD_IDENTITY_AUTHORITY_HOST", null } });
467466

@@ -474,7 +473,13 @@ public async Task VerifyCloudShellMsiRequestWithClientIdMockAsync(string clientI
474473
var mockTransport = new MockTransport(response);
475474
var options = new TokenCredentialOptions() { Transport = mockTransport };
476475

477-
ManagedIdentityCredential client = InstrumentClient(new ManagedIdentityCredential(clientId, options));
476+
// ManagedIdentityCredential client = InstrumentClient(new ManagedIdentityCredential(clientId, options));
477+
ManagedIdentityCredential client = (clientId, includeResourceIdentifier) switch
478+
{
479+
(Item1: null, Item2: true) => InstrumentClient(new ManagedIdentityCredential(new ResourceIdentifier(_expectedResourceId), options)),
480+
(Item1: not null, Item2: false) => InstrumentClient(new ManagedIdentityCredential(clientId, options)),
481+
_ => InstrumentClient(new ManagedIdentityCredential(clientId: null, options))
482+
};
478483

479484
AccessToken actualToken = await client.GetTokenAsync(new TokenRequestContext(MockScopes.Default));
480485

@@ -491,7 +496,7 @@ public async Task VerifyCloudShellMsiRequestWithClientIdMockAsync(string clientI
491496
string body = Encoding.UTF8.GetString(content);
492497

493498
Assert.IsTrue(body.Contains($"resource={Uri.EscapeDataString(ScopeUtilities.ScopesToResource(MockScopes.Default))}"));
494-
if (clientId != null)
499+
if (clientId != null || includeResourceIdentifier)
495500
{
496501
Assert.That(messages, Does.Contain(string.Format(AzureIdentityEventSource.UserAssignedManagedIdentityNotSupportedMessage, "Cloud Shell")));
497502
}

0 commit comments

Comments
 (0)