В этой статье мы покажем, как удаленные пользователи самостоятельно могут менять свои истекшие пароли через с помощью специальной веб формы на сервере Remote Desktop Services (RDS) с ролью RD Web Access на Windows Server 2022/2019/2016/2012 R2.
Проблема смены истекшего пароля по RDP
В Windows Server 2012 R2 и выше по умолчанию включен механизм аутентификации на уровне сети NLA (Network Level Authentication, подробнее о нем здесь). Особенность этого метода аутентификации в том, что при включенном NLA пользователи с истекшим сроком действия пароля (или у которых в атрибуте пользователя useraccountcontrol включена опция смены пароля при первом входе) не смогут подключиться к RDP/RDS хосту. Конечно, вы можете отключить NLA ссылка1, ссылка2, но это не хорошо с точки зрения безопасности. При попытке подключится к серверу RDSH (Remote Desktop Session Host) с учетной записью пользователя, пароль которого истек, появляется такое сообщение об ошибке:
An authentication error has occurred. The Local Security Authority cannot be contacted Remote computer:xxxxxx This could be due to an expired password Please update your password if it has expired.
Получается, что при использовании NLA удаленные RDP пользователи не могут сменить свой истекший пароль, если у них нет других способов доступа в корпоративную сеть кроме RDS. Можно конечно, попросить пользователей заранее сменить свой пароль непосредственно в RDP сессии, или включить на RDS серверах политику Interactive logon: Prompt user to change password before expiration (Computer Configuration -> Windows Settings -> Local Policies -> Security Options), но, обычно это не всегда срабатывает из-за элементарной забывчивости пользователей.
В Windows Server 2012 R2 и выше удаленные пользователи могут самостоятельно сбросить свой пароль (текущий пароль или пароль с истекшим сроком действия) через специальную веб-страницу на сервере с ролью RD Web Access. Чтобы изменить пароль, пользователь должен аутентифицироваться под своей учетной записью на веб-странице регистрации RDS-WebAccess и с изменить свой пароль с помощью специальной aspx формы.
Разрешить смену истекшего пароля пользователя на RDWeb Access
Функционал удаленной смены пароля доступен на сервере с ролью Remote Desktop Web Access (RD Web Access), но по-умолчанию эта функция отключена.
Если у вас развернута ферма серверов RDS, вы можете найти сервер, на котором установлена роль RDS-WEB-Access, обратившись к RD Connection Broker:
Get-RDServer -ConnectionBroker srv-rdscb.winitpro.ru| where {$_.roles -eq "RDS-WEB-ACCESS"}
Для смены пароля используется сценарий в файле password.aspx, который находится в каталоге C:\Windows\Web\RDWeb\Pages\en-US.
Чтобы включить функцию смены пароля, нужно на сервере RD Web Access запустите консоль управления веб-сервером IIS Manager (inetmgr), перейдите в раздел [Server Name] –> Sites –> Default Web Site –> RDWeb –> Pages и откройте настройки приложения (Application Settings).
В правой панели найдите параметр с именем PasswordChangeEnabled и измените его значение на true.
Параметр PasswordChangeEnabled позволяет пользователям Active Directory сменить пароль через портал RD Web Access. Эта опция не позволяет сменить пароль локальных пользователей на RDS хостах в рабочей группе (без домена).
Перезапустите веб сервер IIS из консоли или с помощью команды:
IISRESET
Чтобы проверить доступность страницы смены, перейдите на веб-адрес:
https://[RD-WEB-1]/RDWeb/Pages/en-US/password.aspx
Укажите имя пользователя, старый пароль и дважды новый.
После успешной смены пароля пользователя должно появится сообщение:
Your password has been successfully changed.
Нажмите ОК, и пользователь будет перенаправлена на страницу входа RD Web.
Если пароль пользователя не соответствует парольной политике домена, появится окно с предупреждением:
Your new password does not meet the length, complexity, or history requirements of your domain. Try choosing a different new password.
Вывести и изменить поддерживаемые типы аутентификации можно в консоли IIS Manager. Выберите Sites -> Default Web Sites -> RDWeb -> Pages в правом окне выберите Forms Authentication.
Теперь при попытке подключиться к веб серверу RD Web Access с истекшим паролем, пользователь будет перенаправлен на веб-страницу password.aspx, на которой ему будет предложено сменить пароль.
Добавить ссылку на смену пароля на страницу входа Remote Desktop Web Access
Вы можете добавить ссылку на страницу с формой смены пароля можно непосредственно в веб-форму входа на сервер RDWeb. Благодаря этому пользователь в любой момент может самостоятельно изменить свой пароль, не дожидаясь окончания его срока действия.
Добавьте ссылку на файл password.aspx на страницу входа в систему (создайте копию файла login.aspx перед редактированием).
- На сервере RDWeb найдите и откройте в любом тестовом редакторе (я предпочитаю Notepad++) файл C:\Windows\Web\RDWeb\Pages\en-US\login.aspx;
- Перейдите на 429 строку (В Windows Server 2022 она находится после html блока
<tr id="trPasswordExpiredNoChange" <%=strErrorMessageRowStyle%> > ……..… </tr>
) и добавьте следующий код:
<!-- Start Add Link to Change Password -->
<tr>
<td align="right"> <a href="password.aspx" title="Change User Password">Click here </a>to change your password.
</td>
</tr>
<!-- End Add Link to Change Password --> - Сохраните изменения в файле login.aspx, перезапустите сайт IIS и проверьте, что на странице регистрации RD Web появилась ссылка на страницу смены пароля.
Теперь удаленные пользователи смогут самостоятельно менять истекший пароль RDS сервере без вмешательства администратора. Обратите внимание, что если вы используете закэшированные учетные данные (Cached Credentials) для входа на локальный компьютер, то после смены пароля через RDWeb они не будут обновлены.
проделал все как в статье, но при подключении получаю
«Ошибка сервера в приложении ‘/RDWeb/Pages’.
———————————————————————————
Не удалось найти данный ресурс.
Описание: HTTP 404. Возможно, искомый ресурс (или одна из его зависимостей) удален, получил другое имя или временно недоступен. Просмотрите следующий URL-адрес и проверьте, что он введен правильно.
Запрошенный URL: /RDWeb/Pages/en-US/password.aspx
«
У вас случайно не русская версия Windows Server?
Работает ли служба RD Web Access и открываются ли ее страницы?
Файл password.aspx имеется?
Разобрался, но отписался, действительно русская версия, по ссылке с ru-ru все работает
В тексте про password.aspx сказано про строку 583, на скриншоте строка 538.
В моём файле это тоже строка 538.
Вы правы, опечатался немного
у меня уже стоит разрешение. но пользователи самостоятельно не могут менять пароль. когда переходят по ссылке. нельзя ввести логин.
пароль можно изменить только в том случае если просрочен
Настроил всё по инструкции. После перехода на страницу смены пароля и ввода всех данных (логин, старый пароль, новый пароль) и нажатия кнопки «отправить» получаю ошибку «Вы ввели недопустимое имя пользователя или пароль.»
Скорее всего сложность пароля не соответствует доменной политике паролей
«Вы ввели недопустимое имя пользователя или пароль. Повторите ввод.»
Такая же проблема. Со сложностью всё хорошо. Подскажите, куда копать.
Всё по инструкции делалось
Всё. Разобрался.
dom.local\User — не хавается для смены пароля. Надо прописывать dom\User — тогда всё как по маслу
де це пропосувати дайте скрін
А есть способ ограничить группу людей, которым будет доступен такой вариант смены пароля? Например наличие пользователя в определенной группе или оюшке
Мне точно достаточно в строке 538 заменить текст
table border=»0″ cellspacing=»0″ cellpadding=»0″ style=»display:none» id=»tablePublicOption»
на мой
a href=»https://[RD-WEB-1]/RDWeb/Pages/en-US/password.aspx»> Смена пароля Смена пароля</a
выше в ссылки все переделалось
Настроил по инструкции, страница сброса пароля открывается, но при попытке сброса ничего не происходит (никаких ошибок и уведомлений). Не могли бы вы подсказать в какую сторону смотреть?
Попробуйте при смене пароля указать учетную запись в формате:
WINITPRO\username
Если не оно, включите политику аудита Audit Account Management в Computer Configuration — Policies -Windows Settings — Security Settings — Local Policy — Audit Policy
И смотрите события в журнале Security
спасибо за статью, все настроил, вопрос появился, а будет ли работать SSO при включении Form Auth?
Всё так, пользователя указываю с доменом, получаю ошибку: «Ваш пароль невозможно изменить. Обратитесь за помощью к администратору.» Может быть из-за того, что сервер не в Active Directory ?
Разобрались с проблемой? Возникла та же
Добрый день. пробую проделать тоже самое но на Windows 2012, не R2, ни чего не выходит такое чувство что просто нет нужных шаблонов в IIS скажите данная статья применима только R2 и выше?