IADsUser::ChangePassword() schlägt seit Kurzem fehl
Seit dem 09. Oktober 2016 kann es vorkommen, dass Skripte oder Webseiten, welche Passwortänderungen für Benutzer durchführen, nicht mehr funktionieren. Dies kann aus der Verwendung der IADsUser::ChangePassword()-Methode in Verbindung mit dem ADSI WinNT Provider und dem Sicherheitsupdate KB3167679 vom 09.08.2016 resultieren. Mit dem Update wurden bestimmte Fallbacks bei der Authentifizierungsaushandlung deaktiviert, um unter anderem Downgradeangriffe zu verhindern. Der ADSI WinNT Provider verwendet unter bestimmten Umständen eine nun verbotene Authentifizierungsstrategie und resultiert ab nun in einem Fehler mit dem Errorcode: -2147023631 (ERROR_DOWNGRADE_DETECTED).
Errorcode bestimmen
Um dies als Ursache zu bestätigen, sollte zunächst der Errorcode wie folgt überprüft werden:
Um den Fehler ERROR_DOWNGRADE_DETECTED zu vermeiden, kann zum ADSI?LDAP?Provider gewechselt werden, welcher eine andere (erlaubte) Authentifizierungsstrategie verfolgt:
Microsoft ist das Problem bekannt und stellt einen Fix in Aussicht: [1] unter dem Abschnitt Bekanntes Problem 3.
[1] https://support.microsoft.com/de-de/kb/3167679
[2] http://www.selfadsi.de/search.htm#Execute
Errorcode bestimmen
Um dies als Ursache zu bestätigen, sollte zunächst der Errorcode wie folgt überprüft werden:
set objUser = GetObject("WinNT://domain.local/foobar,user")
If (Err.Number<>0) Then
MsgBox("An error has occurred while connecting to the server: " & Err.Number)
End If
objUser.ChangePassword "altesPw!", "neuesPw!"
If (Err.Number<>0) Then
MsgBox("An error has occurred while changing the password: " & Err.Number)
End If
Workaround
Um den Fehler ERROR_DOWNGRADE_DETECTED zu vermeiden, kann zum ADSI?LDAP?Provider gewechselt werden, welcher eine andere (erlaubte) Authentifizierungsstrategie verfolgt:
set objUser = GetObject("LDAP://CN=foobar,CN=Users,DC=domain,DC=local")Hierbei ist allerdings zu beachten, dass der LDAP-Provider (im Gegensatz zum WinNT-Provider) die Hierarchie der Domäne mit abbildet. Je nach Struktur der Domäne könnte daher noch eine ADODB-Abfrage [2] nötig werden, welche den DistinguishedName des gesuchten Users bestimmt.
Fix
Microsoft ist das Problem bekannt und stellt einen Fix in Aussicht: [1] unter dem Abschnitt Bekanntes Problem 3.
[1] https://support.microsoft.com/de-de/kb/3167679
[2] http://www.selfadsi.de/search.htm#Execute
MEHR BLOG-KATEGORIEN
- ASP.NET
- Active Directory
- Administration Tools
- Allgemein
- Backup
- ChatBots
- Configuration Manager
- DNS
- Data Protection Manager
- Deployment
- Endpoint Protection
- Exchange Server
- Gruppenrichtlinien
- Hyper-V
- Intune
- Konferenz
- Künstliche Intelligenz
- Linux
- Microsoft Office
- Microsoft Teams
- Office 365
- Office Web App Server
- Powershell
- Remote Desktop Server
- Remote Server
- SQL Server
- Sharepoint Server
- Sicherheit
- System Center
- Training
- Verschlüsselung
- Virtual Machine Manager
- Visual Studio
- WSUS
- Windows 10
- Windows 8
- Windows Azure
- Windows Client
- Windows Server
- Windows Server 2012
- Windows Server 2012R2
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
- Zertifikate