我正在编写一个需要多种形式的身份验证的应用程序。
该应用程序将需要支持对Active Directory的身份验证,但是如果用户不在Active Directory中,则该应用程序将能够故障回复到SQL Membership Provider。我们可以根据提供的用户名使用代码处理SQL提供程序失败的原因,因为用户名的格式与Active Directory用户名的格式不同。
这有可能吗?我的意思是,我可以同时使用成员身份并同时使用ActiveDirectoryMembershipProvider和SqlMembershipProvider,还是必须自己滚动?
另一个增加的复杂性是,我想基于Windows身份验证自动验证我的内部用户回到AD,但是对不在我们内部网络上的用户或使用SQL Provider的用户使用窗体身份验证。
这些很有可能是一台单独的服务器,一台是内部的,另一台是外部的,因此我有很多计划要做,以弄清楚数据复制,以及如果AD用户访问外部服务器,我将如何对其进行身份验证等。
我想知道当我沿着这条路走时,那里有什么想法。如果我不自己动手,是否甚至想做些什么?或者是否有办法将它们网格化?
谢谢回复。
我最初询问的原因是,大约7年前,我能够使用IIS来进行身份验证,然后将凭据传递回Lotus Domino Server Web App。如果未通过Windows身份验证/ ISS对用户进行身份验证,则Domino将处理身份验证。这就是我想要在此处执行的操作,但实际上想不出一种使它在IIS中工作的方法。
至于您的其余答复,我认为您已经按照我的要求采取了行动。我已经考虑了这一点,并在我的脑海中抛了很多东西。无论如何,这两个服务器上的应用程序都将有所不同,因为总会限制对外部服务器上数据的访问。事实已经非常不同了,我可以将它们视为两个应用程序,这样就不必在同一应用程序中使用两种类型的身份验证了。
我正在考虑为外部服务器编写自己的身份验证/登录窗口的想法,如果用户尝试使用其AD凭据登录外部服务器,我将能够检测到该问题并将其重定向到内部服务器。如果它们不在本地网络上或不在VPN中,则根本无法访问。尽管这部分还需要一些思考过程,所以我不确定。
还有一个想法- 是否有一种方法可以将足够多的AD提取到SQL数据库中,以允许我使用用户的AD凭据从外部服务器对SQL数据库进行身份验证,而不会造成任何安全问题?我希望我清楚地输入了我的想法。
再次感谢!
提姆
这是我根据此信息处理类似情况的方式:
基本上发生的是,当未经身份验证的用户访问该站点时,他们将被重定向到WinLogin.aspx。由于匿名功能已关闭,因此集成安全性会进行检查。如果通过,则可以运行WinLogin中的自定义代码。如果集成安全性检查失败,则会发生401错误。您的自定义401页将重定向到Login.aspx,用户可以在其中使用其用户名和密码通过SQL提供程序登录。