Я пытаюсь вызвать функцию Azure, которая развернута на портале приложения моей функции.В коде, который я проверяю для сертификата клиента, но он всегда равен нулю.
Я создал модульный тест для вызова моей функции Azure как в Azure, так и локально, отладка показала, что сертификат клиента всегда имеет значение null,Мне интересно, есть ли альтернативный способ проверки, когда вы работаете с ASP.Net Core или функциями Azure в целом.
Это мой модульный тест:
public void TEST()
{
//Create default certificate
var cert = new X509Certificate2(File.ReadAllBytes(@"test.pfx"), "test123");
var clientHandler = new HttpClientHandler();
clientHandler.ClientCertificates.Add(cert);
clientHandler.UseDefaultCredentials = false;
HttpClient httpClient = new HttpClient(clientHandler);
httpClient.BaseAddress = new Uri(functionHost);
httpClient.DefaultRequestHeaders.Accept.Clear();
var apiResponse = httpClient.GetAsync(URL).Result;
string apiResult = apiResponse.Content.ReadAsStringAsync().Result;
apiResponse.EnsureSuccessStatusCode();
}
Это моя функция тестового подключения в контроллере, просто для подтверждения концепции:
[HttpGet]
[FunctionName("TestConnection")]
public IActionResult TestConnection([HttpTrigger(AuthorizationLevel.Function, "get", Route = "TestConnection")] HttpRequest req)
{
TelemetryClient telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = ConfigManager.GetConfig["InstrumentationKey"];
var a = req; //break here and check
//custom validation code done here, will throw error if not Ok
return Ok();
}
Я пыталсячтобы отправить сертификат клиента (test.pfx), и я хотел проверить, что запрос HttpRequest - через req.HttpContext.Connection.ClientCertificate - будет показывать что-то из test.pfx, но вместо этого это ноль.
В качестве альтернативы,Я могу избавиться от всей этой проверки для сертификата клиента в моем коде и включить SSL на моем портале функций Azure.Я также загружаю тот же сертификат test.pfx в Azure.Когда я делаю это и запускаю свой модульный тест, я получаю ошибку 403 - и при проверке телеметрии я вижу, что сертификат клиента все еще нулевой.
Неправильно ли я передаю сертификат клиента?Разве HttpClient не отправляет сертификат в приложения-функции Azure?Как это можно сделать правильно?
Я ожидал либо:
req.HttpContext.Connection.ClientCertificate, чтобы иметь некоторый сертификат клиента вместо нулевого значения.
ИЛИ
чтобы получить 200 в моем тестовом соединении при переходе по маршруту функции Azure SSL вместо 400.