Web API身份验证和MVC 4

5
我有以下解决方案:
  1. Web API 项目。
  2. MVC 4 项目。

我需要通过发送 JSON 请求(必须使用 HTTPS)来验证用户凭据。这是一个好的方法吗?如何在 Web API 和 MVC 上验证用户身份。

2个回答

5

这是一个好的方法吗?

没错,为什么不呢。

那么如何在Web API和MVC上验证用户身份。

如果Web API需要身份验证,您可以使用与MVC应用程序相同的表单身份验证。因此,您可以在Web API应用程序的web.config中配置表单身份验证,然后使用 [Authorize] 属性装饰需要身份验证的操作。然后需要查询这些方法的客户端将需要在请求中包含表单身份验证cookie。

值得注意的是,为了使Web API能够解密由MVC应用程序发出的表单身份验证cookie,两个应用程序都需要共享相同的机器密钥


那么你的意思是我需要在MVC和Web API上都进行表单身份验证? - Mazen313
这是在两个应用程序之间共享相同身份验证的一种方法。如果这不是您想要实现的目标,请解释您的确切目标。 - Darin Dimitrov
你可以按照我在答案中建议的设置并查看效果。你需要为两个应用程序配置表单身份验证,然后使用Authorize属性装饰受保护的操作。当你需要向Web API发送请求时,需要将表单身份验证cookie与请求一起发送。如果你在实现过程中遇到问题,请不要犹豫,展示你的代码和目前所做的进展,以便我们能够帮助你。 - Darin Dimitrov
@DarinDimitrov 我正在尝试使用MVC 5/Web API 2这种方法。Web API 2的默认配置调用SuppressDefaultHostAuthentication(),这会阻止此方法起作用。根据这篇文章,删除此调用会使API容易受到CSRF攻击。有没有一种方法可以在不带来安全风险的情况下使其正常工作? - Michael Hornfeck
@DarinDimitrov 我创建了一个继承自AuthorizeAttribute的自定义授权过滤器。现在当url访问api/Account/Login时,我应该如何验证用户和使用IPrincipal概念?任何评论或链接都将很有帮助。谢谢 - Zaker
显示剩余2条评论

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接