模拟“ ASP.NET_SessionId” cookie

时间:2019-10-17 13:59:41

标签: c# asp.net-mvc cookies

我正在尝试针对以下情况提出解决方案:

我已将Web应用程序从表单身份验证迁移到OWIN + OAuth。

现在,还有一个移动客户端应用程序(android)。移动客户端已针对Web应用进行了身份验证,如果一切顺利,服务器将使用用户的数据进行响应,并且服务器也曾经使用2个cookie进行响应,其中一个是会话cookie(从未使用过,但从未在客户端上检查过它的存在) ),另一个是用户的身份Cookie。移动客户端验证用户的数据“看起来不错”,并检查是否存在这两个Cookie,以便通过登录屏幕。

我现在想做的是通过在所有必需的检查后根据需要提供用户数据,然后模拟2个cookie的存在,从而使移动应用不受服务器上的更改的影响。我可以避免在移动应用上进行任何更改(避免编译和更新客户端)

以下代码是在API控制器中实现的,尽管.ASPXAUTH cookie可以正常工作,但旧的ASP.NET_SessionId cookie似乎不可控。

以下代码将永远不会用ASP.NET_SessionId cookie响应客户端,尽管该代码与其他cookie的代码相同,这将完全服从.Add / .Set / .Remove集合。

                    if (HttpContext.Current.Response.Cookies.AllKeys.Contains("ASP.NET_SessionId"))
                        HttpContext.Current.Response.Cookies.Set(new HttpCookie("ASP.NET_SessionId", "1st") { HttpOnly = false });
                    else
                        HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "1st") { HttpOnly = false });


                    if (HttpContext.Current.Response.Cookies.AllKeys.Contains(".ASPXAUTH"))
                        HttpContext.Current.Response.Cookies.Set(new HttpCookie(".ASPXAUTH", "2nd") { HttpOnly = false });
                    else
                        HttpContext.Current.Response.Cookies.Add(new HttpCookie(".ASPXAUTH", "2nd") { HttpOnly = false });

我是否有任何原因无法返回名为ASP.NET_SessionId的“自定义Cookie”? 我已经删除了与表单身份验证相关的所有逻辑,因此默认情况下不再生成Cookie,但看起来我也无法伪造将其返回。

预先感谢

0 个答案:

没有答案