簡體   English   中英

我如何手動獲取.aspnet.cookies Cookie中的信息?

[英]How Do I Manually Get At The Information In the .aspnet.cookies Cookie?

我們有一個身份驗證設置,我們不允許除標頭中發送的承載令牌之外的所有內容。

但是,我有一種情況,我需要使用cookie代替一個Web API控制器。

我可以看到已經在名為“.aspnet.cookies”的請求中發送了一個cookie,其中填充了加密值。

如果我能找到解密值的方法,它會解決我的問題,但我不清楚如何這樣做。

遺憾的是,我不能只是將身份驗證配置為出於技術原因自動使用cookie。

有誰知道我可以使用哪個類來調用手動解密cookie值?

我(OP)今天一直在研究這個問題,我找不到我想要的確切答案,但確實找到了解決方法。

我非常確信OWIN中間件在內部以某種方式使用ISecureDataFormat來保護/取消保護我看到的cookie(名為“.aspnet.cookies”)。 我無法弄清楚框架使用了哪個ISecureDataFormat,但我確實找到了我們使用它來處理AJAX請求頭中傳遞的承載令牌的位置。

基本上,在AuthStartup類中,我有一些OAuthAuthorizationServerOptions,並發現我們使用其AccessTokenFormat屬性(它是一個ISecureDataFormat)來處理承載令牌。

因為我可以從我的類訪問AuthStartup.OAuthOptions.AccessTokenFormat,所以我決定只將持有者令牌的值放入我自己的會話cookie中,然后使用AuthStartup.OAuthOptions.AccessTokenFormat.Uprotect()來解密它的值。

這給了我一個AuthenticationTicket,其身份我可以填入GenericPrincipal,然后我將其分配給自定義FilterAttribute / IAuthorizationFilter中的System.Threading.Thread.CurrentPrincipal和HttpContext.Current.User,我將其應用於需要使用cookie的控制器。

我希望我知道如何更優雅地處理這種情況,但它對我想要實現的目標起作用。

我不確定您是指在cookie中讀取cookie還是解密自定義數據。 如果它是一個FormsAuthentication cookie,就像你的情況一樣,那么你將需要提取FormsAuthenticationTicket形式的經過身份驗證的請求的FormsIdentity票證。

如果要求解密FormsAuthenticationTicket.UserData自定義數據,則需要使用與加密相同的加密。

它不是加密值,而是令牌/票證/會話ID。 這一切都有很好的記錄......

這告訴你如何閱讀和放置cookie - 這很容易... http://msdn.microsoft.com/en-us/library/ms178194.ASPX

這告訴所有關於ASP.Net身份驗證cookie ... http://support.microsoft.com/kb/910443

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM