2

ActiveDirectoryMembershipProvider クラスを使用して、安全な LDAP システムに対してユーザーを作成/更新/認証する Web アプリケーションがあります。「サーバーが利用できません」というランダムなメッセージが表示されることを除いて、すべて正常に動作しているように見えます。例外。ユーザーがこのエラーを受け取った場合、すぐに再試行でき、機能します。

ネットワーク担当者にトラフィックを監視してもらい、Membership オブジェクトが LDAP への 2 つの安全な TCP 接続を作成することに気付きました (con1 と con2 と呼びます)。両方の接続が開いたままのように見えますが、con2 だけが通信を受信します。最終的に、con1 は LDAP サーバーからクローズ要求を送信します。このリクエストはランダムな間隔で発生するようです。エラーが発生すると、通常、エラーが発生する直前 (ミリ秒前) に con1 クローズ リクエストが表示されます。

MSDN のドキュメントを読みましたが、2 つの接続が開かれる理由と、接続が閉じられない理由、またはまだ稼働中であるという通知メッセージが送信されない理由がわかりません。これらの答えを知っている人はいますか?

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 注:小規模なベータ ウィンドウにいるため、現在は非常に少量のサービスを提供しています。

4

1 に答える 1