Изменить для будущих читателей: К сожалению, награда за награду не работает; теперь я ничего не могу с этим поделать. Но прочитайте мой собственный ответ ниже (через тестирование) - подтверждено для работы с минимальными изменениями кода
У нас есть служба облачного облака (WebRole), которая полностью находится в ASP.NET WebAPI 2.2 (без MVC, front end - Angular). Некоторые из наших контроллеров/конечных точек REST разговаривают с сторонним облачным сервисом через SSL (клиентский сертификат auth/взаимный auth), а остальные контроллеры/конечные точки разговаривают с интерфейсом HTML5/AngularJS, также через SSL (но более традиционный серверный auth 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. (изображение ниже)
Если есть способ либо
- Ограничить клиентские запросы SSL-сертификатов только контроллерам WebAPI, которые говорят с облачным сервисом сторонних разработчиков.
ИЛИ
- Пропустить SSL-авторизацию клиента для наших контроллеров webapi на передней панели?
Наш сервер web.config является сложным, но соответствующий фрагмент ниже:
<system.webServer>
<security>
<access sslFlags="SslNegotiateCert" />
</security>
</system.webServer>
И скриншот клиента, попадающего на обычную конечную точку WebAPI, но пытающуюся аутентификацию SSL клиента (происходит в любом браузере, Chrome, Firefox или IE)