0

我正在使用一个可以读取但不能发送 cookie 的客户端。这是一个问题,因为客户端要发布到经过身份验证的方法。我想一个简单的解决方法是在标头中发送 cookie 信息,在 BeginRequest 中截取它并将伪造的 cookie 附加到请求中。由于开始请求发生在身份验证之前,我认为它会起作用。它没。

这是我目前的方法。

protected void Application_BeginRequest()
    {
        // I have added the auth cookie to the header
        var a = Request.Headers["Authorization"];
        if (a == null) return;
        // get cookie value
        var s = a.Replace(".AspNet.ApplicationCookie=", "");
        // I am injecting the cookie into the request
        var c = new HttpCookie(".AspNet.ApplicationCookie", s);
        Request.Cookies.Add(c);
    }

我设置了断点来观察“真实”cookie,它与我的“制造”cookie 相匹配。我是在做错事还是在尝试不可能的事情?此外,如果有人知道我如何使用 cookie 信息授权用户,我会非常满意。

这是一个使用现在标准 Owins 库的 MVC5 应用程序。

4

1 回答 1

0

在 BeginRequest 之前调用 Owins 框架。此外,Owins 请求上下文是只读的。所以是的,使用 Owins 添加到 cookie 是不可能的。

...但是可以创建自己的 owins 中间件来读取标头值并“取消保护”AuthenticationTicket。该解决方案基于Cookie Middleware

于 2013-11-13T07:22:46.920 回答