SSO (версия для системного администратора): различия между версиями
(не показано 12 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
<languages/> | |||
<translate> | |||
<!--T:1--> | |||
== '''Описание ситуации''' == | == '''Описание ситуации''' == | ||
Пользователи не хотят увеличивать количество учётных записей. Им хочется использовать свою корпоративную почту как аккаунт для всех платформ. В этом случае необходимо использовать технологию SSO. | Пользователи не хотят увеличивать количество учётных записей. Им хочется использовать свою корпоративную почту как аккаунт для всех платформ. В этом случае необходимо использовать технологию SSO. | ||
</translate> | |||
<translate> | |||
<!--T:2--> | |||
== '''Все об SSO''' == | == '''Все об SSO''' == | ||
'''SSO (Single Sign-On)''' — это система аутентификации, позволяющая пользователю входить в несколько приложений или сервисов с использованием единственных учетных данных (обычно логина и пароля). Это упрощает процесс входа, сокращает количество паролей, которые пользователю нужно запоминать, и повышает уровень безопасности, уменьшая риски, связанные с утечкой данных. | '''SSO (Single Sign-On)''' — это система аутентификации, позволяющая пользователю входить в несколько приложений или сервисов с использованием единственных учетных данных (обычно логина и пароля). Это упрощает процесс входа, сокращает количество паролей, которые пользователю нужно запоминать, и повышает уровень безопасности, уменьшая риски, связанные с утечкой данных. | ||
Строка 17: | Строка 23: | ||
=== '''Виды протоколов SSO''' === | === '''Виды протоколов SSO''' === | ||
SSO использует различные протоколы и стандарты для проверки и аутентификации учётных данных пользователей. | SSO использует различные протоколы и стандарты для проверки и аутентификации учётных данных пользователей. | ||
[[File:Виды протоколов.png|thumb|right| Основные виды защитных протоколов SSO|300px]] | |||
Ниже будут прописаны основные из них:<br> | Ниже будут прописаны основные из них:<br> | ||
# SAML - протокол обмена информацией об аутентификации с SSO сервисом. Основан на XML, обеспечивает высокую безопасность, так как приложения не сохраняют учетные данные пользователей. | # SAML - протокол обмена информацией об аутентификации с SSO сервисом. Основан на XML, обеспечивает высокую безопасность, так как приложения не сохраняют учетные данные пользователей. | ||
Строка 23: | Строка 30: | ||
# Kerberos - cистема аутентификации на основе "билетов", защищающая личность участников сети с помощью криптографии. | # Kerberos - cистема аутентификации на основе "билетов", защищающая личность участников сети с помощью криптографии. | ||
{{Note|Команда разработчиком SmartPlayer использует для настройки протокол '''SAML'''|warn}} | {{Note|Команда разработчиком SmartPlayer использует для настройки протокол '''SAML'''|warn}} | ||
</translate> | |||
<translate> | |||
<!--T:3--> | |||
== '''Настройка серверного приложения''' == | == '''Настройка серверного приложения''' == | ||
=== '''Предварительные действия''' === | === '''Предварительные действия''' === | ||
{{Note|Для начала работ необходимо чтобы системный администратор клиента настроил на своей стороне ADFS сервер|warn}} | {{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> | 1.Подключиться по ssh (или с помощью других инструментов) на удаленный сервер, где установлено серверное приложение SmartPlayer. Используем логин и пароль от сервера. <br><br> | ||
<!--T:5--> | |||
2. Перейти в папку, где установлена платформа SmartPlayer.<br> | 2. Перейти в папку, где установлена платформа SmartPlayer.<br> | ||
<!--T:6--> | |||
По умолчанию это путь: ''“/home/smartplayer/smartplayer/“'' и открыть на редактирование файл ''.env''. Данный файл является скрытым. Далее для его изменения открываем любым текстовым редактором, по умолчанию: | По умолчанию это путь: ''“/home/smartplayer/smartplayer/“'' и открыть на редактирование файл ''.env''. Данный файл является скрытым. Далее для его изменения открываем любым текстовым редактором, по умолчанию: | ||
<code>nano /home/smartplayer/smartplayer/.env</code><br><br> | <code>nano /home/smartplayer/smartplayer/.env</code><br><br> | ||
<!--T:7--> | |||
3. Производим настройку в конфигурационном файле серверного приложения. Выбираем конфигурацию с протоколом SAML: | 3. Производим настройку в конфигурационном файле серверного приложения. Выбираем конфигурацию с протоколом SAML: | ||
[[File:Настройка SSO через SAML.png|thumb|right|Пример команд для настройки SSO через SAML|300px]] | [[File:Настройка SSO через SAML.png|thumb|right|Пример команд для настройки SSO через SAML|300px]] | ||
Строка 66: | Строка 88: | ||
* Запустить контейнеры Docker <code>docker-compose up -d</code> | * Запустить контейнеры Docker <code>docker-compose up -d</code> | ||
6. Подождать от 2 до 5 минут, для запуска платформы и можно заходить в личный кабинет. Вход осуществляется по URL личного кабинета. | 6. Подождать от 2 до 5 минут, для запуска платформы и можно заходить в личный кабинет. Вход осуществляется по URL личного кабинета. | ||
</translate> | |||
<translate> | |||
<!--T:8--> | |||
=='''Принцип действия'''== | =='''Принцип действия'''== | ||
{| class="wikitable" | {| class="wikitable" | ||
Строка 84: | Строка 108: | ||
|} | |} | ||
{{Note|Возможно сделать на этапе аутентификации сделать автолог. В данном случае пользователь запросил обязательный вход при начале каждой сессии|warn}} | {{Note|Возможно сделать на этапе аутентификации сделать автолог. В данном случае пользователь запросил обязательный вход при начале каждой сессии|warn}} | ||
[[File:Запрос.png|thumb|Пример запроса от сервера|300px]] | |||
=== '''Соотношение прав''' === | === '''Соотношение прав''' === | ||
<code>g_smartplayer_admins: 'adminBrand'</code>, по факту ''g_smartplayer_admins = 'adminBrand'= правам администратора''<br> | <code>g_smartplayer_admins: 'adminBrand'</code>, по факту ''g_smartplayer_admins = 'adminBrand'= правам администратора''<br> | ||
<code>g_smartplayer_manager: 'userBrand'</code>, по факту ''g_smartplayer_manager = 'userBrand' = правам пользователя'' | <code>g_smartplayer_manager: 'userBrand'</code>, по факту ''g_smartplayer_manager = 'userBrand' = правам пользователя'' | ||
</translate> | |||
<translate> | |||
<!--T:9--> | |||
== '''Выявленные проблемы при настройке''' == | == '''Выявленные проблемы при настройке''' == | ||
* '''Ситуация:''' неправильно настроены claim rules.<br> | * '''Ситуация:''' неправильно настроены claim rules.<br> | ||
'''Решение:''' Claim rules обязательно должны быть настроены на одном языке. В нашем случае на сервере SmartPlayer claim rules были прописаны на русском языке, а у клиента | [[File:Claim rules .png|thumb|Пример разницы в заполнении "Claim Rules"|300px]] | ||
'''Решение:''' Claim rules обязательно должны быть настроены на одном языке. В нашем случае на сервере SmartPlayer claim rules были прописаны на русском языке, а у клиента на английском. На нашей стороне было прописано "Адрес электронной почты", а у клиента "Е-mail". После того, как заказчик переписал их на своём ADFS сервере на русском, проблема решилась. | |||
* '''Ситуация:''' некорректная отправка сертификатов. <br> | * '''Ситуация:''' некорректная отправка сертификатов. <br> | ||
'''Решение:''' Системные администраторы со стороны заказчика отправили сертификат в виде текста, что оказалось некорректным и неудобным в использовании. После отправки сертификата в виде файла, ситуация была решена. | '''Решение:''' Системные администраторы со стороны заказчика отправили сертификат в виде текста, что оказалось некорректным и неудобным в использовании. После отправки сертификата в виде файла, ситуация была решена. | ||
Строка 96: | Строка 124: | ||
== '''Итоговый результат''' == | == '''Итоговый результат''' == | ||
В результате всех произведённых выше действий системный администратор пользователя "поднимет" систему SSO на своём сервере. Это даст возможность пользователю не создавать отдельную учётную запись. Таким образом получит боле простой, комфортный и безопасный доступ к функционалу SmartPlayer. | В результате всех произведённых выше действий системный администратор пользователя "поднимет" систему 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.