当前位置:  开发笔记 > 后端 > 正文

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

如何解决《ASP.NET应用程序通过Windows身份验证或表单身份验证对ActiveDirectory或SQL进行身份验证》经验,为你挑选了1个好方法。

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

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

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

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

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

当我开始走这条路时,我想知道那里有什么想法.如果没有我自己的想法,我想要做什么,或者有没有办法将它们融合在一起?


谢谢回复.

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

至于你的其他答复,我认为你正在采取我需要采取的方式.我已经想到了这一点,并把它扔在了我脑海里.无论如何,应用程序在两台服务器上会有所不同,因为无论如何都会限制对外部服务器上的数据的访问.事实上,这种情况将会有所不同,我可能只将它们视为两个应用程序,从而无需在同一个应用程序中使用两种类型的身份验证.

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

另外一个想法 - 是否有一种方法可以将足够的AD拉入SQL数据库,以允许我使用其AD凭据从外部服务器对SQL数据库的用户进行身份验证,而不会产生任何安全问题?我希望我能清楚地输入我在想的内容......

再次感谢!

蒂姆



1> Greg..:

这是我基于这个信息处理类似情况的方式:

    配置应用程序以使用Forms身份验证.

    将LoginUrl设置为名为WinLogin.aspx的页面.

    在WinLogin.aspx中,使用Request.ServerVariables ["LOGON_USER"]获取用户名,然后调用FormsAuthentication.RedirectFromLoginPage(authorizedUserName,false)将其登录.我猜你也可以手动检查Active Directory作为这一点.

    创建一个重定向到名为Login.aspx的页面的html页面

    Login.aspx是您的标准用户名/密码登录.

    在IIS中,在整个站点上启用集成身份验证和匿名,但拒绝匿名访问WinLogin.aspx.

    在IIS中,将401错误设置为在步骤3中创建的页面.

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

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有