我正在尝试针对以下情况提出解决方案:
我已将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,但看起来我也无法伪造将其返回。
预先感谢