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:\LocalMachine\My
Скопируйте значение отпечатка сертификата и добавьте его в список отпечатков политики 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.