public async Task ProbeShouldFetchTokenWithClientIdFromManagedIdentityServiceAsync() { var handler = new MockManagedIdentityHttpMessageHandler(); handler.Responders.Add(new Responder { Matcher = (req, state) => { var tokenEndpoint = Constants.ManagedIdentityTokenEndpoint; var apiVersion = Constants.ManagedIdentityVMApiVersion; return(req.RequestUri.ToString() == tokenEndpoint + "?resource=https://management.azure.com/&client_id=foo&api-version=" + apiVersion); }, MockResponse = (req, state) => { var resp = new HttpResponseMessage(HttpStatusCode.OK) { Content = new MockJsonContent(AzureManagementVMManagedIdentityJson) }; return(resp); } }); var client = new HttpClient(handler); var config = FakeConfiguration(new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>(Constants.AzureClientIdEnvName, "foo"), }); var provider = new ManagedIdentityTokenProvider(httpClient: client, config: config); var token = await provider.GetTokenAsync(new List <string> { "https://management.azure.com/.default" }).ConfigureAwait(false); Assert.IsNotNull(token); var seconds = double.Parse(ExpiresOn, CultureInfo.InvariantCulture); var startOfUnixTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); Assert.AreEqual(token.ExpiresOn, startOfUnixTime.AddSeconds(seconds)); Assert.AreEqual(AccessToken, token.AccessToken); }
public async Task ProbeShouldFetchTokenFromAppServiceManagedIdentityServiceAsync() { var handler = new MockManagedIdentityHttpMessageHandler(); handler.Responders.Add(new Responder { Matcher = (req, state) => { var apiVersion = Constants.ManagedIdentityAppServiceApiVersion; return(req.RequestUri.ToString() == "http://127.0.0.1/foo?resource=https://management.azure.com/&api-version=" + apiVersion && req.Headers.GetValues("Secret").FirstOrDefault() == "secret"); }, MockResponse = (req, state) => { var resp = new HttpResponseMessage(HttpStatusCode.OK) { Content = new MockJsonContent(AzureAppServiceManagedIdentityJson) }; return(resp); } }); var client = new HttpClient(handler); var config = FakeConfiguration(new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>(Constants.ManagedIdentityEndpointEnvName, "http://127.0.0.1/foo"), new KeyValuePair <string, string>(Constants.ManagedIdentitySecretEnvName, "secret") }); var provider = new ManagedIdentityTokenProvider(httpClient: client, config: config); var token = await provider.GetTokenAsync(new List <string> { "https://management.azure.com/.default" }).ConfigureAwait(false); Assert.IsNotNull(token); Assert.AreEqual(DateTimeOffset.Parse("4/10/19 6:27:14 AM +00:00", CultureInfo.InvariantCulture), token.ExpiresOn); Assert.AreEqual(AccessToken, token.AccessToken); }