ASP.Net(IIS 7.5)查询没有用户凭据的Active Directory
我有多个我为内联网构建的Web应用程序.我想让用户不必担心登录,因此这些应用程序会在当前登录的用户访问网站时将其拉出.我使用此代码实现此目的:
Dim userName As String = User.Identity.Name CurrentUser = userName.Substring(userName.IndexOf("") + 1) 这就像一个魅力,这里没有问题.下一步是查询该登录用户的Active Directory以提取各种信息.我目前如何编码,它的工作方式就像在devleopment方面的魅力(典型的是因为我没有运行IIS). 当我将其发布到我的IIS服务器(运行IIS 7.5的Windows Server 2008 R2)时出现问题,我收到的错误消息指向我的代码中查询Active Directory的特定行.有趣的是,这些应用程序上周运行良好.在我的服务器管理员执行了最新一批Windows更新后,他们破了(请注意,我使用.Net Framework 4.0运行它们) 在我为每个应用程序设置以便启用Windows身份验证之前,其他身份验证类型已被禁用.对于提供商,Negotiate是#1,NTLM是#2.对于高级设置,请选中“扩展保护=关闭”和“启用内核模式身份验证”. 我的web.config有以下设置: <customErrors mode="Off"/> <authentication mode="Windows" /> <authorization> <deny users="?"/> </authorization> 这些是我的设置,一切都像魅力一样.现在要让它有点工作我需要交换提供商,所以NTLM是#1,Negotiate是#2.因此,用户的凭据未正确传入,并且AD查询失败.这是我用于查询的编码: Dim adSearchRoot As New DirectoryEntry("LDAP://DC=[DOMAIN],DC=com") Dim adSearch As New DirectorySearcher(adSearchRoot) adSearch.Filter = "(&(ObjectClass=User)(sAMAccountName=" & CurrentUser & "))" Dim searchResult As SearchResult = adSearch.FindOne() 自更新以来,当前面的Negotiate加载网站时,它在底线上失败,因为我没有为DirectoryEntry设置用户名/密码.即使我设置了用户名/密码,它仍然不像过去那样100%工作. 所以我的问题变成了,我需要做什么才能让用户访问网站,我可以知道他们的用户名,并且可以查询活动目录而无需在DirectoryEntry中使用用户名/密码? 它是IIS中的设置吗? 感谢您的建议.如果您有任何问题要帮助回答这个问题,请告诉我. UPDATE 我尝试通过将以下剪辑添加到我的web.config文件中来建议Matt: <security> <authorization> <add accessType="Deny" users="?" /> </authorization> </security> 这没用.我做了一些阅读,然后进一步修改了这一部分: <location path="Default Web Site/NameOfApp"> <system.webServer> <security> <authentication> <anonymousAuthentication enabled="false"/> <windowsAuthentication enabled="true"> <providers> <add value="Negotiate" /> <add value="NTLM" /> </providers> </windowsAuthentication> </authentication> <authorization> <add accessType="Deny" users="?" /> </authorization> </security> </system.webServer> </location> 在这样做的过程中,我还删除了web.config部分中较高的字符串.这也没用(fyi,这是一个很好的参考http://www.iis.net/ConfigReference/system.webServer/security/authentication) 然后我跳过了这篇文章:http://social.technet.microsoft.com/Forums/en/winserverDS/thread/7deba16b-295a-4887-98f9-9f291ed49871,这似乎是一个类似的情况.本文最后引用了“Double Hops”,在研究了这个并尝试了一些事情之后,这也没有解决我的问题. 下一步 我将在不同的Server 2008 R2系统上尝试新的IIS 7.5实现,并且基本上从头开始,以查看问题是否重新创建. 任何新的建议都会有很大的帮助. 解决方法
我能够在Windows 2008 Server上执行代码而不会出现任何问题.我创建了一个新的.NET 4.0应用程序池并将其分配给Web应用程序.我更改了web.config以拒绝匿名访问并使用Windows身份验证.代码执行无例外.
看看你的web.config剪辑,我想知道这可能是你所缺少的: <system.webServer> <security> <authorization> <add accessType="Deny" users="?" /> </authorization> </security> </system.webServer> 在system.webServer部分中拥有此授权部分非常重要. IIS 7使用system.webServer部分存储一些属于IIS 6中元数据库的设置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC集成EntLib实现“自动化”异常处理[实现篇]
- asp.net-mvc – 在EditorTemplate中渲染字段名称(通过Edito
- asp.net – 创建一个包含两列值的VB.NET数组?
- asp.net-mvc – 适当地url编码空间字符
- asp.net-mvc – 使用Asp.Net MVC的Ajax?
- asp.net – Context.Response.End()和Thread正在中止
- asp.net – 下拉列表重置SelectedValue
- asp-classic – 服务器对象错误’ASP 0177:800401f3’Serv
- asp.net-mvc – ASP.NET MVC 5和HTML 5根据W3C规范形成属性
- 将ASP.NET标识存储库移动到EF Sql数据库
- asp.net – Visual Studio加载项自动附加到Devel
- asp.net表单身份验证重定向问题
- asp.net – 拥有专用应用程序池,将Web应用程序保
- asp.net – 我们可以用IIS运行Selenium WebDrive
- asp.net – 设置Orchard开发工作区
- asp.net-mvc-3 – 返回404错误ASP.NET MVC 3
- asp.net-mvc – Globalize.addCultureInfo不是一
- ASP.NET Forms身份验证超时
- asp.net – __doPostBack在DotNetNuke网站上未定
- asp.net-mvc-5 – 使用ASP.NET MVC 5的Okta OWIN