Вызов WEB API RestService через SSL с сертификатом клиента - PullRequest
0 голосов
/ 16 октября 2018

С учетом следующего сценария:

-WebAPI REST Service развернут в IIS.Защищено с помощью SSL (обязательно).Авторизация осуществляется через расширение атрибута Authorize.Действие контроллера достигается и разрешается ТОЛЬКО, если вызов выполняется из браузера напрямую.Например: https://myServier:myPort/RestServices/api/SomeControllerAction

Набрав, что в браузере отправляет клиенту сертификат, установленный на локальном компьютере, в службу (сначала запрашивается, какой из них отправить, если у вас установлено несколько сертификатов):

enter image description here

Затем выбранный сертификат отправляется, принимается и должным образом авторизуется на сервере.Сказав это, мне нужно вызвать службу программно из веб-приложения (ASP.NET MVC).В моем контроллере я делаю следующее, чтобы вызвать службу:

string uri = ConfigurationManager.AppSettings["RestServiceAddress"];
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "GET";
        request.ContentType = "application/json";
        X509Certificate2 clientCertificate = new X509Certificate2(System.Web.HttpContext.Current.Request.ClientCertificate.Certificate);
        request.ClientCertificates.Add(clientCertificate);
        var webResponse = (HttpWebResponse)request.GetResponse();

Вышеприведенный фрагмент кода не работает: служба даже не достигнута на сервере, вызывая общую и вводящую в заблуждение ошибку:

Удаленный сервер возвратил ошибку: (403) Запрещено.

Я «распечатал» свойства ClientCertificate до вызова службы и, очевидно, является правильным.Который очень раздражает, поскольку я борюсь в течение многих дней с этим с ** т.Когда я говорил «дни», я действительно имел в виду дни, читая множество форумов, все вопросы и ответы здесь, в StackOverFlow, и ничего не работает, пробовал множество разных подходов.

Есть какие-нибудь подсказки, что здесь происходит?Я не понимаю, что браузер отправляет через прямой вызов, который я не отправляю программно.

Любая помощь супер очень ценится.

...