【发布时间】:2015-02-08 03:44:21
【问题描述】:
我正在努力找出哪些 .Net 身份验证概念在 OWIN 世界中仍然相关,哪些现在已经过时。从 OWIN 之前的 ASP.Net 时代开始,我习惯于处理 .Net 结构:FormsAuthentication、FormsAuthCookie、IPrincipal、IIdentity 以及 IPrincipal 的自定义实现(继承自 GenericPrincipal)。使用最新版本的 MVC (5),大部分身份验证似乎已更改为基于 OWIN。我特别想了解两件事:
1) IPrincipal 和 IIdentity 和 GenericPrincipal 在哪里适合? 使用 FormsAuthentication,自定义数据可以存储在 FormsAuth cookie 中。然后可以在 ASP.Net PostAuthenticate 事件中使用它来创建一个 CustomPrincipal 对象,并覆盖 HTTPContext 上的默认 IPrincipal(根据下面的代码示例)。 OWIN 如何(或如何)改变这一点?:
protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
//Decrypt forms authentication cookie and retrieve some userdata
...
//Create CustomPrincipal (which inherits from GenericPrincipal)
var principal = new CustomPrincipal(userId, roles, someAdditionalUserDataFromCookie);
//Replace standard IPrincipal object on HTTPContext with custom principal
HttpContext.Current.User = newUser
}
2) 自定义身份验证数据可以存储在哪里? 在 OWIN 之前的日子里,我使用 AuthCookie 的 UserData 值来存储自定义身份信息(除了用户名) - 例如 OrgID .现在可以将其作为 Claims 存储在 ClaimsIdentity 对象中吗?这是一个好主意吗?它仍然可以存储在 AuthenticationTicket 中吗?我看错了吗?!
感谢您的帮助。
【问题讨论】:
标签: asp.net .net asp.net-mvc authentication owin