Single Sign-On ( SSO — технология единого входа) это технология, которая позволяет уже аутентифицированному (вошедшему в систему) пользователю получать доступ к другим сервисам без повторной аутентификации (без повторного ввода пароля) и не используя сохранные пароли для RDP . SSO можно использовать при подключения к терминальным серверам Remote Desktop Services . Это позволит избавить пользователя, выполнившего вход на доменном компьютере, от многократного ввода имени и пароля своей учетной записи в окне RDP клиента при подключении к RDS серверам или запуске опубликованных приложений RemoteApp.
В этой статье мы покажем, как настроить прозрачную авторизацию (Single Sign-On) для пользователей RDS серверов под управлением Windows Server 2022/2019/2016.
Требования к окружению:
- Сервер RD Connection Broker и все RDS хосты должны работать под управлением Windows Server 2012 и выше;
- В качестве клиентских рабочих станций можно использовать Windows 11,10,8.1 с редакциями Pro/Enterprise;
- SSO работает только в доменном окружении: нужно использоваться учетные записи пользователей Active Directory, все RDS сервера и рабочие станции должны быть добавлены в один домен AD ;
- На клиентах должна использоваться версия клиента RDP 8.0 и выше;
- SSO работает с парольной аутентификацией (смарт карты не поддерживаются);
- Уровень безопасности RDP (Security Layer) в настройках подключения должен быть установлен в Negotiate или SSL (TLS 1.0), а шифрование High или FIPS Compliant.
Процедура настройки Single Sign-On состоит из следующих этапов:
- Необходимо выпустить и назначить SSL сертификат на серверах RD Gateway, RD Web и RD Connection Broker;
- Включить Web SSO на сервере RDWeb;
- Настроить групповую политику делегирования учетных данных;
- Добавить отпечаток сертификата в доверенные издатели .rdp через GPO.
Включаем SSO аутентфикацию на серверах RDS с Windows Server 2022/2019/2016
В первую очередь вам нужно выпустить и назначить SSL сертификат для вашего развертывания RDS . В EKU (Enhanced Key Usage) сертификата должно обязательно присутствовать идентификатор Server Authentication . Мы опускаем процедуру получения сертификата, т.к. это она выходит за рамки статьи (можно сгенерировать самоподписанный SSL сертификат , но его придется добавлять в доверенные на всех клиентах через GPO ).
SSL сертификат привязывается в свойствах RDS Deployment в подразделе Certificates .
Далее на всех серверах c ролью RD Web Access нужно включать “ Windows Authentication ” и отключить анонимную проверку подлинности ( Anonymous Authentication ) для каталога IIS RDWeb.
После сохранения изменений, IIS нужно перезапустить: iisreset /noforce
Если используется шлюз Remote Desktop Gateway , убедитесь, что он не используется для подключения внутренних клиентов (должна стоять галка Bypass RD Gateway server for local address ).
Теперь нужно получить отпечаток SSL сертификата (certificate thumbprint) RD Connection Broker и добавить его в список доверенных издателей rdp. Для этого на сервере RDS Connection Broker выполните команду PowerShell:
Get-Childitem CERT:LocalMachineMy
Скопируйте значение отпечатка сертификата и добавьте его в список отпечатков политики Specify SHA1 thumbprints of certificates representing RDP publishers (Указать отпечатки SHA1 сертификатов, представляющих доверенных издателей RDP) в секции Computer Configuration -> Administrative Templates -> Windows Components -> Windows Desktop Services -> Remote Desktop Connection Client (Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Клиент подключения к удаленному рабочему столу).
Настройка Single Sign-on на клиентах Windows
Следующий этап – настройка политики делегирования учетных данных для компьютеров пользователей.
- Откройте консоль управления доменными политиками Group Policy Management Console (
gpmc.msc
); - Создайте новую доменную GPO и привяжите ее к OU с пользователями (компьютерами), которым нужно разрешить использовать SSO для доступа к RDS сервера;
- Включите политику Allow delegation defaults credential в раздел GPO Computer Configuration -> Administrative Templates -> System -> Credential Delegation (Конфигурация компьютера -> Административные шаблоны -> Передача учетных данных -> Разрешить передачу учетных данных, установленных по-умолчанию). Политика разрешает передавать учетные данные пользователя определенным серверам;
- В список серверов нужно добавить имена RDS хостов, на которые клиенту разрешено автоматически отправлять учетные данные пользователя для выполнения SSO аутентификации. Формат добавления сервера: TERMSRV/rd.contoso.com (обратите внимание, что все символы TERMSRV должны быть в верхнем регистре). Если нужно предоставить такое право всем терминальным системам домена (менее безопасно), можно воспользоваться такой конструкцией:
TERMSRV/*.contoso.com
.
Чтобы избежать появления окна с предупреждением о надежности издателя удаленного приложения, нужно добавить адрес сервера с ролью RD Connection Broker в доверенную зону с помощью параметра GPO «Список назначений зоны безопасности для веб-сайтов» (по аналогии со статьей Как убрать предупреждение системы безопасности при открытии файла в Windows ).
- Перейдите в раздел User/Computer Configuration -> Administrative Tools -> Windows Components -> Internet Explorer -> Internet Control Panel -> Security Page-> Site to Zone assignment list (Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Internet Explorer -> Панель управления браузером -> Вкладка безопасность )
- Включите политку Site to Zone assignment list;
- Укажите FQDN имя сервера RD Connection Brtoker и зону 2 (Trusted sites).
Далее нужно включить политику Logon options (Параметры входа) в разделе User/Computer Configuration -> Administrative Tools -> Windows Components -> Internet Explorer -> Internet Control Panel -> Security -> Trusted Sites Zone (Административные шаблоны -> Компоненты Windows -> Internet Explorer -> Панель управления браузером -> Вкладка безопасность -> Зона надежных сайтов) и в выпадающем списке выбрать ‘ Automatic logon with current username and password ‘ (Автоматический вход в сеть с текущим именем пользователя и паролем).
Затем перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Connection Client и отключите политику Prompt for credentials on the client computer .
После обновления настроек групповых политик на клиенте , запустите клиента mstsc.exe ( Remote Desktop Connection) , и укажите FQDN имя RDS сервера. В поле UserName будет автоматически подставлено имя пользователя Windows в формате ( [email protected] ).
Your Windows logon credentials will be used to connect.
Теперь при запуске RemoteApp приложения или прямом подключении к Remote Desktop Services хосту, запрос пароля не будет появляться.
Чтобы использовать шлюз RD Gateway с SSO, нужно для пользователей включить политику Set RD Gateway Authentication Method (User Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> RD Gateway) и установить ее значение на Use Locally Logged-On Credentials.
Если у вас используется RD Web Access, то для корректной работы web SSO в Internet Explorer должен быть включён Active-X компонент MsRdpClientShell (MsRdpWebAccess.dll, Microsoft Remote Desktop Services Web Access Control).
В современных версиях Windows браузер Internet Explorer по умолчанию отключен , и вместо него нужно использовать Microsoft Edge. Для использования RD Web с SSO вам нужно открывать этот URL адрес в Microsoft Edge в режиме совместимости (Active-X компоненты без режима совместимости не запускаются в Edge).
Чтобы все клиенты открывали RDWeb в режиме совместимости, нужно установить административные шаблоны GPO для MS Edge и настроить параметры политик в разделе Computer Configuration -> Administrative Templates -> Microsoft Edge:
- Configure Internet Explorer Integrations = Internet Explorer Mode;
- Configure the Enterprise Mode Site List – укажите UNC путь к файлу со списком сайтов SiteList.xml
Возможные ошибки:
- В нашем случае RDP SSO на RDS ферме с User Profile Disks профилями перестала работать после установки обновлений безопасности KB5018410 (Windows 10) и KB5018418 (Windows 11) осенью 2022 г. Для решения проблемы нужно отредактировать *.rdp файл подключения и изменить строку на
use redirection server name:i:1
- Если вы не добавили отпечаток SSL сертификата RDCB в доверенные издатели RDP, при установке соединения появится окно с предупреждением о доверии к издателю данной программы RemoteApp:
Do you trust the publisher of this RemoteApp program?
An authentication error has occured (Code: 0x607).
Проверьте, что вы назначили корректный сертификат ролям RDS.