我们正在运行一个经典的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并验证它的正确位置。
感谢。 杰森。
答案 0 :(得分:0)
我还没有在那个特定的环境中测试自己。但CookieManager适合我。
OnValidateIdentity = context => {
var cookie = context.Options.CookieManager.GetRequestCookie(context.OwinContext, context.Options.CookieName);
context.RejectIdentity();
return Task.FromResult<int>(0);
},