C# ASP.NET を使用して MVC2 アプリケーションを開発しています。
私のアプリケーションでは、ユーザー認証に ActiveDirectoryMembershipProvider を使用しています。以下は、私の web.config ファイルのスニペットです。
接続文字列でグローバル カタログ ポート 3268 を使用すると、「GC ポートの LDAP 接続は Active Directory に対してサポートされていません」というエラーが表示されます。このエラー メッセージについて Google で検索しましたが、適切な解決策が見つかりませんでした。多くの人がポート 389 の使用を提案しており、コードの変更を提案している人もいます。しかし、GC ポートを使用して、ユーザーが別のフォレストに接続できるようにしたいと考えています。
いくつかの観察:
- 同じ接続文字列 (ポート 3268 を使用) は、私の会社の他のアプリケーションでも完全に機能しています。
- ポート 389 を指すように接続文字列を変更すると、完全に機能します。つまり、ローカル ドメインに属するユーザーはログインできます。ただし、別のドメインのユーザーはログインできません。
- AcconuntModel と AccountController にブレークポイントを設定しました。接続文字列がポート 3268 を指している場合、Membership.Provider は「ConfigurationErrorsException」をスローしました。
誰かがこの問題を解決するのを手伝ってくれれば、とても助かります。
web.config:
<add name="ADConnectionString" connectionString="LDAP://myADServer.abc.ad:389/DC=abc,DC=ad" />
<membership defaultProvider="MyADMembershipProvider">
<providers>
<clear />
<add connectionStringName="ADConnectionString" maxInvalidPasswordAttempts="1000" connectionUsername="ldapuser@abc.ad" connectionPassword="password" connectionProtection="None" enableSearchMethods="True" name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider,System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="MySqlMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider,MySql.Web,Version=6.5.4.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d" connectionStringName="MySqlMembershipConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" autogenerateschema="true" />
</providers>
</membership>
<!-- Added for custom provider -->
<roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="DDMS_Custom_RoleProvider">
<providers>
<clear />
<add applicationName="/" connectionStringName="ddms_dataEntities2" name="DDMS_Custom_RoleProvider" type="DDMS_sourcecode.Utilities.DDMS_Custom_RoleProvider, DDMS_sourcecode" />
<add connectionStringName="ApplicationServices" applicationName="/" autogenerateschema="true" name="MySqlRoleProvider" type="MySql.Web.Security.MySQLRoleProvider,MySql.Web,Version=6.5.4.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d" />
</providers>
</roleManager>