Отключить SSL-сертификат клиента на * некоторых * контроллерах WebAPI?
Редактировать для будущих читателей: К сожалению, награда за вознаграждение не работает; Я ничего не могу с этим поделать. Но прочитайте мой собственный ответ ниже (через тестирование) - подтвердил работу с минимальными изменениями кода
У нас есть облачная служба Azure (WebRole), которая полностью находится в ASP.NET WebAPI 2.2 (нет MVC, интерфейс - Angular). Некоторые из наших контроллеров / конечных точек REST взаимодействуют с сторонней облачной службой по SSL (аутентификация клиента / взаимная аутентификация клиента), а остальные контроллеры / конечные точки взаимодействуют с внешним интерфейсом HTML5 / AngularJS, также по SSL (но более традиционная аутентификация сервера). SSL). У нас нет конечной точки без SSL. Мы включили Client SSL через задачу запуска облачной службы, например:
IF NOT DEFINED APPCMD SET APPCMD=%SystemRoot%\system32\inetsrv\AppCmd.exe
%APPCMD% unlock config /section:system.webServer/security/access
Проблема: эта настройка распространяется на весь сайт, поэтому даже когда пользователи переходят на первую страницу (скажем,https://domain.com, возвращает index.html для angularJS) их браузер запрашивает сертификат SSL-клиента. (изображение ниже)
Если есть способ либо
Ограничить клиентские запросы SSL-сертификатов только контроллерами WebAPI, которые общаются со сторонней облачной службой?ИЛИ ЖЕ
Пропустить аутентификацию клиента SSL для наших внешних контроллеров Webapi?Файл web.config нашего сервера является сложным, но соответствующий фрагмент приведен ниже:
<system.webServer>
<security>
<access sslFlags="SslNegotiateCert" />
</security>
</system.webServer>
И снимок экрана с клиентом, который подключается к обычной конечной точке WebAPI, но пытается выполнить SSL-аутентификацию клиента (происходит в любом браузере, Chrome, Firefox или IE)