1212using Microsoft . Identity . Client . ManagedIdentity ;
1313using Microsoft . Identity . Client . ManagedIdentity . KeyProviders ;
1414using Microsoft . Identity . Client . ManagedIdentity . V2 ;
15+ using Microsoft . Identity . Client . MtlsPop ;
1516using Microsoft . Identity . Client . PlatformsCommon . Shared ;
1617using Microsoft . Identity . Test . Common . Core . Mocks ;
1718using Microsoft . Identity . Test . Unit . Helpers ;
@@ -34,7 +35,7 @@ public class ImdsV2Tests : TestBase
3435 enablePiiLogging : false
3536 ) ;
3637 public const string Bearer = "Bearer" ;
37- public const string MTLSPoP = "MTLSPoP " ;
38+ public const string MTLSPoP = "mtls_pop " ;
3839
3940 private void AddMocksToGetEntraToken (
4041 MockHttpManager httpManager ,
@@ -256,26 +257,28 @@ public async Task mTLSPopTokenHappyPath(
256257 {
257258 var managedIdentityApp = await CreateManagedIdentityAsync ( httpManager , userAssignedIdentityId , userAssignedId ) . ConfigureAwait ( false ) ;
258259
259- AddMocksToGetEntraToken ( httpManager , userAssignedIdentityId , userAssignedId /* , mTLSPop: true*/ ) ; // TODO: implement mTLS Pop
260+ AddMocksToGetEntraToken ( httpManager , userAssignedIdentityId , userAssignedId , mTLSPop : true ) ;
260261
261262 var result = await managedIdentityApp . AcquireTokenForManagedIdentity ( ManagedIdentityTests . Resource )
262- // .WithMtlsProofOfPossession() // TODO: implement mTLS Pop
263+ . WithMtlsProofOfPossession ( )
263264 . ExecuteAsync ( ) . ConfigureAwait ( false ) ;
264265
265266 Assert . IsNotNull ( result ) ;
266267 Assert . IsNotNull ( result . AccessToken ) ;
267- // Assert.AreEqual(result.TokenType, MTLSPoP); // TODO: implement mTLS Pop
268- // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop
268+ Assert . AreEqual ( result . TokenType , MTLSPoP ) ;
269+ // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop BindingCertificate
269270 Assert . AreEqual ( TokenSource . IdentityProvider , result . AuthenticationResultMetadata . TokenSource ) ;
270271
271- result = await managedIdentityApp . AcquireTokenForManagedIdentity ( ManagedIdentityTests . Resource )
272+ // TODO: broken until Gladwin's PR is merged in
273+ /*result = await managedIdentityApp.AcquireTokenForManagedIdentity(ManagedIdentityTests.Resource)
274+ .WithMtlsProofOfPossession()
272275 .ExecuteAsync().ConfigureAwait(false);
273276
274277 Assert.IsNotNull(result);
275278 Assert.IsNotNull(result.AccessToken);
276- // Assert.AreEqual(result.TokenType, MTLSPoP); // TODO: implement mTLS Pop
277- // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop
278- Assert . AreEqual ( TokenSource . Cache , result . AuthenticationResultMetadata . TokenSource ) ;
279+ Assert.AreEqual(result.TokenType, MTLSPoP);
280+ // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop BindingCertificate
281+ Assert.AreEqual(TokenSource.Cache, result.AuthenticationResultMetadata.TokenSource);*/
279282 }
280283 }
281284
@@ -293,53 +296,55 @@ public async Task mTLSPopTokenTokenIsPerIdentity(
293296 #region Identity 1
294297 var managedIdentityApp = await CreateManagedIdentityAsync ( httpManager , userAssignedIdentityId , userAssignedId ) . ConfigureAwait ( false ) ;
295298
296- AddMocksToGetEntraToken ( httpManager , userAssignedIdentityId , userAssignedId /* , mTLSPop: true*/ ) ; // TODO: implement mTLS Pop
299+ AddMocksToGetEntraToken ( httpManager , userAssignedIdentityId , userAssignedId , mTLSPop : true ) ;
297300
298301 var result = await managedIdentityApp . AcquireTokenForManagedIdentity ( ManagedIdentityTests . Resource )
299- // .WithMtlsProofOfPossession() // TODO: implement mTLS Pop
302+ . WithMtlsProofOfPossession ( )
300303 . ExecuteAsync ( ) . ConfigureAwait ( false ) ;
301304
302305 Assert . IsNotNull ( result ) ;
303306 Assert . IsNotNull ( result . AccessToken ) ;
304- // Assert.AreEqual(result.TokenType, MTLSPoP); // TODO: implement mTLS Pop
305- // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop
307+ Assert . AreEqual ( result . TokenType , MTLSPoP ) ;
308+ // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop BindingCertificate
306309 Assert . AreEqual ( TokenSource . IdentityProvider , result . AuthenticationResultMetadata . TokenSource ) ;
307310
308- result = await managedIdentityApp . AcquireTokenForManagedIdentity ( ManagedIdentityTests . Resource )
309- // .WithMtlsProofOfPossession() // TODO: implement mTLS Pop
311+ // TODO: broken until Gladwin's PR is merged in
312+ /*result = await managedIdentityApp.AcquireTokenForManagedIdentity(ManagedIdentityTests.Resource)
313+ .WithMtlsProofOfPossession()
310314 .ExecuteAsync().ConfigureAwait(false);
311315
312316 Assert.IsNotNull(result);
313317 Assert.IsNotNull(result.AccessToken);
314- // Assert.AreEqual(result.TokenType, MTLSPoP); // TODO: implement mTLS Pop
315- // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop
316- Assert . AreEqual ( TokenSource . Cache , result . AuthenticationResultMetadata . TokenSource ) ;
318+ Assert.AreEqual(result.TokenType, MTLSPoP);
319+ // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop BindingCertificate
320+ Assert.AreEqual(TokenSource.Cache, result.AuthenticationResultMetadata.TokenSource);*/
317321 #endregion Identity 1
318322
319323 #region Identity 2
320324 var managedIdentityApp2 = await CreateManagedIdentityAsync ( httpManager , userAssignedIdentityId , userAssignedId , addProbeMock : false , addSourceCheck : false ) . ConfigureAwait ( false ) ; // source is already cached
321325
322- AddMocksToGetEntraToken ( httpManager , userAssignedIdentityId , userAssignedId /* , mTLSPop: true*/ ) ; // TODO: implement mTLS Pop
326+ AddMocksToGetEntraToken ( httpManager , userAssignedIdentityId , userAssignedId , mTLSPop : true ) ;
323327
324328 var result2 = await managedIdentityApp2 . AcquireTokenForManagedIdentity ( ManagedIdentityTests . Resource )
325- // .WithMtlsProofOfPossession() // TODO: implement mTLS Pop
329+ . WithMtlsProofOfPossession ( )
326330 . ExecuteAsync ( ) . ConfigureAwait ( false ) ;
327331
328332 Assert . IsNotNull ( result2 ) ;
329333 Assert . IsNotNull ( result2 . AccessToken ) ;
330- // Assert.AreEqual(result.TokenType, MTLSPoP); // TODO: implement mTLS Pop
331- // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop
334+ Assert . AreEqual ( result . TokenType , MTLSPoP ) ;
335+ // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop BindingCertificate
332336 Assert . AreEqual ( TokenSource . IdentityProvider , result2 . AuthenticationResultMetadata . TokenSource ) ;
333337
334- result2 = await managedIdentityApp2 . AcquireTokenForManagedIdentity ( ManagedIdentityTests . Resource )
335- // .WithMtlsProofOfPossession() // TODO: implement mTLS Pop
338+ // TODO: broken until Gladwin's PR is merged in
339+ /*result2 = await managedIdentityApp2.AcquireTokenForManagedIdentity(ManagedIdentityTests.Resource)
340+ .WithMtlsProofOfPossession()
336341 .ExecuteAsync().ConfigureAwait(false);
337342
338343 Assert.IsNotNull(result2);
339344 Assert.IsNotNull(result2.AccessToken);
340- // Assert.AreEqual(result.TokenType, MTLSPoP); // TODO: implement mTLS Pop
341- // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop
342- Assert . AreEqual ( TokenSource . Cache , result2 . AuthenticationResultMetadata . TokenSource ) ;
345+ Assert.AreEqual(result.TokenType, MTLSPoP);
346+ // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop BindingCertificate
347+ Assert.AreEqual(TokenSource.Cache, result2.AuthenticationResultMetadata.TokenSource);*/
343348 #endregion Identity 2
344349
345350 // TODO: Assert.AreEqual(CertificateCache.Count, 2);
@@ -359,30 +364,30 @@ public async Task mTLSPopTokenIsReAcquiredWhenCertificatIsExpired(
359364 {
360365 var managedIdentityApp = await CreateManagedIdentityAsync ( httpManager , userAssignedIdentityId , userAssignedId ) . ConfigureAwait ( false ) ;
361366
362- AddMocksToGetEntraToken ( httpManager , userAssignedIdentityId , userAssignedId , TestConstants . ExpiredRawCertificate /* , mTLSPop: true*/ ) ; // TODO: implement mTLS Pop
367+ AddMocksToGetEntraToken ( httpManager , userAssignedIdentityId , userAssignedId , TestConstants . ExpiredRawCertificate , mTLSPop : true ) ;
363368
364369 var result = await managedIdentityApp . AcquireTokenForManagedIdentity ( ManagedIdentityTests . Resource )
365- // .WithMtlsProofOfPossession() // TODO: implement mTLS Pop
370+ . WithMtlsProofOfPossession ( )
366371 . ExecuteAsync ( ) . ConfigureAwait ( false ) ;
367372
368373 Assert . IsNotNull ( result ) ;
369374 Assert . IsNotNull ( result . AccessToken ) ;
370- // Assert.AreEqual(result.TokenType, MTLSPoP); // TODO: implement mTLS Pop
371- // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop
375+ Assert . AreEqual ( result . TokenType , MTLSPoP ) ;
376+ // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop BindingCertificate
372377 Assert . AreEqual ( TokenSource . IdentityProvider , result . AuthenticationResultMetadata . TokenSource ) ;
373378
374379 // TODO: Add functionality to check cert expiration in the cache
375380 /**
376- AddMocksToGetEntraToken(httpManager, userAssignedIdentityId, userAssignedId, // mTLSPop: true); // TODO: implement mTLS Pop
381+ AddMocksToGetEntraToken(httpManager, userAssignedIdentityId, userAssignedId, mTLSPop: true);
377382
378383 result = await managedIdentityApp.AcquireTokenForManagedIdentity(ManagedIdentityTests.Resource)
379- // .WithMtlsProofOfPossession() // TODO: implement mTLS Pop
384+ .WithMtlsProofOfPossession()
380385 .ExecuteAsync().ConfigureAwait(false);
381386
382387 Assert.IsNotNull(result);
383388 Assert.IsNotNull(result.AccessToken);
384- // Assert.AreEqual(result.TokenType, MTLSPoP); // TODO: implement mTLS Pop
385- // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop
389+ Assert.AreEqual(result.TokenType, MTLSPoP);
390+ // Assert.IsNotNull(result.BindingCertificate); // TODO: implement mTLS Pop BindingCertificate
386391 Assert.AreEqual(TokenSource.IdentityProvider, result.AuthenticationResultMetadata.TokenSource);
387392
388393 Assert.AreEqual(CertificateCache.Count, 1); // expired cert was removed from the cache
@@ -484,7 +489,7 @@ public void TestCsrGeneration_OnlyVmId()
484489 {
485490 VmId = TestConstants . VmId
486491 } ;
487-
492+
488493 var rsa = InMemoryManagedIdentityKeyProvider . CreateRsaKeyPair ( ) ;
489494 var ( csr , _) = Csr . Generate ( rsa , TestConstants . ClientId , TestConstants . TenantId , cuid ) ;
490495 CsrValidator . ValidateCsrContent ( csr , TestConstants . ClientId , TestConstants . TenantId , cuid ) ;
0 commit comments