使用asp.net web api进行身份验证和授权相关的疑问

时间:2014-08-12 11:27:57

标签: asp.net asp.net-mvc-4 asp.net-web-api

我必须开始在MVC 4和Web API中开发一个新项目。我之前有过MVC 4的经验,但是使用Web API,这将是我的第一个项目。据我所知,web api可供不同平台使用。

我有一些与web api相关的问题。我将它们呈现给你们如下:

1)我的第一个问题与用户身份验证有关。我查看了this SO问题并按照所选答案中给出的link1link2进行了调查。我还有几个问题:

a)当我们通过表单身份验证进行用户身份验证时,我们会创建一个cookie,用于跟踪用户是否经过身份验证,但是使用web api我们不存储cookie,而是在内容标头中传递用户凭据。在这种情况下,我没有得到如何跟踪用户的登录状态?

b)我的另一个问题是限制未经授权的访问,如果我没有错,我认为我可以在上面提供的链接1和link2中找到。

c)我查看了Edward Brey的回答(在同一个SO问题中)以及身份验证,但我没有完全理解。

2)我的第二个疑问是关于混合表单身份验证和基本Http身份验证。登录时我是否可能使用表单身份验证然后使用web api我使用基本的http身份验证?如果是,那么请指导我。

我的问题可能听起来不合适,但请耐心等待我

1 个答案:

答案 0 :(得分:0)

1.a)Restful API是无状态的,因此您无法跟踪用户的登录状态,而是发送为每个请求验证的凭据

1.b)是的,如果没有,网上有很多文章。授权过滤器可以帮助您实现这一目标。

1.c)简而言之,他提到了在执行API中的任何方法之前授权用户的简单逻辑。在执行控制器中的任何方法之前调用EnsureAuthenticated,或者将该逻辑放入Authorize filter。

2)是的,你可以做到。在Restful API中,每个调用都可以是一个新实例,您可以使用api请求传递凭据,无论您使用哪个。

如果您继续讨论您提供的链接1,您将看到:

  

在我们的特定情况下,服务器通过编码生成身份验证令牌   串联的用户名和密码为Base64(与之相反   在文章中描述并通过一个发送回客户端   执行“登录”操作时的HTTP标头。然后是客户   存储此身份验证令牌并将其与每个后续请求一起发送   需要它。

     

如果身份验证令牌的格式众所周知(就像我的情况一样),   你也可以在客户端自己生成并发送它   没有服务器就可以完成这项工作。

您可以使用登录信息为客户端生成身份验证令牌,您可以将其用于发送附加到您的网络API请求。