ASP.NET OWIN自定义Cookie身份验证

时间:2016-09-05 06:20:58

标签: asp.net asp.net-mvc authentication cookies owin

我们正在运行一个经典的asp web应用程序,并希望它与新开发的MVC应用程序一起工作。我们希望在MVC应用程序中使用经典asp应用程序的身份验证。

这个想法是当用户登录经典的asp应用程序时,它将发出一种auth cookie,cookie是用我们自己的方法加密的。 Cookie将包含使用标识。

客户端然后浏览到MVC应用程序以及此身份验证cookie。 MVC应用程序将检查cookie是否存在并验证它。它不会重定向到经典的asp登录页面。

所以我想自定义OWIN cookie身份验证以使用我自己的身份验证逻辑。我试图实现CookieAuthenicationProvider,但我不知道在哪里放置我的逻辑。

app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login"),
            CookieName = ".classicauth",
            CookieSecure = CookieSecureOption.SameAsRequest,
            CookieHttpOnly = true,
            Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = context => {
                    //?? where I can extract the cookie and validate it??
                    context.RejectIdentity();
                    return Task.FromResult<int>(0);
                },
                OnApplyRedirect = context => {
                    context.Response.Redirect("classic_asp_login_url");
                }
            }
        });            

CookieAuthenticationProvider有一个OnValidateIdentity,但它似乎不是提取cookie并验证它的正确位置。

感谢。 杰森。

1 个答案:

答案 0 :(得分:0)

我还没有在那个特定的环境中测试自己。但CookieManager适合我。

OnValidateIdentity = context => {
  var cookie = context.Options.CookieManager.GetRequestCookie(context.OwinContext, context.Options.CookieName);
  context.RejectIdentity();
  return Task.FromResult<int>(0);
},