Назад |
Перейти на главную страницу
Передача билетов Kerberos бесполезна в Chrome на macOS X
Я внедряю Okta в качестве поставщика единой регистрации в корпоративной среде, насчитывающей около 90 пользователей. Одна из особенностей Okta - Единый вход для ПК - возможность аутентификации пользователей с помощью Okta просто на основании авторизации на своей машине и, таким образом, аутентификации в домене. Пользователь просто открывает браузер, переходит на URL-адрес клиента Okta компании и входит в систему.
Без этой функции пользователю будет предложено ввести свои учетные данные при загрузке URL-адреса клиента Okta.
DSSO выполняется браузером, получающим от ОС билет Kerberos, который сам генерируется, когда пользователь аутентифицируется в домене Active Directory. Затем браузер возвращает этот билет серверу, и сервер связывается с облаком Okta для аутентификации пользователя.
Процесс аутентификации в нашей среде выглядит следующим образом:
- Пользователь входит в свою машину. Билет Kerberos генерируется при входе в систему и аутентификации в домене.
- Пользователь открывает свой браузер и либо пытается получить доступ к защищенному / интегрированному приложению Okta, либо переходит непосредственно на свой портал Okta.
- Okta перенаправляет пользователя на наш балансировщик нагрузки, который завершает запрос в веб-приложении IWA на веб-сервере.
- Веб-приложение IWA запрашивает у браузера аутентификацию
- Браузер берет билет Kerberos из ОС и передает его подсистеме балансировки нагрузки, которая передает его веб-приложению IWA.
- Приложение IWA проверяет билет и извлекает профиль пользователя из AD.
- Приложение IWA генерирует и подписывает цифровой подписью токен SSO и отправляет его в браузер.
- Браузер возвращает токен в Okta через HTML-форму POST
- Okta завершает запрос на вход и возвращает пользователя в приложение с токеном SSO
На шаге 5 процесс не работает, и я знаю, что это так, потому что:
- Chrome запрашивает у пользователя учетные данные NTLM при запросе URL-адреса клиента Okta
- Это приглашение появляется до того, как веб-приложение IWA и браузер настроен правильно для DSSO (согласно документации, которую я указал в начале)
- Запрос не появляется в Chrome, Firefox и Internet Explorer в Windows (DSSO работает в Windows с Chrome, Firefox и IE)
- Это приглашение не появляется в Safari в macOS X, но происходит в Chrome и Firefox в OS X
Я не могу понять, почему Chrome и Firefox не получают билет Kerberos из ОС в macOS X, но те же браузеры в Windows принимают билет без заминки.
Шаги, которые я пробовал:
Установка настроек белого списка Chrome с помощью следующих команд терминала (рекомендуется документацией Okta):
$ defaults напишите com.google.Chrome AuthServerWhitelist "* .example.com"
$ defaults написать com.google.Chrome AuthNegotiateDelegateWhitelist "* .example.com"
- Установка настроек белого списка Chrome с помощью push-конфигурации SimpleMDM (этот метод фактически успешно перенес настройки в Chrome - что доказано переходом к политике chrome: // и просмотром настроек)
- Удаление антивируса
- Добавление всех возможных полных доменных имен в список серверов, внесенных в белый список на шаге 2 - сначала только серверы, которые мы добавили в белый список в Windows (потому что Windows действительно работает), а затем список серверов Okta, рекомендованных службой поддержки Okta.
Я по-прежнему не могу заставить эту функцию работать, и теперь я пытаюсь выяснить, есть ли способ устранить неполадки в процессе, который Chrome использует для получения билета Kerberos из ОС. Какой-то отладчик для механизма получения билетов Kerberos в Chrome был бы отличным, но я полагаю, что такой вещи нет.
Он должен работать с:
$ defaults write com.google.Chrome AuthServerWhitelist '*.example.com'
$ defaults write com.google.Chrome AuthNegotiateDelegateWhitelist '*.example.com'
Обратите внимание, что я заменил "на"