Для решения задач SSO, платформа Inspark подерживает протокол OAuth 2.0 как в варианте предоставления сервера аутентификации, так и в варианте клиента к стороннему серверу OAuth 2.0.
Ниже представлено описание настройки платформы для обоих случаев.
Данный вараинт предназначен для случаев, когда внешние системы являются клиентами OAuth сервера Inspark. При такой интеграции, при обращении к таким системам с учетной записью пользователя Inspark, внешние системы получают подтверждение о достоверности пользователя у платформы Inspark.
POST /oauth2/token
Входные параметры (все оязательные):
{"access_token": "string"}
Клиент должен быть известен. Текущий клиент должен быть авторизован, внутри проверяется сессионная кука.
GET /oauth2/authorize
Входные парамтеры:
Ответ:
В качестве результата метод выполняет редирект на redirectUrl, в качестве query параметров передает код запроса токена code и возвращает входящие CSRF (state).
В качестве авторизации используется токен доступа OAuth2
GET /oauth2/userinfo
Входные параметры:
Ответ:
{
«email»: «string»,
«user_name»: «string»,
«first_name»: «string»,
«last_name»: «string»
}
<auth>
<sessionTimeout>60</sessionTimeout>
<oauth2>
<!-- секретный код, который платформа подписывает JWT токены в формате Base64 -->
<jwtSecretKeyBase64>*******************</jwtSecretKeyBase64>
<!-- клиенты OAuth2 авторизации, платформа проверяет их при запросе токена авторизации -->
<client>
<id>inspark-superset</id>
<secret>**************</secret>
</client>
</oauth2>
</auth>
Важно! Секретный код задается в формате Base64 и для большей безопасности желательно чтобы этот Base64 был сгенерирован из набора байт, содержащих не печатные символы.
Пользователь логинится в Inspark IoT, и в этом же браузере он должен открыть ссылку интегрируемого сервиса, например Superset Apache.
Superset вызовет методы авторизации и получения информации о пользователе, и авторизует текущего пользователя Inspark IoT.
Если пользователь не будет логинится в Inspark IoT, а сразу попытается зайти на ссылку интегрируемого сервиса, вызовится панель авторизации Inspark IoT.
Для настройки на внешний сервер OAuth необходимо зайти в раздел меню Пользователи->Сервисы авториазации и создать запись на новый сервис. При заполнении полей нового сервиса указываются следующие данные:
Поле | Назначение |
---|---|
Название | Название внешнего сервиса авторизации. Если не будет указана иконка для сервиса, то название будет выводится на форме логина |
URL авторизации | URL предоставляется внешним сервисом авторизации, по сути это переход на страницу авторизации внешнего сервиса |
URL токена пользователя | URL для получения токена пользователя. URL предоставляется внешним сервисом авторизации |
URL информации о пользователе | URL для получения информации о пользователе. Некоторые сервисы авторизации его не поддерживают (например MS ADFS 2012). Если URL не задается, тогда вся информация о пользователе будет предоставляться из access token выдаваемого сервером после авторизации. В современных сервисах OAuth, в токене авторизации как правило задается только идентификатор пользователя, а дополнительная информация о пользователе предоставляется через заданный api (см. выше описание сервиса получения инфо о пользователе в Inspark /oauth2/userinfo ) |
ID клиента | идентификатор клиента платформы на сервере OAuth 2.0. |
Секретный код клиента | Секретный код клиента (не обязательный параметр). Этот код выдается внешним сервисом OAuth |
Базовый URL | Основной URL на платформу (RPT id),куда пользователь будет перенаправлен после авторизации. Для корректной работы, достаточно указать dns Имя сервера , например https://<имя сервера> |
Публичный ключ | Публичный ключ для проверки подписи. Если в OAuth установлен сертификат с публичным и приватным ключом для подписывания выдаваемого access token, тогда сюда надо задать публичный ключ. Если ключ не задается, проверка подписи токена не проводится и доверяется как есть. |
Имя, Фамилия, Отчество, e-mail | атрибуты пользователя, которые передаются от внешнего сервиса OAuth. Необходимо уточнить в OAuth сервисе наименование указанных полей, которые передаются либо сервисом информации о пользователе, либо при проверке токена. Для MS ADFS логин всегда содержится в атрибуте sub. |
Права видимости | Информация от внешнего сервиса, если он поддерживает этот атрибут. Указываются права, с которыми пользователь обращается к OAuth сервису (необязательный атрибут) |
Ресурс | Информация от внешнего сервиса (не обязательный атрибут) |
Рубрика пользователей | Назначаемая по умолчанию рубрика для новых пользователей от OAuth сервиса |
Группа пользователей | Ролевая группа пользователец для новых пользователей от OAuth сервиса |
Цвет фона | Фон секции на странице логина внешнего сервиса авторизации |
Логотип | Значок/ иконка внешнего сервиса авторизации |
Иногда, запрашивается Redirect URL (URL, на который будет перенаправлен пользователь после авторизации). Для информации, его структура будет вот такой: <Базовый URL>/sem-restservices/auth/oauth_callback
Все включенные внешние сервисы авторизации отображаются на первой странице логина. Пользователь выбирает требуемый сервис и при клике на секцию сервиса переходит на страницу логина внешнего сервиса. После ввода логина-пароля, внешний сервис редиректит (возвращает) информацию о пользователе платформе. Если в платформе такого пользователя нет, то создается новый пользователь с указанными правами доступа для этого сервиса.