2016-12-15 7 views
3
gehostet

Wenn die Anwendung Standalone (nur Turmfalke Server läuft auf einem bestimmten Port in meinem Fall: 3001) Ich kann anmelden (Erstellen eines Auth-Cookie) und meine Sitzung ohne Problem zu verwenden mache nachfolgende Aufrufe an meine API-Controller. Sobald ich jedoch die Anwendung über IIS auf den Host veröffentliche, kann ich mich ohne Probleme anmelden, aber alle nachfolgenden Anfragen an meine API-Controller scheitern an Autorisierung und Umleitung zur Anmeldung..Net Core Cookie Authentifizierung funktioniert nicht, wenn in IIS

Zu meinem Problem zeigt ich auf eine Arbeitsprobe meine Anwendung abgestreift habe, die hier gefunden werden kann: Angular2AspNetCoreStarter

zu reproduzieren:

  1. Klon den Repo
  2. cd Angular2AspNetCoreStarter in Projektverzeichnis navigieren
  3. Abhängigkeiten installieren dotnet restore & npm install
  4. build npm run build
  5. veröffentlichen dotnet publish
  6. Host über IIS Publishing to IIS
  7. Navigieren Sie zu gehosteten Seite (in meinem Fall war es @http://localhost/ng2starter)
  8. Anmeldung mit einem beliebigen Benutzernamen/Passwort
  9. Offene Seiten Navigation
  10. Click Senden Sie anonymen Ping (beachten Sie, dass es funktioniert! Ich benutzte Fiddler Verkehr) zu inspizieren
  11. Klicken, Ping (man beachte die 401 und umleiten um sich einzuloggen)

Ich habe die Protokolle geprüft und die Fehler, die ich in den Kestrel-Logs finden ist: CookieAuth was not authenticated. Failure message: Unprotect ticket failed
FYI 'CookieAuth' ist der Name des Schemas, den ich in der Datei appsettings.json definiert habe.

+0

@WarrenP haben Sie 'npm install' ausgeführt und erstellen mit' npm run build' – wickdninja

+0

Ihre neuen Anweisungen sind viel besser! Ich habe es zur Arbeit gebracht. Ich werde es auf IIS testen, wenn ich zu Hause bin und sehen, ob ich es herausfinden kann. Natürlich macht das Ausführen in IIS das Debuggen schwieriger. –

+0

Einverstanden ... das ist die Hälfte mein Problem lol Wenn Sie nur in IIS ausführen und den Debugger wie in ASP.NET (nicht Kern) anfügen könnten – wickdninja

Antwort

5

Ich denke, das Problem könnte übrig bleiben oder überlappende Cookies von einer anderen "localhost" -Anwendung mit dem gleichen Cookie-Namen. Ich lief in IIS Ihre Probe und wurde mit den gleichen 401-Fehlern aus dem Ping bekommen und bemerkte dann eine Reihe von localhost Cookies in Chrom mit dem gleichen Standardnamen

.AspNetCore.CookieAuth

ich alle Cookies geräumt und dann lief Ihre Probe wieder und stieg wieder ein „PONG“

die Cookies, die erstellt werden, wenn Sie verwenden IISEXPRESS localhost: PORT

wird auch kommen, wenn Sie in IIS laufen mit nur localhost Ich vermute also, dass die IISEXPRESS-Cookies an die IIS-Ins gesendet werden und weil Sie einen flüchtigen Datenschutz haben, werden sie nicht in der Lage sein, sie zu entschlüsseln.

+1

Sie sind genau richtig! Vielen Dank! :) – wickdninja

Verwandte Themen