私は、識別名を使用してユーザーを検証するために、見つかったユーザーに再バインドするいくつかの機能する LDAP コードを持っています。事実上、これは起こっていることです:
string userDn = @"cn=Feat Studentl+umanroleid=302432,ou=Faculty of Engineering & Physical Sciences Administration,ou=Faculty of Engineering & Physical Sciences,ou=People,o=University of TestSite,c=GB";
string fullPath = @"LDAP://surinam.testsite.ac.uk:636/" + userDn;
DirectoryEntry authUser = new DirectoryEntry(fullPath, userDn, "mypassword", AuthenticationTypes.None);
authUser.RefreshCache();
ただし、これにより、DirectoryEntry.Bind() で不明なエラー 80005000 が発生します。
問題は、DN の CN 属性に「+」と「=」が含まれていることにあるのではないかと考えました。したがって、これをエスケープする方法は、\ と文字の 16 進値を使用する必要があることがわかった後、これを試しました。
string userDn = @"cn=Feat Studentl\2Bumanroleid\3D302432,ou=Faculty of Engineering & Physical Sciences Administration,ou=Faculty of Engineering & Physical Sciences,ou=People,o=University of TestSite,c=GB";
ただし、次のエラーが表示されます。
ログインの失敗: 不明なユーザー名または間違ったパスワード
これは、リクエストには満足しているが、何らかの理由でユーザー DN との一致に失敗しているためだと思います。
とにかくこのあたりはありますか?