使用基本身份验证将现有成员身份/角色提供程序添加到新WebAPI

Ind*_*nes 2 asp.net-mvc simplemembership asp.net-web-api2

好吧显然,当谈到WebAPI项目和现有数据库时,没有关于"基本认证"的"基本"......但我离题了.

情况:

现有的asp.net网站应用程序(WSP),具有较旧的.net成员资格,提供用户角色和表单身份验证.

将此数据库与新的WebAPI 2.2应用程序一起使用,其中包括代码优先迁移,MVC5良好等等,并且我希望使用诸如[授权]和基于角色的属性之类的东西来控制对集成伙伴将调用的各种方法的访问.

题:

我应该从我的其他绿地MVC应用程序导入IdentityModel类,然后将这些现有用户/角色导入到这些"简单成员资格"表中,或者您是否建议只添加现有的成员资格表/模型以及可能的自定义成员资格提供程序?

如果是后者,有人可以指点我的文章或回答他们这样做了吗?我认为我的头脑正在旋转,即使我确实设法谷歌正确的东西我不认为我会看到它.

提前致谢.

Tai*_*deh 5

我不建议对Web API使用基本身份验证,您最终会在Authorization标头中为每个请求发送用户名/密码,这将强制使用您的API的客户端应用程序在本地存储用户名/密码以实现您的API需求,您无法控制这些应用程序,也不知道它们将如何存储这些凭据

我的建议是检查基于承载令牌的身份验证,这是您应该遵循的正确方法,如果您正在寻找简单的东西并且可以被视为基本身份验证的替代,那么您需要实现一个名为"OAuth 2.0"的流程资源所有者凭据流 ".这个流程的想法非常简单,您只需要将用户名/密码与一段时间后到期的承载令牌(加密和签名字符串)进行交换,然后您继续在Authorization标头中发送此字符串(令牌)对于每个请求.我编写了详细的博客文章,名为" 使用ASP.NET Web API 2进行基于令牌的身份验证 ".希望它对你的情况有用.

现在关于您的会员供应商,我使用ASP.NET 2.0的身份在后,你是不是需要做到这一点,你可以保持您的自定义数据库表或使用旧的成员提供.您可以在任何您喜欢的数据库存储中使用基于令牌的身份验证中的角色,这是件好事.

如果您使用ASP.NET标识会更容易,但如果您不想将数据迁移到新的成员资格系统,它将会起作用.您将结束编写额外的代码行来实现此目的.希望这能回答您的问题,如果您需要进一步的帮助,请告诉我.