ASP.NET MVC 5 and WebApi 2 Authentication

本文关键字:WebApi Authentication and NET MVC ASP | 更新日期: 2023-09-27 18:06:28

我最近构建了一个MVC 5 Web站点作为前端原型,并使用个人帐户进行身份验证。我现在需要建立一个WebApi2后端,将服务于这个网站以及iPhone应用程序,以及多个其他客户端。我对MVC站点和WebApi的身份验证感到困惑。

我希望所有的用户管理发生通过WebApi(这将使用令牌),所以它是客户端不可知的,但我不知道如何Cookie认证在网站方面将工作没有我的身份类。似乎我将与MVC站点和WebApi复制代码。我想对mvc站点使用cookie,对webapi使用oauth令牌。我是否需要创建另一个项目,如IdentityProvider来管理这个?或者是否有一种干净的方法来实现这一点,只使用MVC和WebApi项目。谢谢!

编辑:我主要对如何管理用户身份感到困惑,用户能够通过MVC站点和WebApi请求登录。我需要能够以统一的方式生成UserIdentity和索赔,当我同时拥有MVC个人帐户模板和WebApi2个人帐户身份验证模板时,我感到困惑。我想在AWS托管的MongoDB实例中存储用户、索赔等。

ASP.NET MVC 5 and WebApi 2 Authentication

两个模板(mvc和api)都使用SigninManager和UserManager。标准的用户管理器实现是基于SQL Server和实体框架的。

如果你想在MongoDB上维护用户数据,我认为最好的解决方案是滚动你自己的UserStore来实现至少IUserStore和IUserRoleStore接口,或者使用这个nuget包

对于UserManager,您可以使用标准实现。

你正在使用的Asp.net身份是开源的,你可以看看codeplex (github上的一个,它是mvc 6)。

我认为处理你的情况的最好方法是:

  • 对于网站登录,对于标准的web用户,在一个标准的mvc控制器,让SignInManager完成工作;你可以使用模板
  • 附带的标准登录方法对于api登录,实现一个简单的OAuthAuthorizationServerProvider重写GrantResourceOwnerCredentials方法;这是一篇很好的文章,向您展示了所有步骤

希望这对你有帮助!

将成员资格提供者视为独立于用于开发应用程序的技术的。身份验证就是身份验证,它不依赖于特定的技术。

http://www.asp.net/identity/overview/getting-started/aspnet-identity-recommended-resources