
В этой статье мы покажем, как удаленные пользователи могут менять свои просроченные пароли с помощью специальной веб-формы на сервере Remote Desktop Services (RDS) с ролью RD Web Access на Windows Server 2022/2019/2016/2012 R2.
Невозможно изменить просроченный пароль в сеансе удаленного рабочего стола
В Windows Server 2012 R2 и более новых версиях в меню NLA (Network Level Authentication) по умолчанию включена для подключений к удаленному рабочему столу. NLA не позволяет пользователям подключаться к хостам RDP/RDS, если срок действия их паролей истек или если они имеют «Пользователь должен изменить пароль при первом входе в систему» включена опция в атрибуте пользователя useraccountcontrol. Вы можете отключить NLA (ссылка1, ссылка2), но это не очень хорошо с точки зрения безопасности. При попытке подключиться к серверу RDSH (Remote Desktop Session Host) под учетной записью пользователя с истекшим паролем появляется следующее сообщение об ошибке:
An authentication error has occurred. The Local Security Authority cannot be contacted Remote computer: lonSrvRDS1 This could be due to an expired password Please update your password if it has expired.
При использовании NLA удаленные пользователи RDP не могут изменить свой просроченный пароль, если у них нет другого способа доступа к корпоративной сети, кроме инфраструктуры RDS. Конечно, можно заранее попросить пользователей сменить пароль непосредственно в сеансе RDP или включить функцию Интерактивный вход: Предложение пользователю сменить пароль до истечения срока действия GPO-параметр хостов RDS (Computer Configuration -> Windows Settings -> Local Policies -> Security Options), но он не всегда работает из-за обычной забывчивости пользователей.
В Windows 2012 R2 и более новых версиях удаленные пользователи могут вручную сбросить свой пароль (текущий или истекший) через специальную веб-страницу на сервере с помощью команды Веб-доступ к удаленному рабочему столу роль. Чтобы изменить пароль, пользователь должен пройти аутентификацию на веб-странице входа в RDS-WebAccess и изменить пароль с помощью специальной формы aspx.
IISADMPWD
(хотя официально это не поддерживалось).Как разрешить удаленному пользователю сбросить просроченный пароль на хосте RDWeb Access?
Опция удаленной смены пароля доступна на сервере с ролью Remote Desktop Web Access (RD Web Access), но по умолчанию эта функция отключена.
Если у вас развернута ферма серверов RDS, вы можете найти сервер с установленной ролью RDS-WEB-Access, подключив конфигурацию развертывания на узле RD Connection Broker:
Get-RDServer -ConnectionBroker rdcb1.woshub.com| where {$_.roles -eq "RDS-WEB-ACCESS"}
Чтобы изменить пароль, используйте сценарий в password.aspx файл, расположенный в C:\Windows\Web\RDWeb\Pages\en-US.
- C:\Windows\Web\RDWeb\Pages\fr-FR — для французского издания Windows Server
- C:\Windows\Web\RDWeb\Pages\de-DE — для немецкого издания.
Чтобы включить опцию смены пароля, необходимо выполнить команду Диспетчер IIS консоль (inetmgr
) на сервере с настроенной ролью RD Web Access. Перейдите к [Server Name] -> Сайты -> Веб-сайт по умолчанию -> RDWeb -> Страницы и откройте Настройки приложения раздел.
В правой панели найдите PasswordChangeEnabled параметр и измените его значение на истина.

Сайт PasswordChangeEnabled параметр позволяет пользователям Active Directory изменять свой истекший пароль через портал RD Web Access. Этот параметр не позволяет изменять пароль локальных пользователей на хостах RDS в среде рабочей группы (без домена).
Перезапустите веб-сервер IIS из консоли или воспользуйтесь командой:
iisreset
Чтобы проверить доступность страницы смены пароля, перейдите на следующую веб-страницу:
https://lonSrvRDS1/RDWeb/Pages/en-US/password.aspx
Введите имя пользователя, старый пароль и новый пароль дважды.
После успешного изменения пароля пользователя должно появиться следующее сообщение:
Your password has been successfully changed.
Нажмите OK, и пользователь будет перенаправлен на страницу входа в RD Web. Если пароль пользователя не соответствует политике паролей домена, появится предупреждающее сообщение:
Your new password does not meet the length, complexity, or history requirements of your domain. Try choosing a different new password.
Теперь при попытке подключиться к серверу RD Web Access с истекшим паролем пользователь будет перенаправлен на веб-страницу password.aspx и ему будет предложено сменить пароль.
Добавление ссылки на изменение пароля в форму входа в RD Web Access
Вы можете добавить ссылку на форму смены пароля прямо в форму входа в Remote Desktop WebAccess. Это позволит пользователям менять пароль в любое время, не дожидаясь окончания срока его действия.
Вставьте ссылку на файл password.aspx на страницу входа в RDWeb (перед редактированием создайте резервную копию файла password.aspx).
- На сервере RDWeb найдите и откройте файл C:\Windows\Web\RDWeb\Pages\en-US\login.aspx в любом текстовом редакторе (я предпочитаю Notepad++);
- Перейдите к строке 429 (в Windows Server 2022 она находится после следующего блока HTML
<tr id="trPasswordExpiredNoChange" <%=strErrorMessageRowStyle%> > … </tr>
) и вставьте следующий код: <!-- Begin: Add Change Password Link -->
<tr>
<td align="right"> <a href="https://woshub.com/allow-users-to-reset-expired-password-via-rd-webaccess-windows-server-2012/password.aspx" title="Change AD User Password">Click here </a>to change your password.
</td>
</tr>
<!-- End: Add Change Password Link -->- Сохраните изменения в файле login.aspx, перезапустите веб-сайт IIS и убедитесь, что ссылка на страницу смены пароля появилась на странице входа на веб-сервере RD.
Удаленные пользователи теперь могут менять истекший пароль на сервере RDS без вмешательства администратора. Обратите внимание, что если вы используете кэшированные учетные данные домена для входа на локальный компьютер, они не будут обновлены после изменения пароля Active Directory через RDWebAccess.