[HttpPost("token")] public async Task<IActionResult> GetAccessToken() { Config.DefaultResponse response = new Config.DefaultResponse(); try { var grantType = "client_credentials"; var clientId = ""; var clientSecret = ""; var resource = ""; var tenantId = ""; var url = $"https://accounts.accesscontrol.windows.net/{tenantId}/tokens/OAuth/2"; using (var httpClient = new HttpClient()) { var requestContent = $"grant_type={grantType}&client_id={clientId}&client_secret={clientSecret}&resource={resource}"; using (var httpContent = new StringContent(requestContent)) { httpContent.Headers.Clear(); httpContent.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); using (var httpResponse = await httpClient.PostAsync(url, httpContent)) { var responseText = await httpResponse.Content.ReadAsStringAsync(); //get as Json string decodedString = System.Text.RegularExpressions.Regex.Unescape(responseText); AccessTokenResponse responseObject = JsonConvert.DeserializeObject<AccessTokenResponse>(decodedString); if (httpResponse.IsSuccessStatusCode) { return Ok(responseObject?.AccessToken); } else { response = new Config.DefaultResponse(500,"Failed to fetch token", responseObject); return BadRequest(response); } } } } } catch (Exception ex) { var exceptionResponse = new AccessTokenResponse { }; return StatusCode(500, exceptionResponse); } }