Прозора авторизація на RDS за допомогою SSO (Single Sign-On)

Single Sign-On (SSO - Single Sign-On) це технологія, що дозволяє вже аутентифікованим (ввійшов в систему) користувачеві отримувати доступ до інших сервісів без повторної аутентифікації. Стосовно до технології термінальних серверів 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).