基于RESTful / token的WebAPI身份验证,而不是WebSecurity.Login

时间:2015-03-27 22:05:28

标签: c# asp.net security authentication asp.net-web-api

我有一个带有C#后端的小型AngularJS Web应用程序,它可以正常运行;我使用

WebMatrix.WebData.WebSecurity以基于cookie的方式处理身份验证
WebSecurity.CreateUserAndAccount(username, password);

用于新帐户,

WebSecurity.Login(username, password);

登录,

WebSecurity.Logout();

用于注销,

WebSecurity.GetUserId();

获取特定请求的用户ID。

正如我所说,这一切都运作良好,但它感觉很脆弱,更不用说它不适用于我的后端的任何RESTful使用。 (例如,我想在将来的某个时候从移动应用程序中获取API。)这不是我的专业领域(这首先是这样的结果)所以我在搜索建议。

我想转换到某种基于令牌的身份验证,而不是让身份验证过程更加依赖于上下文。 WebSecurity类是否具有此功能?这个班级是一个好方法吗?如果没有,过渡到更好的东西可能是一个好的策略?我一直在谷歌上搜索这个问题,并且看到很多条款被抛出,没有任何好的背景。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可能熟悉下一个教程,但它们会为您提供基于令牌的身份验证的完整图片。 带有ASP.NET Web API 2.2的ASP.NET Identity 2.1(帐户管理) - Part 1 Part 2 Part 3

  1. 向服务器询问令牌(http://youhost/oauth/token
  2. 服务器发出具有指定过期时间的令牌(可由您配置)
  3. 将令牌发送给客户,并提供有关到期的详细信息
  4. 将令牌存储在浏览器数据库中以备将来使用
  5. 将收到的令牌附加到您的请求
  6. 您还可以使用下面的tutorial描述刷新令牌。顺便说一句,他们也有到期选项

    感谢TAISEER的辛勤工作。

答案 1 :(得分:1)

如果您能够升级,假设您尚未升级到ASP.net 4.5.1或更高版本,ASP.net现已开始提供OAuth支持。这将允许您让用户通过MS ID,Facebook,Twitter或其他OAuth2提供商(即基于令牌的身份验证)登录。

虽然我不喜欢这样做,但是为了防止未来读者的链接中断,以下文章是关于Oauth2如何与Asp.net一起工作的一个很好的教程。不幸的是,这里发布的时间太长了。

http://www.asp.net/web-api/overview/security/external-authentication-services