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

时间:2014-11-12 16:27:46

标签: asp.net-mvc asp.net-web-api2 simplemembership

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

情况:

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

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

问题:

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

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

提前致谢。

1 个答案:

答案 0 :(得分:5)

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

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

现在关于您的会员提供商,我在帖子中使用ASP.NET Identity 2.0,要求这样做,您可以保留自定义数据库表或使用旧的成员资格提供程序。您可以在任何您喜欢的数据库存储中使用基于令牌的身份验证中的角色,这是件好事。

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