public async Task SetAccessToken() { using (var cert = Helper.GetX509Certificate2(CertTlsName, CertsPath, CertsPass)) { var clientHandler = new HttpClientHandler(); clientHandler.ClientCertificates.Add(cert); clientHandler.ClientCertificateOptions = ClientCertificateOption.Manual; clientHandler.SslProtocols = SslProtocols.Tls12; var dataToSend = new Dictionary <string, string> { { "grant_type", "client_credentials" } }; using (var content = new FormUrlEncodedContent(dataToSend)) using (var client = new HttpClient(clientHandler)) { bool isSuccess = false; while (!isSuccess) { var request = new HttpRequestMessage(HttpMethod.Post, $"{HttpHost}/oauth2/token"); request.Content = content; request.AddHeaders(Helper.GetX509Certificate2(CertSignName, CertsPath, CertsPass), await content.DigestValue(), "/oauth2/token", KeyId); System.Console.WriteLine($"===========REQUEST========\n{request}"); using (HttpResponseMessage response = await client.SendAsync(request)) { isSuccess = response.IsSuccessStatusCode; if (isSuccess) { System.Console.WriteLine($"===========RESPONSE========\n{response}"); var responseContent = await response.Content.ReadAsStringAsync(); var indexOfEndAccessToken = responseContent.IndexOf(",", 16); AccessToken = responseContent.Substring(17, indexOfEndAccessToken - 18); } else { Thread.Sleep(100); } } } } } }