3 Stimmen

ASP.NET ChangePassword-Steuerelement mit ActiveDirectoryMembershipProvider

Ich habe eine Webapp, die Forms Authentication mit ActiveDirectoryMembershipProvider verwendet. Das funktioniert gut... Benutzer können sich erfolgreich anmelden.

Sobald der Benutzer sich angemeldet hat, kann er sein Passwort ändern. Wir verwenden ein ChangePassword-Steuerelement, das die Mitgliedschaftsinformationen abruft und das alte und neue Kennwort verwendet, um das Kennwort des Benutzers zu ändern. DAS funktioniert nicht .

Die ausgelöste Ausnahmemeldung besagt, dass das Kennwort nicht den Kennwortrichtlinien entspricht (nicht die Meldung des Anbieters, sondern das zugrunde liegende COM-Objekt). Dies ist jedoch nicht der Fall, denn wenn man die ActiveDirectory-Konsole aufruft und das Kennwort dort ändert, funktioniert es. Bei der Verwendung der ActiveDirectory-Konsole haben wir ein recht einfaches Kennwort verwendet: "Password01".

Der Benutzer in ActiveDirectory ist auf Kennwortänderung zulassen eingestellt. Alle unsere Benutzer sind in einer bestimmten OU gespeichert und der Verbindungsstring zum AD verweist ebenfalls auf diese OU. Auch hier ist die Verbindung erfolgreich und wir können uns anmelden.

Gibt es noch etwas, das uns daran hindern kann, das Passwort zu ändern?

Informationen zu Ausnahmen

    System.Web.Security.MembershipPasswordException: The password supplied is invalid.
Passwords must conform to the password strength requirements configured for the default provider.
---> System.Runtime.InteropServices.COMException (0x800708C5): The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements. (Exception from HRESULT: 0x800708C5)
       --- End of inner exception stack trace ---
       at System.Web.Security.ActiveDirectoryMembershipProvider.ChangePassword(String username, String oldPassword, String newPassword)
       at System.Web.Security.MembershipUser.ChangePassword(String oldPassword, String newPassword)

4voto

Romias Punkte 13327

Nun, entschuldigen Sie die Unannehmlichkeiten...

Das Problem war, dass der Active Directory-Administrator eingestellt hatte, dass man einen Tag warten bevor Sie das Passwort ändern.

Wenn wir also einen Benutzer anlegen... muss der BENUTZER 1 Tag warten, um sein Passwort zu ändern. Der Administrator kann ein Passwort ohne diese Einschränkung zurücksetzen.

Vielen Dank für Ihre Kommentare.

1voto

jellomonkey Punkte 1964

Wenn Sie den Membership Provider in der web.config konfigurieren, können Sie mehrere passwortbezogene Werte festlegen, nämlich

MinRequiredNonAlphanumericCharacters
MinRequiredPasswordLength
PasswordStrengthRegularExpression

Ich würde zunächst sicherstellen, dass alle diese Werte mit denen von ActiveDirectory übereinstimmen.

Vergewissern Sie sich als Nächstes, dass das Attribut connectionProtection auf SignAndSeal gesetzt ist, da Sie sonst keine Passwörter ändern können:

connectionProtection="SignAndSeal"

Neben diesen Vorschlägen habe ich in Reflector nachgesehen, und alle COM-Fehler (außer 0x7FF8FAD2) werden direkt an den Client weitergeleitet. Der Fehler 0x800708C5 erscheint im MSDN an mehreren Stellen, aber immer mit dem Text, dass die Kennwortkomplexität nicht ausreichend ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X