gpt4 book ai didi

ASP.NET 应用程序通过 Windows 身份验证或表单例份验证对 Active Directory 或 SQL 进行身份验证

转载 作者:行者123 更新时间:2023-12-01 16:19:34 26 4
gpt4 key购买 nike

我正在编写一个需要多种形式的身份验证的应用程序。

应用程序需要支持对 Active Directory 的身份验证,但如果用户不在 Active Directory 中,则能够故障回复到 SQL 成员资格提供程序。我们可以根据提供的用户名在代码中处理 SQL 提供程序的失败,因为用户名与 Active Directory 用户名的格式不同。

这甚至可能吗?我的意思是,我可以使用成员(member)资格并同时使用 ActiveDirectoryMembershipProvider 和 SqlMembershipProvider 还是我必须自己推出?

另一个额外增加的复杂性是,我希望基于 Windows 身份验证自动对我的内部用户进行身份验证返回 AD,但对不在我们内部网络上的用户或使用 SQL 提供程序的用户使用表单例份验证。

这些很可能是单独的服务器,一个是内部的,另一个是外部的,所以我有很多计划要做来弄清楚数据复制,以及如果 AD 用户访问外部服务器等,我将如何对其进行身份验证。

我想知道当我开始走这条路时会有什么想法。如果我不自己动手,我想要做的事情是否可行,或者有没有办法将它们结合在一起?

谢谢回复。

我最初询问的原因是因为我能够在大约 7 年前使用 IIS 进行身份验证,然后将凭据传回给 Lotus Domino Server Web App 使这个特定的 senerio 工作。如果用户未通过 Windows 身份验证/ISS 进行身份验证,则 Domino 将处理身份验证。这就是我在这里想要做的,但真的想不出一种方法让它在 IIS 中工作。

至于您回复的其余部分,我认为您正在按照我需要的方式进行。我已经仔细考虑过这一点,并在我的脑海中反复折腾。无论如何,两台服务器上的应用程序都会有所不同,因为无论如何对外部服务器上的数据的访问都是有限的。事实上,已经有这么多不同了,我可能只是将它们视为两个应用程序,因此无论如何都不需要在同一应用程序中使用两种类型的身份验证。

我正在考虑为外部服务器编写自己的身份验证/登录窗口的想法,如果用户尝试在外部服务器上使用他们的 AD 凭据登录,我将能够检测到并将它们重定向到内部服务器。如果他们不在本地网络或 VPN 中,他们将无法访问。这部分仍然有一些思考过程,所以我不确定。

作为一个额外的想法 - 有没有一种方法可以将足够多的 AD 提取到 SQL 数据库中,以允许我使用他们的 AD 凭据从外部服务器对 SQL 数据库的用户进行身份验证,而不会产生任何安全问题?我希望我能清楚地输入我的想法......

再次感谢!

蒂姆

最佳答案

这是我根据 this info 处理类似情况的方式:

  • 将应用程序配置为使用表单例份验证。
  • 将 LoginUrl 设置为名为 WinLogin.aspx 的页面。
  • 在 WinLogin.aspx 中,使用 Request.ServerVariables["LOGON_USER"] 获取用户名,然后调用 FormsAuthentication.RedirectFromLoginPage(authorizedUserName, false) 来登录。我想您也可以手动检查 Active Directory 作为这一点。
  • 创建一个 html 页面,重定向到名为 Login.aspx 的页面
  • Login.aspx 是您的标准用户名/密码登录。
  • 在 IIS 中,在整个站点上启用集成身份验证和匿名,但拒绝对 WinLogin.aspx 的匿名访问。
  • 在 IIS 中,将 401 错误设置为在步骤 3 中创建的页面。

  • 基本上发生的情况是,当未经身份验证的用户访问该站点时,他们会被重定向到 WinLogin.aspx。由于匿名被关闭,集成安全性进行检查。如果通过,您在 WinLogin 中的自定义代码可以运行。如果集成安全检查失败,则会出现 401 错误。您的自定义 401 页面重定向到 Login.aspx,用户可以在其中使用他们的用户名和密码通过 SQL 提供程序登录。

    关于ASP.NET 应用程序通过 Windows 身份验证或表单例份验证对 Active Directory 或 SQL 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/306652/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com