Single Sign-On (SSO — технология единого входа) это технология, позволяющая уже аутентифицированному (вошедшему в систему) пользователю получать доступ к другим сервисам без повторной аутентификации. Применительно к технологии терминальных серверов Remote Desktop Services, SSO позволяет избавить пользователя, выполнившего вход на доменном компьютере, от многократного ввода имени и пароля своей учетной записи в окне RDP клиента при подключении к RDS серверам или запуске опубликованных приложений RemoteApp.
В этой статье мы опишем особенности настройки прозрачной авторизации (Single Sign-On) пользователей на серверах RDS под управлением Windows Server 2016 и 2012 R2.
Требования к окружению:
- Сервер Connection Broker и все RDS сервера должны работать под управлением Windows Server 2012 или выше;
- SSO работает только в доменном окружении: должны использоваться учетные записи пользователей Active Directory, а RDS сервера и рабочие станции пользователей должны быть включены в домен;
- На RDP клиентах должна использоваться версия клиента RDP 8.0 и выше (не получится установить эту версию RDP клиента в Windows XP);
- На стороне клиента поддерживаются следующие версии Windows 10 / 8.1 / 7;
- 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;
- Настроить групповую политику делегирования учетных данных;
- Через GPO добавить отпечаток сертификата в доверенные издатели .rdp.
Итак, в первую очередь нужно выпустить и назначить SSL сертификат. В EKU (Enhanced Key Usage) сертификата должно обязательно присутствовать идентификатор Server Authentication. Мы опускаем процедуру получения сертификата, т.к. это она выходит за рамки статьи (можно сгенерировать самоподписанный SSL сертификат, но его придется добавлять в доверенные на всех клиентах через GPO).
SSL сертификат привязывается в свойствах RDS Deployment в подразделе Certificates.
Далее на всех серверах c ролью Web Access для каталога IIS RDWeb нужно включать “Windows Authentication” и отключить анонимную проверку подлинности (Anonymous Authentication).
После сохранения изменений, IIS нужно перезапустить:
iisreset /noforce
Если используется шлюз RD Gateway, убедитесь, что он не используется для подключения внутренних клиентов (должна стоять галка Bypass RD Gateway server for local address).
Следующий этап – настройка политики делегирования учетных данных. Создайте новую доменную GPO и привяжите ее к OU с пользователями (компьютерами), которым нужно разрешить SSO доступ на RDS сервера. Если вы хотите разрешить SSO для всех пользователей домена, допустимо редактировать Default Domain Policy.
Эта политика находится в разделе GPO Computer Configuration -> Administrative Templates -> System -> Credential Delegation -> Allow delegation defaults credential (Конфигурация компьютера -> Административные шаблоны -> Передача учетных данных -> Разрешить передачу учетных данных, установленных по-умолчанию). Политика разрешает определенным серверам доступ к учетным данным пользователей Windows.
- Включите политику (Enabled);
- В список серверов нужно добавить имена RDS серверов, на которые клиент может автоматически отправлять учетные данные пользователя для выполнения SSO авторизации. Формат добавления сервера: TERMSRV/rd.contoso.com. (обратите внимание, что все символы TERMSRV должны быть в верхнем регистре). Если нужно предоставить такое право всем терминальным системам домена (менее безопасно), можно воспользоваться такой конструкцией: TERMSRV/*.contoso.com .
Далее, чтобы избежать появления окна с предупреждением о надежности издателя удаленного приложения, нужно с помощью GPO на клиентских компьютерах добавить адрес сервера с ролью Connection Broker в доверенную зону с помощью политики «Список назначений зоны безопасности для веб-сайтов» (по аналогии со статьей Как убрать предупреждение системы безопасности при открытии файла в Windows):
User/Computer Configuration -> Administrative Tools -> Windows Components -> Internet Explorer -> Internet Control Panel -> Security Page-> Site to Zone assignment list (Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Internet Explorer -> Панель управления браузером -> Вкладка безопасность)
Укажите FQDN имя сервера RDCB и зону 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‘ (Автоматический вход в сеть с текущим именем пользователя и паролем).
После обновления политик на клиенте, при попытке запустить RemoteApp приложение, запрос пароля не появится, но появится окно с предупреждением о доверии к издателю данной программы RemoteApp:
Do you trust the publisher of this RemoteApp program?
Чтобы это сообщение не выводилось каждый раз при подключении пользователя, вам нужно получить отпечаток 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 -> Службы удаленных рабочих столов -> Клиент подключения к удаленному рабочему столу).
На этом настройка SSO закончена, и после применения политик, пользователь должен подключатся к ферме RDS по протоколу RDP без повторного ввода пароля.
Теперь при запуске клиента mstsc.exe (Remote Desktop Connection), если вы укажете имя RDS сервера, в поле UserName автоматически подставится имя пользователя в формате ([email protected]).
Your Windows logon credentials will be used to connect.
Чтобы использовать 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.
Для использования Web SSO на RD Web Access, обратите внимание, что рекомендуется использовать Internet Explorer с включенным Active X компонентом MsRdpClientShell (Microsoft Remote Desktop Services Web Access Control).
Указываем FQDN имя сервера RDCB и зону 2 (Trusted sites)
при RВCB HA указывать только DNS-имя для балансировки нагрузки (Round Robin) между серверами с ролью Connection Broker или перечислить еще и все RВCB-ы ?
Указывается имя сервера, которое пользователь вводит в браузере, т.е. в вашем случае это fqdn имя RDCB
А если у меня для RDWA выделены отдельные сервера — мне тоже указывать fqdn имя RDCB ?? Просто при заходе на _https://fqdn имя RDCB/rdweb/pages я получаю ошибку что сайт не доступен
Добрый день.
А есть ли возможность использовать SSO если клиенты не в домене?
Нет. Смысл SSO в том, чтобы зайти на компьютер под доменной записью и больше не указывать нигде свой пароль. Достаточно авторизоваться 1 раз.
В вашем случае вы авторизуетесь на ПК под локальной учеткой, а не доменной. Соотвественно, сервер AD в домене ничего о ней не знает и не может авторизовать такую учетку.
Если сможете получить билет Kerberos — то сможете. В Linux получить билет Kerberos — ввести 1 команду.
Добрый день!
Возможно ли использовать SSO, если клиенты принадлежат другому домену с которым настроены доверительные отношения?
Добрый день!
Возможно ли использовать SSO, если клиенты принадлежат другому домену с которым настроено двустороннее доверие?
Да, так при двухстороннем доверии SSO также дожен работать.
Добрый день!
Подскажите, в чем может быть засада.
Настроил все как описано.
Проблема в следующем: если ставлю атентификацию windows, при входе на сайт …/RDWeb/Pages проблем не возникает, учетные данные съедает, но вот при запуске любого опубликованного приложения запрашивает учетные данные.
Переключаю аутентификацию на анонимную+форма, при входе на сайт …/RDWeb/Pages запрашивает данные (так и должно быть), но дальше любое приложение запускается прозрачно.
Всю голову сломал…
RDS сервера с remoteapp добавлены через TERMSRV/*.contoso.com? или только rdweb
Привет, подскажи пожалуйста в случае расвертывания RDS на HTML5 нужны какие либо настройки? Я полагаю они должны отличаться от того что написано в твоей статье. У меня не получается запустить пользователя на портал без пароля. Настроить SSO на HTML5 не выходит. Не сталкивался с такой проблемой? Советы, рекомендации будут полезны. Заранее спасибо.
Пишут, что RDS HTML5 поддерживает SSO. Я сам пока не пробовал развертывать RDS 2019 с HTML5 и SSO в продакшене, но скорее всего все должно работать по этой инструкции.
Не работает. Все равно один раз зайти просит, далее все приложения запускает без запроса логина и пароля. Как я понимаю такой алгоритм работы html5 до 0.9 версии приходилось еще при выборе приложения авторизовываться.
У меня задача, чтобы при подключении к ПК черег РД шлюз юзер вводил лог\пасс один раз. Т.е. сейчас он сначала авторизируется на РД шлюзе, а потом на ПК. Я знаю, что есть галочка в RDP клиенте «использовать мои учетные данные» но нужна защита, что вдруг эту галочку снимут и на шлюзе будет подключение под одной учеткой, а потом на ПК уже под другой.
Подскажите в чем может быть проблема? Настроил все по инструкции но SSO не работает для WEB.
Для простого RDP SSO работает.
Компьютер и сервер в одном домене? Сертификат доверенный?
Пробовали войти через Internet Explorer с ActiveX MsRdpClientShell?
Ну и смотрите внимательно события ауетентфикации в журнале Security
И журналы Event viewer: Applications and Services Logs –> Microsoft –> Windows –> TerminalServices *** и Remote*****
Приветствую! Имеется рабочая RDS на 4х серверах 2012 R2. Появилась необходимость перенести все на 2019 на 2 сервера. Доменная сеть, с центром сертификации. Все установил, настроил и проверил. Все работает как положено. Собрался распространить новый сервер на Windows10 и столкнулся с проблемой. При добавлении RDS через «Подключения к удаленным рабочим столам и приложениям RemoteApp» появляется окно авторизации. Проверил все что можно, но никак не найду где включить SSO для подключения коллекции приложений. Подскажите что можно проверить.
Снимаю свой вопрос. Проблема оказалась в GPO. Для теста я создал виртуальную windows 10 и применил политику с добавлением нового RDS только для этой машины. При обработке политик на локальной машине тестовая политика перекрывалась действующей.
Скажите, пожалуйста, а вы не знаете, какие поправки и дополнения нужно внести, чтобы Прозрачная авторизация, так же, работала и под Microsoft Edge?
Сам не пробовал, но подозреваю что вам нужно в edge настроить IE mode для адресов ваших rds хостов.