我的用户将针对 Active Directory 或数据库使用表单例份验证。那里没有 Windows 集成身份验证!!
我想要的是当用户提交身份验证表单时,它将尝试根据 Active Directory 验证用户,如果失败,请尝试使用数据库。
我怎样才能做到这一点?我的想法是构建一个自定义成员(member)资格提供程序来封装逻辑,但我不知道如何开始。
还有更好的办法吗?
最佳答案
实现此目的的唯一方法是创建自定义提供程序。
在完美的世界中,您可以简单地创建一个外观提供程序,然后根据需要利用适当的提供程序、SQL 或 AD 来进行身份验证并将 MembershipUser
返回到您认为必要的任何完整性程度。
在现实世界中,这仍然是可能的,但您需要克服一些困难:
- 创建外观提供程序并将其首先放置在
membership
元素的providers
子元素中,并将其设置为中的defaultProvider >成员(member)
元素 - 正确配置SqlMembershipProvider和一个ActiveDirectoryMembershipProvider并将它们放置在您的立面之后。
- 从您的外观中,从静态
Membership.Providers
集合中访问已配置的提供程序,以根据需要执行功能。
您可能会发现,如果您需要使用角色,则需要重复此模式,虽然它适用,但实现会有点复杂,超出了本文的范围。
或者,可以找到 SQL 提供程序的完整源代码 here它们是实现工业级定制提供商的一个很好的起点和指导。
我建议首先探索阻力最小(以及最少的劳动和头痛)的路径,并在尝试从头开始实现自定义安全功能之前刺破外观。
祝你好运。
关于asp.net - 针对 AD 的混合模式身份验证,如果成员(member)提供商失败则回退到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232072/