【问题标题】:SPA Knockout Application - Authentication methodsSPA Knockout 应用程序 - 身份验证方法
【发布时间】:2016-03-27 08:37:36
【问题描述】:

我正在创建一个新的 Web 应用程序,我计划将 Knockout Js 用于前端 UI,并且(目前无论如何)将 MVC Web Api 用于 Web 服务。 UI 应用程序将是单页应用程序 (SPA)。

我需要仅对登录用户安全的内容(身份验证)。我打算根据用户角色(授权)拥有不同级别的内容。

我正在尝试建立执行用户身份验证的最佳方式。我通常使用 ASP.net 表单身份验证,但我听说过很多关于 oAuth 的信息,但不确定它是否是最好(最安全)的方式(如果没有正确实施,我已经阅读了很多关于 oAuth 2.0 规范的负面信息)。我还听说声明身份验证是一种可靠的身份验证技术。

我尝试考虑其他形式的身份验证的原因是为了灵活性。现在我正在开发一个基于 Web 的应用程序,但我知道我们将来会开发原生移动应用程序,我希望所有应用程序都有一个单一的用户群。

谁能帮我揭开身份验证方法的神秘面纱(跨设备工作),重点是初始客户端身份验证的工作原理,然后是从 UI 到 Web api 的可疑请求以检索数据。

提前感谢您的任何建议!

【问题讨论】:

    标签: asp.net asp.net-mvc authentication knockout.js oauth


    【解决方案1】:

    好吧,这是我的看法。

    您正在使用 Web API,因此我认为 FormsAuthentication 不是一个好的选择。您可以使用 OWIN 生成一个授权令牌(称为不记名令牌),它将对请求进行授权。 asp.net 中的授权令牌通常通过 HTTP 请求的标头发送。例如:

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

    这样,您不会创建任何 cookie,并且所有请求都是无状态的,遵循 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)中,并在需要时使用它。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 2013-11-25
      相关资源
      最近更新 更多