2009-01-08 444 views
66

使用ASP.Net Forms身份驗證時,我遇到了.ASPXAUTH cookie。我有幾個問題:什麼是ASPXAUTH cookie?

  • 這個cookie的目的是什麼?
  • 這個cookie的位置是什麼?

回答

74

ASPXAUTH cookie用於確定用戶是否已通過身份驗證。

至於cookie的位置,這取決於您的瀏覽器。如果您使用Firefox,您可以通過單擊工具 - >選項 - >隱私來查看cookie。然後向下滾動到該域並將其展開以查看Cookie及其值。該值使用計算機密鑰(位於服務器的machine.config或web.config文件中)進行加密,因此在客戶端查看cookie不會真正爲您提供任何信息。您可以解密/使用查看服務器端的值:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];//.ASPXAUTH 
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 

其中authTicket有以下字段:

enter image description here

聲明「ASPXAUTH基本上是用來維持ASP.NET會話狀態」是不正確的。 ASP.NET發佈完全不同的cookie,名爲ASP.NET_SessionId,用於跟蹤會話狀態。

+2

在Firefox v8上。0可以找到cookie如下:工具 - >頁面信息 - >安全 - >查看Cookies – Anthony 2011-11-25 09:51:43

6

實際上,.ASPXAUTH cookie不能準確地告訴您用戶何時進行真正的身份驗證。當用戶註銷應用程序時,將從瀏覽器中刪除.ASPXAUTH cookie。但是,如果你回到現場的時候(與形式的權威性的cookie超時)在短期內,並用以下編輯新ASP.NET_SessionId cookie的:從「ASP

  • 改變「名稱」字段.NET_SessionId「到」 .ASPXAUTH」
  • 變化‘值’,從24字符的sessionID老448字符驗證字符串

刷新後,您將能夠承擔的認證用戶的身份,而無需在技術上重新認證再次。 (再次假設您在存儲在.ASPXAUTH加密認證字符串中的指定超時內執行此操作)

一個不錯的blog後更詳細地解釋了問題。可能的解決方案是將.ASPXAUTH與ASP會話耦合。

0

如果用戶與HTML登錄URL的交互允許TSWPPserver建立用戶身份,遠程服務器應該生成一個cookie來標識用戶並允許對服務器進行身份驗證。 cookie的內容應該被簽名和加密。包括簽名和加密算法的這個cookie的具體實現取決於TSWPP服務器的實現,因爲只需要服務器來解析cookie的內容。如果服務器實現了cookie,那麼cookie必須以「application/x-msts-webfeed-login」的內容類型在HTTP有效載荷中返回。

http://msdn.microsoft.com/en-us/library/ee920427.aspx