ユーザーの電子メール アドレスをキーとして使用して、フォーム ベースの C# ログイン シナリオで任意の Windows アカウントを検索しています。ユーザーの検索は正常に機能し、派生したUserPrincipalEx
罰金が返されます。
ただし、バインドを使用してログインを検証しようとすると、常に成功します。
// we can't use ValidateCredentials because it's too broken - multiple attempts each time,
// can't always negotiate properly, etc.
//if (!_principalContext.ValidateCredentials(userPrincipal.UserPrincipalName, password)) {
// return LoginValidationResults.ValidationFailed;
//}
try {
using (var directoryEntry = new DirectoryEntry("LDAP://" + _domain + "/" + _principalContext.Container,
userPrincipal.UserPrincipalName, password, AuthenticationTypes.FastBind)) {
var forceBind = directoryEntry.NativeObject;
Log.DebugFormat("Validation successful ({0}).", forceBind);
return LoginValidationResults.Valid;
}
}
catch (COMException ex) {
if (ex.ErrorCode != -2147023570) {
Log.DebugFormat("Validation exception: {0}", ex.ToString());
throw;
}
Log.Debug("Validation failed.");
return LoginValidationResults.ValidationFailed;
}
いくつかのケースでは、私はそれらが何であるかまだわかりませんが、私が与えたパスワードに関係なく、アカウントは常に正常にバインドされます.
これはなぜですか?