2015-12-21 60 views
0

我正在创建一个新的Web应用程序,并且计划为Web服务使用Knockout Js作为前端UI和(此时此刻)MVC Web Api。 UI应用程序将是一个单页面应用程序(SPA)。SPA敲除应用程序 - 身份验证方法

我需要内容才能保护登录用户的身份(身份验证)。我打算根据用户角色(授权)拥有不同级别的内容。

我正试图建立执行用户身份验证的最佳方式。我通常使用ASP.net表单身份验证,但我听说过很多关于oAuth但不确定它是否最好(最安全)的方法(如果未正确实现,我已经阅读了许多有关oAuth 2.0规范的负面消息)。我也听说索赔认证是一种可靠的认证技术。

我试图想到其他形式的身份验证的原因是灵活性。现在我正在开发一个基于Web的应用程序,但我知道我们有将来开发的原生移动应用程序,并且我希望为所有应用程序提供单一用户群。

有人可以帮助我(认证设备)的身份验证方法脱颖而出,重点是如何初始客户端身份验证的工作,其次是从用户界面到Web API的可疑请求检索数据。

在此先感谢您的任何建议!

回答

1

嗯,这是我的意见。

您正在使用Web API,因此FormsAuthentication在我看来并不是好的选择。您可以使用OWIN生成授权令牌(称为持票人令牌),该授权令牌将授权请求。 asp.net中的授权令牌通常通过HTTP请求的头部发送。例如:

$.ajax({ 
    url: '/api/v1/user', 
    headers: { 
     'Authorization': 'Bearer TOKEN_HERE' 
    }, 
    type: 'post', 
    data: someData, 

}); 

这样一来,你就不会产生任何饼干,所有的请求是无状态的,下面的的WebAPI的原则。

要了解有关如何生成令牌的更多信息,请参阅本文的http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/。它使用Identity来管理用户,但它不是必需的,你可以使用你自己的实现,就像在这个线程中一样DB-First authentication confusion with ASP.NET Web API 2 + EF6

之后,你应该将你的令牌保存在HTML5 localStorage(或sessionStorage)中,然后使用它只要有必要。

希望它有帮助!

相关问题