2016-12-15 38 views
3

運行應用程序獨立(在我的情況下,只是在指定端口上運行的kestrel服務器:3001)我可以登錄(創建一個auth cookie)並使用我的會話而不發出問題隨後調用我的API控制器。但是,一旦我通過IIS發佈應用程序到主機,我可以登錄沒有問題,但對我的API控制器的所有後續請求無法授權並重定向到登錄。.Net Core Cookie身份驗證在IIS中託管時無法運行

爲了證明我的問題我已經剝奪我的應用程序下來,可以在這裏找到工作示例:Angular2AspNetCoreStarter

重現:

  1. 克隆回購
  2. 導航到項目目錄cd Angular2AspNetCoreStarter
  3. 安裝依賴關係dotnet restore & npm install
  4. 構建npm run build
  5. 通過IIS發佈dotnet publish
  6. 主機Publishing to IIS
  7. 導航到託管的網站(在我的情況下,它是@http://localhost/ng2starter
  8. 登錄與任何用戶名/密碼
  9. 打開側導航
  10. 點擊發送匿名Ping(注意它的工作原理!我以前Fiddler檢查流量)
  11. 點擊發送Ping(注意401和重定向登錄)

我已經檢查了日誌,我在紅隼日誌中發現的錯誤是: CookieAuth was not authenticated. Failure message: Unprotect ticket failed
FYI 'CookieAuth'是我在appsettings.json文件中定義的方案名稱。

+0

@WarrenP是否運行'npm install'並使用'npm run build'編譯出來? – wickdninja

+0

您的新指令要好得多!我得到它的工作。當我在家時,我會在IIS上測試它,看看我能否弄清楚。當然,在IIS中運行會使調試更加困難。 –

+0

同意......這是我的一半問題大聲笑如果只有你可以在IIS中運行並附加像ASP.NET(不核心)調試器 – wickdninja

回答

5

我認爲這個問題可能會遺留在或覆蓋來自具有相同cookie名稱的不同「本地主機」應用程序的cookie。我跑在IIS中的樣品,並從平得到相同的401錯誤,然後在鉻注意到一羣本地主機的餅乾與同一默認名稱

.AspNetCore.CookieAuth

我清空了所有的餅乾然後再跑到你的樣品和回來了「PONG」

是那些獲得當你使用IISEXPRESS 創建的cookie本地主機:PORT

也將降下來,當你在IIS只有本地主機上運行,所以我的猜測是IISEXPRESS cookies被髮送到IIS插件因爲你有短暫的數據保護,他們不能解密。

+1

你完全正確!非常感謝你! :) – wickdninja

相關問題