none
Windows 2008 r2+IIS7+.NET4.0 WEB系统登录域验证 偶尔不能成功的问题??? RRS feed

  • 问题

  • 我们的Windows 2008 r2开着防火墙的,入站开放的端口20, 21, 80, 4450-4500, 8000-9000 这些端口,出站方向不受限制,我们的WEB系统在登录的时候是使用的域验证来登录,一般时间都没有问题。只是有时候会与域验证不成功,导致无法登录。后来我给过各种测试,把防火墙给关掉了,似乎有十多天没有出现问题了。

    我想问一下,这种认证的方式在防火墙上需要开放什么端口么?(在入站方向上)(我查了一下,有人说要在本地服务器上开放88的TCP和UDP???不知道真假)


    2013年5月21日 6:40

全部回复

  • 你的怀疑以及你做的测试,未必能证明就是系统防火墙(网络端口阻挡)所致。

    除非,你系统防火墙配置为记录所有Drop,然后,根据发生故障的时间点,核对Log中是否真的有Drop。

    那么,你能证明吗?

    如果不能证明,那么,我觉得该换个思路去troubleshooting你的最初问题。

    2013年5月21日 6:54
  • 你说的对呀。我的怀疑并不一定是真正的原因,连我自己都不确信,因为我感觉跟防火墙没关系,因为我要验证的时候,我是发出申请,出站是不受限制的。

    我从防火墙的日志看到那个时间点,并没有drop的记录。

    换个思路就是我想去域控上看看,但是域控不在我们部门。所以一直也未能查找,我找过域控的部门,他们让我把域控所有的服务器的IP都加入到防火墙里并不限制任何端口,但是没有解决问题,还是报错。

    能请你再指一点下么,应该是去哪里查找这个问题。是本机还是域控。给个方向,最好能再具体一点。多谢。

    2013年5月21日 7:11
  • 首先需要你明确一下,你说的 “我们的WEB系统在登录的时候是使用的域验证来登录”

    这是否是指在IIS里的这个站点,配置为Windows集成身份验证?还是说,是通过你的代码去做某种与AD的交互?

    另外,很重要的一点是:你能随时重现这个问题吗?还是说,你只能在事后得知问题发生过,却没有机会在问题发生的当时去做一些排错?

    • 已编辑 Finy 2013年5月21日 10:14
    2013年5月21日 10:13
  • 您好!

    1、我们是使用代码去做某种与AD的交互的。部分代码如下:

     if (ADValidate.ValidateUser(ConfigurationSettings.AppSettings["ADAddress"], userName, password, ConfigurationSettings.AppSettings["Domain"]))
    
    <!--AD验证域名-->
    		<add key="Domain" value="abc"/>
    		<!--AD验证地址-->
    		<add key="ADAddress" value="ABC.COM.CN"/>

    我们的IIS在身份验证是这样设置的

    2、这个问题不能随时重现,我只能在事后得知问题发生过。没有机会在发生的当时去排错。因为用户登录不上系统,提示验证失败,我们收到消息后,看到系统报错,也无从下手。过个十几分钟就又好了。问题比较奇怪。

    2013年5月22日 1:20
  • 既然无法当场排错,那就必须做Logging,你可能有必要加一些代码来协助诊断:确认故障发生时,ValidateUser方法是否返回了?是否返回false?还是在ValidateUser方法中抛出了Exception?可否Catch到Exception信息?

    2013年5月22日 1:56
  • 您好!

    如果在服务器上经常出现该错误信息的话,建议您执行以下操作:

    1. 点击“开始->运行”并输入“SERVICES.MSC” ->确认RPC Locator的启动类型为“手动”,服务状态为“停止”。

    2. 运行Ipconfig /all 检查TCP/IP的配置,确保DNS服务器配置正确,请不要配置外部DNS服务器。

    更多信息您可以参考以下文章:

    在运行 Dcpromo.exe 后重新启动 Windows Server 2003 时系统事件日志中记录 ID 40960 40961 的事件

    http://support.microsoft.com/kb/823712/

    当您将服务器升级为域控制器角色时出现 LSASRV 事件 ID 40960 40961

    http://support.microsoft.com/kb/824217/zh-cn

    希望我的回答对您有所帮助。


    微软一站式示例脚本库: http://blogs.technet.com/b/onescript

    2013年5月22日 8:43
    版主
  • 既然无法当场排错,那就必须做Logging,你可能有必要加一些代码来协助诊断:确认故障发生时,ValidateUser方法是否返回了?是否返回false?还是在ValidateUser方法中抛出了Exception?可否Catch到Exception信息?

    好吧,等我建议开发组做一做尝试。感谢帮助。
    2013年5月23日 8:29
  • 您好!

    如果在服务器上经常出现该错误信息的话,建议您执行以下操作:

    1. 点击“开始->运行”并输入“SERVICES.MSC” ->确认RPC Locator的启动类型为“手动”,服务状态为“停止”。

    2. 运行Ipconfig /all 检查TCP/IP的配置,确保DNS服务器配置正确,请不要配置外部DNS服务器。

    更多信息您可以参考以下文章:

    在运行 Dcpromo.exe 后重新启动 Windows Server 2003 时系统事件日志中记录 ID 40960 40961 的事件

    http://support.microsoft.com/kb/823712/

    当您将服务器升级为域控制器角色时出现 LSASRV 事件 ID 40960 40961

    http://support.microsoft.com/kb/824217/zh-cn

    希望我的回答对您有所帮助。


    微软一站式示例脚本库: http://blogs.technet.com/b/onescript

    1.服务器状态正确,目前为停止,类型为手动

    2.这个好像不是问题的原因,我们这台服务器不是域控。

    2013年5月23日 8:30