SSO (версия для системного администратора): различия между версиями
(Новая страница: «SSO для системного администратора») |
|||
(не показаны 24 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
SSO для | <languages/> | ||
<translate> | |||
<!--T:1--> | |||
== '''Описание ситуации''' == | |||
Пользователи не хотят увеличивать количество учётных записей. Им хочется использовать свою корпоративную почту как аккаунт для всех платформ. В этом случае необходимо использовать технологию SSO. | |||
</translate> | |||
<translate> | |||
<!--T:2--> | |||
== '''Все об SSO''' == | |||
'''SSO (Single Sign-On)''' — это система аутентификации, позволяющая пользователю входить в несколько приложений или сервисов с использованием единственных учетных данных (обычно логина и пароля). Это упрощает процесс входа, сокращает количество паролей, которые пользователю нужно запоминать, и повышает уровень безопасности, уменьшая риски, связанные с утечкой данных. | |||
=== '''Функционирование SSO''' === | |||
SSO создает соединение между программой и внешним сервис-поставщиком, иногда называемым идентификатором пользователя (IdP). Это связывание осуществляется через последовательность действий по аутентификации, подтверждению и связке между программой и центральной службой SSO. Это ключевые элементы системы SSO.<br> | |||
=== '''Центральная служба SSO''' === | |||
Эта служба является главной для приложений при попытке пользователя войти в систему. Когда анонимный пользователь пытается получить доступ, программа направляет его к службе SSO. После аутентификации служба возвращает пользователя к запрашиваемой программе. Обычно это происходит на специализированном сервере политик SSO.<br> | |||
=== '''Токен для SSO''' === | |||
Токен SSO представляет собой электронный документ с данными, идентифицирующими пользователя, например, логин или e-mail. При запросе пользователя на доступ, программа и сервис SSO обмениваются данным токеном для подтверждения пользователя.<br> | |||
=== '''Механизм SSO:''' === | |||
Пользователь, обращаясь к программе, инициирует создание SSO-токена, который направляется для проверки в службу SSO. | |||
Сервис определяет, проходил ли ранее процесс аутентификации для этого пользователя. Если процедура была успешной, служба подтверждает доступ для программы.<br><br> | |||
Если у пользователя нет учетной записи, служба SSO направляет его к главной странице входа, предлагая ввести логин и пароль. | |||
После проверки учетных данных служба отправляет положительный отклик программе.<br><br> | |||
В противном случае появляется уведомление об ошибке, и пользователь должен попробовать снова. Несколько неудачных попыток могут привести к временной блокировке доступа к службе. | |||
=== '''Виды протоколов SSO''' === | |||
SSO использует различные протоколы и стандарты для проверки и аутентификации учётных данных пользователей. | |||
[[File:Виды протоколов.png|thumb|right| Основные виды защитных протоколов SSO|300px]] | |||
Ниже будут прописаны основные из них:<br> | |||
# SAML - протокол обмена информацией об аутентификации с SSO сервисом. Основан на XML, обеспечивает высокую безопасность, так как приложения не сохраняют учетные данные пользователей. | |||
# OAuth - открытый стандарт, позволяющий приложениям обращаться к данным пользователя без передачи пароля. Работает через API, устанавливая доверительные отношения между приложениями. | |||
# OIDC - подход, где одни учетные данные дают доступ к разным сайтам. Поставщик услуг осуществляет проверку подлинности, а приложения запрашивают дополнительные данные для проверки пользователя. | |||
# Kerberos - cистема аутентификации на основе "билетов", защищающая личность участников сети с помощью криптографии. | |||
{{Note|Команда разработчиком SmartPlayer использует для настройки протокол '''SAML'''|warn}} | |||
</translate> | |||
<translate> | |||
<!--T:3--> | |||
== '''Настройка серверного приложения''' == | |||
=== '''Предварительные действия''' === | |||
{{Note|Для начала работ необходимо чтобы системный администратор клиента настроил на своей стороне ADFS сервер|warn}} | |||
Далее необходимо провзаимодействовать с командой SmartPlayer. Это нужно для включения функционала на бэкенде. А также добавиление его отображения во фронтентде на странице аутентификации.<br> | |||
Для этого существует файл с конфигурациями который отвечает за включение кнопки SSO.<br> | |||
Путь к нему: <code>/home/smartplayer/smartplayer/cms/cms/config.js</code>.<br> | |||
В этом файле необходимо изменить параметр <code>showSSOButton</code> и выставить ему значение ''true''<br> | |||
Также предварительно системный администратор со стороны клиента должен прислать нашей команде параметры для конфига:<br> | |||
<code>SSO SAML certificate </code><br> | |||
<code>SSO_SAML_LOGIN_URL</code><br> | |||
Со стороны нашей команды также отправляется файл с метаданными. | |||
</translate> | |||
<translate> | |||
=== '''Подготовка''' === | |||
1.Подключиться по ssh (или с помощью других инструментов) на удаленный сервер, где установлено серверное приложение SmartPlayer. Используем логин и пароль от сервера. <br><br> | |||
<!--T:5--> | |||
2. Перейти в папку, где установлена платформа SmartPlayer.<br> | |||
<!--T:6--> | |||
По умолчанию это путь: ''“/home/smartplayer/smartplayer/“'' и открыть на редактирование файл ''.env''. Данный файл является скрытым. Далее для его изменения открываем любым текстовым редактором, по умолчанию: | |||
<code>nano /home/smartplayer/smartplayer/.env</code><br><br> | |||
<!--T:7--> | |||
3. Производим настройку в конфигурационном файле серверного приложения. Выбираем конфигурацию с протоколом SAML: | |||
[[File:Настройка SSO через SAML.png|thumb|right|Пример команд для настройки SSO через SAML|300px]] | |||
{| class="wikitable sortable" | |||
|+ Текст подписи | |||
|- | |||
! '''Название параметра''' !! '''Допустимые значения''' !! '''Описание''' | |||
|- | |||
| SSO_SAML_ENABLED || 0 - выключена интеграция. 1 - включена интеграция || По умолчанию отключена. Чтобы включить используйте значение 1 | |||
|- | |||
| SSO_SAML_ENTITY_ID || Любое строковое значение. || Служит для определения SAML клиента на стороне сервиса аутентификации. Это значение необходимо предварительно согласовать | |||
|- | |||
| SSO_SAML_Login_URL || URL сервиса аутентификации || Выдается сервисом аутентификации | |||
|- | |||
| SSO_SAML_CERTIFICATE_PATH || Путь до публичного сертификата от сервисом аутентификации || Сертификат выдается сервисом аутентификации | |||
|- | |||
| SSO_SAML_COMPANY_ID || Число указанное в профиле компании || Сертификат выдается сервисом аутентификации | |||
|- | |||
| LOCAL_SSL_KEY_PATH || Путь до приватного ключа сертификата || Сертификат выдается сервисом аутентификации. | |||
|- | |||
| LOCAL_SSL-CERT_PATH || Путь до публичного ключа сертификата || Сертификат выдается сервисом аутентификации. | |||
|} | |||
{{Note|Работа по протоколу '''SAML''' осуществляется только по ''https'', поэтому так же необходимо проверить наличие ''ssl'' сертификатов и переменных: <code>LOCAL_SSL_KEY_PATH и LOCAL_SSL_CERT_PATH.</code>|warn}} | |||
[[File:Пример настройки SSO.png|thumb|center| Пример настроенного SSO |700px]] | |||
4. Сохранить изменения в конфигурационном файле.<br> | |||
5. Перезапустить полностью контейнеры Docker. Это необходимо в связи с внесёнными изменениями в .env файл. | |||
* Перейти в папку, где находится файл *.yml. По умолчанию путь:<br> | |||
''“/home/smartplayer/smartplayer/“'' | |||
* Остановить контейнеры Docker <code>docker-compose down</code> | |||
* Запустить контейнеры Docker <code>docker-compose up -d</code> | |||
6. Подождать от 2 до 5 минут, для запуска платформы и можно заходить в личный кабинет. Вход осуществляется по URL личного кабинета. | |||
</translate> | |||
<translate> | |||
<!--T:8--> | |||
=='''Принцип действия'''== | |||
{| class="wikitable" | |||
|+ Производимые действия | |||
|- | |||
! Со стороны пользователя !! Со стороны сервера | |||
|- | |||
| Пользователь заходит на страницу аутентификации и нажимает кнопку зайти по SSO|| Фронтэнд Smartplayer отправляет к бэкенду запрос на редирект | |||
|- | |||
| Пользователя переносит на страницу аутентификации его компании || Бэкенд SmartPlayer формирует запрос на ADFS сервер клиента и редиректит пользователя на страницу аутентификации компании с помощью протокола SAML | |||
|- | |||
| Пользователь заполняет личные данные (логин и пароль) на странице аутентификации его компании || Сервер клиента собирает данные и параметры для ответа | |||
|- | |||
| Пользователя переносит в личный кабинет SmartPlayer || Сервер клиента снова с помощью SAML отправляет ответ для сервера SmartPlayer. Сервер SmartPlayer расшифровывает полученные данные и логинит пользователя. | |||
|- | |||
| Пользователь может использовать весь функционал платформы SmartPlayer в зависимости от своей роли: пользователь или администратор. Это настраивается на стороне клиента в ADFS сервере || После входа сервер SmartPlayer сохраняет данные и параметры о пользователе в своей базе данных | |||
|} | |||
{{Note|Возможно сделать на этапе аутентификации сделать автолог. В данном случае пользователь запросил обязательный вход при начале каждой сессии|warn}} | |||
[[File:Запрос.png|thumb|Пример запроса от сервера|300px]] | |||
=== '''Соотношение прав''' === | |||
<code>g_smartplayer_admins: 'adminBrand'</code>, по факту ''g_smartplayer_admins = 'adminBrand'= правам администратора''<br> | |||
<code>g_smartplayer_manager: 'userBrand'</code>, по факту ''g_smartplayer_manager = 'userBrand' = правам пользователя'' | |||
</translate> | |||
<translate> | |||
<!--T:9--> | |||
== '''Выявленные проблемы при настройке''' == | |||
* '''Ситуация:''' неправильно настроены claim rules.<br> | |||
[[File:Claim rules .png|thumb|Пример разницы в заполнении "Claim Rules"|300px]] | |||
'''Решение:''' Claim rules обязательно должны быть настроены на одном языке. В нашем случае на сервере SmartPlayer claim rules были прописаны на русском языке, а у клиента на английском. На нашей стороне было прописано "Адрес электронной почты", а у клиента "Е-mail". После того, как заказчик переписал их на своём ADFS сервере на русском, проблема решилась. | |||
* '''Ситуация:''' некорректная отправка сертификатов. <br> | |||
'''Решение:''' Системные администраторы со стороны заказчика отправили сертификат в виде текста, что оказалось некорректным и неудобным в использовании. После отправки сертификата в виде файла, ситуация была решена. | |||
== '''Итоговый результат''' == | |||
В результате всех произведённых выше действий системный администратор пользователя "поднимет" систему SSO на своём сервере. Это даст возможность пользователю не создавать отдельную учётную запись. Таким образом получит боле простой, комфортный и безопасный доступ к функционалу SmartPlayer. | |||
</translate> |
Текущая версия от 08:58, 25 августа 2023
Описание ситуации
Пользователи не хотят увеличивать количество учётных записей. Им хочется использовать свою корпоративную почту как аккаунт для всех платформ. В этом случае необходимо использовать технологию SSO.
Все об SSO
SSO (Single Sign-On) — это система аутентификации, позволяющая пользователю входить в несколько приложений или сервисов с использованием единственных учетных данных (обычно логина и пароля). Это упрощает процесс входа, сокращает количество паролей, которые пользователю нужно запоминать, и повышает уровень безопасности, уменьшая риски, связанные с утечкой данных.
Функционирование SSO
SSO создает соединение между программой и внешним сервис-поставщиком, иногда называемым идентификатором пользователя (IdP). Это связывание осуществляется через последовательность действий по аутентификации, подтверждению и связке между программой и центральной службой SSO. Это ключевые элементы системы SSO.
Центральная служба SSO
Эта служба является главной для приложений при попытке пользователя войти в систему. Когда анонимный пользователь пытается получить доступ, программа направляет его к службе SSO. После аутентификации служба возвращает пользователя к запрашиваемой программе. Обычно это происходит на специализированном сервере политик SSO.
Токен для SSO
Токен SSO представляет собой электронный документ с данными, идентифицирующими пользователя, например, логин или e-mail. При запросе пользователя на доступ, программа и сервис SSO обмениваются данным токеном для подтверждения пользователя.
Механизм SSO:
Пользователь, обращаясь к программе, инициирует создание SSO-токена, который направляется для проверки в службу SSO.
Сервис определяет, проходил ли ранее процесс аутентификации для этого пользователя. Если процедура была успешной, служба подтверждает доступ для программы.
Если у пользователя нет учетной записи, служба SSO направляет его к главной странице входа, предлагая ввести логин и пароль.
После проверки учетных данных служба отправляет положительный отклик программе.
В противном случае появляется уведомление об ошибке, и пользователь должен попробовать снова. Несколько неудачных попыток могут привести к временной блокировке доступа к службе.
Виды протоколов SSO
SSO использует различные протоколы и стандарты для проверки и аутентификации учётных данных пользователей.
Ниже будут прописаны основные из них:
- SAML - протокол обмена информацией об аутентификации с SSO сервисом. Основан на XML, обеспечивает высокую безопасность, так как приложения не сохраняют учетные данные пользователей.
- OAuth - открытый стандарт, позволяющий приложениям обращаться к данным пользователя без передачи пароля. Работает через API, устанавливая доверительные отношения между приложениями.
- OIDC - подход, где одни учетные данные дают доступ к разным сайтам. Поставщик услуг осуществляет проверку подлинности, а приложения запрашивают дополнительные данные для проверки пользователя.
- Kerberos - cистема аутентификации на основе "билетов", защищающая личность участников сети с помощью криптографии.
Настройка серверного приложения
Предварительные действия
Далее необходимо провзаимодействовать с командой SmartPlayer. Это нужно для включения функционала на бэкенде. А также добавиление его отображения во фронтентде на странице аутентификации.
Для этого существует файл с конфигурациями который отвечает за включение кнопки SSO.
Путь к нему: /home/smartplayer/smartplayer/cms/cms/config.js
.
В этом файле необходимо изменить параметр showSSOButton
и выставить ему значение true
Также предварительно системный администратор со стороны клиента должен прислать нашей команде параметры для конфига:
SSO SAML certificate
SSO_SAML_LOGIN_URL
Со стороны нашей команды также отправляется файл с метаданными.
Подготовка
1.Подключиться по ssh (или с помощью других инструментов) на удаленный сервер, где установлено серверное приложение SmartPlayer. Используем логин и пароль от сервера.
2. Перейти в папку, где установлена платформа SmartPlayer.
По умолчанию это путь: “/home/smartplayer/smartplayer/“ и открыть на редактирование файл .env. Данный файл является скрытым. Далее для его изменения открываем любым текстовым редактором, по умолчанию:
nano /home/smartplayer/smartplayer/.env
3. Производим настройку в конфигурационном файле серверного приложения. Выбираем конфигурацию с протоколом SAML:
Название параметра | Допустимые значения | Описание |
---|---|---|
SSO_SAML_ENABLED | 0 - выключена интеграция. 1 - включена интеграция | По умолчанию отключена. Чтобы включить используйте значение 1 |
SSO_SAML_ENTITY_ID | Любое строковое значение. | Служит для определения SAML клиента на стороне сервиса аутентификации. Это значение необходимо предварительно согласовать |
SSO_SAML_Login_URL | URL сервиса аутентификации | Выдается сервисом аутентификации |
SSO_SAML_CERTIFICATE_PATH | Путь до публичного сертификата от сервисом аутентификации | Сертификат выдается сервисом аутентификации |
SSO_SAML_COMPANY_ID | Число указанное в профиле компании | Сертификат выдается сервисом аутентификации |
LOCAL_SSL_KEY_PATH | Путь до приватного ключа сертификата | Сертификат выдается сервисом аутентификации. |
LOCAL_SSL-CERT_PATH | Путь до публичного ключа сертификата | Сертификат выдается сервисом аутентификации. |
LOCAL_SSL_KEY_PATH и LOCAL_SSL_CERT_PATH.
4. Сохранить изменения в конфигурационном файле.
5. Перезапустить полностью контейнеры Docker. Это необходимо в связи с внесёнными изменениями в .env файл.
- Перейти в папку, где находится файл *.yml. По умолчанию путь:
“/home/smartplayer/smartplayer/“
- Остановить контейнеры Docker
docker-compose down
- Запустить контейнеры Docker
docker-compose up -d
6. Подождать от 2 до 5 минут, для запуска платформы и можно заходить в личный кабинет. Вход осуществляется по URL личного кабинета.
Принцип действия
Со стороны пользователя | Со стороны сервера |
---|---|
Пользователь заходит на страницу аутентификации и нажимает кнопку зайти по SSO | Фронтэнд Smartplayer отправляет к бэкенду запрос на редирект |
Пользователя переносит на страницу аутентификации его компании | Бэкенд SmartPlayer формирует запрос на ADFS сервер клиента и редиректит пользователя на страницу аутентификации компании с помощью протокола SAML |
Пользователь заполняет личные данные (логин и пароль) на странице аутентификации его компании | Сервер клиента собирает данные и параметры для ответа |
Пользователя переносит в личный кабинет SmartPlayer | Сервер клиента снова с помощью SAML отправляет ответ для сервера SmartPlayer. Сервер SmartPlayer расшифровывает полученные данные и логинит пользователя. |
Пользователь может использовать весь функционал платформы SmartPlayer в зависимости от своей роли: пользователь или администратор. Это настраивается на стороне клиента в ADFS сервере | После входа сервер SmartPlayer сохраняет данные и параметры о пользователе в своей базе данных |
Соотношение прав
g_smartplayer_admins: 'adminBrand'
, по факту g_smartplayer_admins = 'adminBrand'= правам администратора
g_smartplayer_manager: 'userBrand'
, по факту g_smartplayer_manager = 'userBrand' = правам пользователя
Выявленные проблемы при настройке
- Ситуация: неправильно настроены claim rules.
Решение: Claim rules обязательно должны быть настроены на одном языке. В нашем случае на сервере SmartPlayer claim rules были прописаны на русском языке, а у клиента на английском. На нашей стороне было прописано "Адрес электронной почты", а у клиента "Е-mail". После того, как заказчик переписал их на своём ADFS сервере на русском, проблема решилась.
- Ситуация: некорректная отправка сертификатов.
Решение: Системные администраторы со стороны заказчика отправили сертификат в виде текста, что оказалось некорректным и неудобным в использовании. После отправки сертификата в виде файла, ситуация была решена.
Итоговый результат
В результате всех произведённых выше действий системный администратор пользователя "поднимет" систему SSO на своём сервере. Это даст возможность пользователю не создавать отдельную учётную запись. Таким образом получит боле простой, комфортный и безопасный доступ к функционалу SmartPlayer.