asp.net - 针对 AD 的混合模式身份验证,如果成员(member)提供商失败则回退到数据库

标签 asp.net authentication asp.net-membership forms-authentication mixed-mode

我的用户将针对 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/

相关文章:

c# - 如何将 "NULL/DbNull"发送到数据类型为 : nullable int 的表列中

asp.net - 在 SQLServer 作为 sessionState 模式的 ASP.NET 中,如何处理 session 对象超时?

javascript - 设置textarea显示:none loses the value when trying to save

django - 使用带有 token 而不是 Cookie 的 Django session 框架?

asp.net - 如何向 Azure SQL 的 ASP.NET 成员资格提供程序添加重试逻辑?

authentication - ASP.NET 成员资格 : to be or not to be?

javascript - 回发后刷新图像路径

authentication - 为什么我无法连接到 ssh 反向隧道?

reactjs - 在 React 前端中使用 oidc-client.js 和 Identityserver4 进行身份验证

asp.net - 创建新用户时 ASP .NET 成员资格自定义错误消息?