Ich habe eine selbst gehostete Web-API-Anwendung (die Server-Anwendung), die Windows-Authentifizierung verwendet.Windows-Authentifizierung auf web.api
Windows-Auth in Startup.cs/Configuration
, indem die folgenden AuthenticationSchemes aktiviert auf System.Net.HttpListener
System.Net.HttpListener listener = (System.Net.HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = System.Net.AuthenticationSchemes.IntegratedWindowsAuthentication
| System.Net.AuthenticationSchemes.Anonymous;
und Controller verwenden Sie dann die [autorisieren] Tag. Ich kann dann die Principal.Identity
aus dem HttpRequestContext
für jede Controller-Methode extrahieren, um zu sehen, wer den Anruf tätigt.
Es scheint, dies funktioniert nur, wenn der Anrufer und der Server auf dem gleichen Host sind. Sobald sich die aufrufende Anwendung auf einem anderen Host befindet, werden alle Anfragen mit einem nicht autorisierten 401 blockiert und es wird niemals eine Controller-Methode auf dem Server getroffen. Dies ist auch dann der Fall, wenn die aufrufende Anwendung unter demselben Benutzerkonto wie der Server ausgeführt wird. Ist also eine spezielle Konfiguration erforderlich, damit die Windows-Authentifizierung auf web.api auf verschiedenen Computern funktioniert?
Grüße meisterd
Edit: Ich habe versucht, einige Spuren mit Fiddler zu tun, und wenn Fiddler aktiviert ist, scheinen die Anforderungen zu arbeiten (ich drei Anfrage sehen, die ausgeführt werden) – meisterd
Ist Gibt es einen anderen Proxy als Fiddler zwischen diesen Rechnern und dem Server? Da NTLM/Kerberos keine Authentifizierung durch Proxy zulassen. – Jimi