asp.net-mvc - 使用基本身份验证将现有成员资格/角色提供者添加到新的 WebAPI

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

好吧,显然,当涉及到 WebAPI 项目和现有数据库时,“基本身份验证”并没有什么“基本”……但我离题了。

情况:

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

将此数据库与新的 WebAPI 2.2 应用程序一起使用,并具有代码优先迁移、MVC5 优点等,我想使用 [Authorize] 和基于角色的属性等内容来控制对我们的集成合作伙伴将调用的各种方法的访问。

问题:

我应该从我的其他新建 MVC 应用程序之一导入 IdentityModel 类,然后将这些现有用户/角色导入到这些“简单成员资格”表中,还是建议您仅添加可能具有自定义成员资格的现有成员资格表/模型提供商?

如果是后者,有人可以给我指出一篇文章或回答他们在哪里完成此操作吗?我觉得我的头在旋转,即使我确实设法在谷歌上搜索到正确的东西,我也不认为我会看到它。

提前致谢。

最佳答案

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

我的建议是检查基于承载 token 的身份验证,这是您应该遵循的正确方法,如果您正在寻找简单的方法并且可以被视为基本身份验证的替代品,那么您需要实现仅 OAuth 2.0 的一个流程,名为“资源所有者凭据流程”。此流程的想法非常简单,您需要做的就是将用户名/密码与不记名 token (加密和签名的字符串)交换,该 token 在一定时间后过期,然后继续在授权 header 中发送此字符串( token )对于每个请求。我已经编写了有关此名为“Token Based Authentication using ASP.NET Web API 2”的详细博客文章。希望它对您的案例有用。

现在关于您的成员(member)提供程序,我在帖子中使用 ASP.NET Identity 2.0,您不需要这样做,您可以保留自定义数据库表或使用旧的成员(member)提供程序。好处是您可以将基于 token 的身份验证中的角色与您喜欢的任何数据库存储一起使用。

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

关于asp.net-mvc - 使用基本身份验证将现有成员资格/角色提供者添加到新的 WebAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26891774/

相关文章:

asp.net - 在 SimpleMembership 中验证用户

asp.net-mvc-3 - WebSecurity.CreateUserAndAccount Sql 整理问题

c# - .NET MVC4 SimpleMembershipProvider - 覆盖密码加密/存储?

c# - 类型 'System.Web.Mvc.MvcWebRazorHostFactory' 的表达式不能用于返回类型 'System.Web.WebPages.Razor.WebRazorHostFactory'

asp.net-mvc - MVC4 DataType.Date EditorFor 不会在 Chrome 中显示日期值,但在 Internet Explorer 中正常

c# - 不支持服务类型 IAssembliesResolver。参数名称 : serviceType

c# - 替换 Web Api 2.2 类型转换中的默认错误消息

asp.net-web-api - 来自 Word Web 加载项 (Office.Js) 的 API 调用不起作用 : CORS Issue?

javascript - 将 razor enumdropdownlistfor 转换为 Bootstrap 按钮组下拉列表

c# - 等待 Parse 中的 query.FindAsync() 不起作用