【问题标题】:ActiveDirectoryMembershipProvider Random ErrorsActiveDirectoryMembershipProvider 随机错误
【发布时间】:2012-08-24 22:10:01
【问题描述】:

我有一个 Web 应用程序,它使用 ActiveDirectoryMembershipProvider 类针对安全的 LDAP 系统创建/更新/验证用户。除了我们得到随机的“服务器不可用”之外,一切似乎都运行良好。例外。当用户收到此错误时,他们可以立即重试,并且可以正常工作。

我让我们的网络人员监控流量,我们注意到 Membership 对象创建了 2 个到 LDAP 的安全 TCP 连接(我们将它们称为 con1 和 con2)。两个连接似乎都保持打开状态,但只有 con2 接收到任何通信。最终 con1 会从 ldap 服务器发送一个关闭请求。此请求似乎是随机发生的。当我们看到错误时,我们通常会在错误发生之前(毫秒之前)看到 con1 关闭请求。

我已经阅读了 MSDN 文档,但无法弄清楚为什么它会打开 2 个连接,以及为什么它没有关闭它们或发送一条通知消息,表明它仍在运行。有人知道这些答案吗?

我的第二个问题是我能做些什么来解决这个问题?我知道我可以重新请求验证,但我不希望我必须这样做。下面是示例代码。

配置

<add name="ADConnectionString" connectionString="LDAP://FullyQualifiedServerName:636/OU=XXX,DC=XXX,DC=XXX" />
<add name="ADMembershipProvider"    
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
 connectionStringName="ADConnectionString" 
 connectionUsername="CN=XXX,OU=XXX,DC=XXX,DC=XXX" connectionPassword="XXXXXX" 
 connectionProtection="Secure" enableSearchMethods="true" enablePasswordReset="true" 
 requiresQuestionAndAnswer="true" applicationName="XXXX" 
 description="Default AD connection" requiresUniqueEmail="false" 
 clientSearchTimeout="30" serverSearchTimeout="30" attributeMapPasswordQuestion="xxx" 
 attributeMapPasswordAnswer="xxxx" attributeMapFailedPasswordAnswerCount="xxxx" 
 attributeMapFailedPasswordAnswerTime="xxxx" 
 attributeMapFailedPasswordAnswerLockoutTime="xxxx" attributeMapEmail="mail" 
 attributeMapUsername="userPrincipalName" maxInvalidPasswordAttempts="7" 
 passwordAttemptWindow="1" passwordAnswerAttemptLockoutDuration="5" 
 minRequiredPasswordLength="8" minRequiredNonalphanumericCharacters="0" 
 passwordStrengthRegularExpression="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{8,20}$" />

代码

return Membership.Providers["ADMembershipProvider"].ValidateUser(userName, userPassword);

环境:Windows Server 2008、IIS 7.0、.NET 4.0 注意我们目前的服务量非常低,因为我们处于一个小的测试窗口中。

【问题讨论】:

  • 只有评论和覆盖面。您确定您的 PDC 和 BCD 已启动吗?你确定你的 PDC 和 BDC 是同步的吗?当 PCD 和 BDC 不同步时,我在 Citrix 中看到了类似的症状。

标签: .net active-directory connection


【解决方案1】:

这似乎是 ActiveDirectoryMembershipProvider 类中的一个错误。我们最终切换到 Common.LdapAuth.LdapAuthProvider 类来验证用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2016-05-23
    • 2012-02-16
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多