SSL-Client-Zertifikat auf * einigen * WebAPI-Controllern deaktivieren?

Edit für zukünftige Leser: Leider funktioniert die Antwort mit Kopfgeld nicht. Daran kann ich jetzt nichts ändern. Aber lies meine eigene Antwort unten (durch Testen) - bestätigt, dass sie mit minimalen Codeänderungen funktioniert

Wir haben einen Azure Cloud-Dienst (WebRole), der vollständig in ASP.NET WebAPI 2.2 enthalten ist (keine MVC, Front-End ist Angular). Einige unserer Controller / REST-Endpunkte kommunizieren mit einem Cloud-Dienst eines Drittanbieters über SSL (Client-Zertifikatsauthentifizierung / gegenseitige Authentifizierung), und die übrigen Controller / Endpunkte kommunizieren mit dem HTML5 / AngularJS-Front-End, auch über SSL (jedoch mit herkömmlicherer Serverauthentifizierung) SSL). Wir haben keinen Nicht-SSL-Endpunkt. Wir haben Client-SSL über eine Cloud-Dienst-Startaufgabe aktiviert, z. B .:

IF NOT DEFINED APPCMD SET APPCMD=%SystemRoot%\system32\inetsrv\AppCmd.exe
%APPCMD% unlock config /section:system.webServer/security/access

Issue: Diese Einstellung gilt für die gesamte Site, selbst wenn Benutzer die erste Seite aufrufen (sagen Siehttps: //domain.co, gibt die index.html für angleJS zurück.) Ihr Browser fragt sie nach dem Client-SSL-Zertifikat. (Bild unten)

Wenn es einen Weg gibt, entweder

Begrenzen Sie die Client-SSL-Zertifikatanforderungen nur auf die WebAPI-Controller, die mit dem Cloud-Dienst eines Drittanbieters kommunizieren.

ODE

Skip-Client-SSL-Authentifizierung für unser Front-End, das Webapi-Controller mit Strom versorgt?

Die web.config unseres Servers ist komplex, aber das entsprechende Snippet befindet sich unten:

<system.webServer>
  <security>
    <access sslFlags="SslNegotiateCert" />
  </security>
</system.webServer>

Und der Screenshot des Clients, der einen regulären WebAPI-Endpunkt erreicht und dennoch versucht, eine Client-SSL-Authentifizierung durchzuführen (in jedem Browser, Chrome, Firefox oder IE)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage