WebAPI CORS mit Windows-Authentifizierung - Anonymen OPTIONS-Anfrage

Ich habe eine WebAPI 2 REST-service läuft mit Windows-Authentifizierung. Es gehostet wird, getrennt von der website, so habe ich aktiviert CORS mit dem ASP.NET CORS NuGet-Paket. Meine client-Seite ist mit AngularJS.

So weit, hier ist, was ich durchgemacht habe:

  1. Ich nicht withCredentials festgelegt werden, damit die CORS-Anfragen waren wieder ein 401. Gelöst, indem withCredentials zu meinem $httpProvider config.
  2. Nächsten hatte ich meine EnableCorsAttribute mit einer wildcard Herkunft, was nicht erlaubt bei Verwendung von Anmeldeinformationen. Gelöst, indem die Einstellung der expliziten Liste der Herkunftsländer.
  3. Diese aktiviert meine GET-Anforderungen, um erfolgreich zu sein, aber mein BEITRAG gab eine preflight-Anfrage, und ich hatte nicht irgendwelche controller-Aktionen zu unterstützen, die OPTIONEN, verb. Um dies zu beheben, habe ich implementiert MessageHandler als Globale OPTIONEN handler. Es gibt einfach 200 für alle OPTIONS-Anfrage. Ich weiß, das ist nicht perfekt, funktioniert aber für jetzt, in Fiddler.

Wo ich stecken geblieben bin - mein Winkel-preflight-Aufrufe nicht einschließlich der Anmeldeinformationen. Nach diese Antwort, dies ist by design, da OPTIONEN-Anforderungen ausgelegt sind, werden anonym. Aber die Windows-Authentifizierung stoppen, die Anforderung mit einem 401.

Habe ich versucht, indem Sie die [AllowAnonymous] - Attribut auf meinem MessageHandler. Auf meinem dev-Rechner, es funktioniert - OPTIONEN Verben benötigen keine Authentifizierung, aber auch andere Verben tun. Wenn ich das erstellen und bereitstellen der test-server, allerdings bin ich weiterhin um 401 auf meine OPTIONS-Anfrage.

Ist es möglich, mit [AllowAnonymous] auf meine MessageHandler, wenn die Windows-Authentifizierung verwenden? Wenn ja, eine Anleitung, wie Sie dies tun? Oder ist das der falsche Hase Loch und ich suchen sollte, auf einen anderen Ansatz?

UPDATE:
Ich war in der Lage, es zu arbeiten, indem Sie die Einstellung Windows-Authentifizierung und Anonymen Authentifizierung auf der Website im IIS. Dies führte alles zu erlauben, anonym, so dass ich Hinzugefügt habe, einen globalen filter zu Genehmigen, unter Beibehaltung der AllowAnonymous auf meine MessageHandler.

Jedoch, dies fühlt sich wie ein hack...ich hab es immer so verstanden, dass nur eine Authentifizierungsmethode verwendet werden (nicht gemischt). Wenn jemand einen besseren Lösungsansatz, wäre ich dankbar davon zu hören.

  • Sie sollten wahrscheinlich hinzufügen ein tag wie "selfhost' oder 'owin' dies ist nicht gebunden an etwas wie IIS. 🙂
  • Ich habe diesen guide codeproject.com/Articles/1119206/... (veröffentlicht im Jahr 2016), die sehr ähnlich mit den meisten Antworten
InformationsquelleAutor Dave Simione | 2014-12-11
Schreibe einen Kommentar