REST服务身份验证:存储用户凭据的位置?

时间:2014-03-11 16:43:45

标签: asp.net-mvc rest authentication asp.net-web-api

我正在开发一个ASP.NET MVC Web应用程序。该应用程序正在使用REST API,但REST完整应用程序的身份验证对我来说还不太清楚。

由于REST是无状态的,我是否必须使用两个不同的数据库实现两个不同的身份验证,一个用于客户端,一个用于REST服务?

或者,每次都必须发送登录名/密码,以便在服务器上进行身份验证吗?

请给我一些建议或教程。

2 个答案:

答案 0 :(得分:4)

您可以使用存储在数据库中的各个用户帐户对Web API进行身份验证。 在这种情况下,客户端应首先获取访问令牌。然后将其包含在每个请求中,这需要授权,标题:

Authorization: Bearer boQtj0SCGz2GFGz[...]

可以找到好的教程HERE

此外,可以使用Cookie或某些external身份验证方法(Google,Facebook等)在Startup.Auth.cs中扩展身份验证方法

答案 1 :(得分:0)

在您的情况下,无状态不是主要问题,问题是浏览器只能以标签格式以传统方式发送GET或POST请求,因此要发送PUT或DELETE请求您应该使用Ajax,最简单的方法是使用JQuery库并将其配置为在每个请求中的http头(在可以存储在cookie中的请求之间)中发送用户凭据,如果您计划使用自己的身份验证逻辑,则使用基本身份验证。我建议您查看一些SPA框架,例如angularjsemberjsbackbonejs 从硬编码JavaScript简化您的生活。同样在将来,您可以通过OAUTH 2.0轻松扩展您的身份验证。