Аутентификация на основе JWT

Вы можете подключить GlarusBI к своему поставщику удостоверений, используя веб-токены JSON (JWT) для аутентификации людей.

Потоки аутентификации

GlarusBI поддерживает два потока аутентификации, которые могут быть использованы с JWT:

  • Поток кода авторизации

  • Поток кода авторизации с PKCE

PKCE расшифровывается как Proof-Key for Code Exchange, и это способ расширить поток кода авторизации для включения случайных ключей, сгенерированных по запросу. Для получения дополнительной информации об этих потоках см. статью Википедии об OAuth.

В настоящее время GlarusBI поддерживает только алгоритм HS256 (HMAC + SHA-256 ).

Типичный поток для взаимодействия единого входа на основе JWT с GlarusBI

Предполагая, что ваш сайт является локальным хостом, обслуживающим порт 3000:

  1. Человек пытается просмотреть вопрос, например, http://localhost:3000/question/1-superb-question.

  2. Если человек не вошел в систему, GlarusBI перенаправляет его на http://localhost:3000/auth/sso.

  3. Сохраняя исходный URI /question/1-superb-question, GlarusBI перенаправляет человека к поставщику SSO (приложению аутентификации).

  4. Пользователь входит в систему, используя основную форму.

  5. В случае успешного входа ваше приложение аутентификации должно отправить запрос GET к вашей конечной точке GlarusBI с токеном и URI «возврата»: http://localhost:3000/auth/sso?jwt= TOKEN_GOES_HERE&return_to=/question/1-превосходный-вопрос.

  6. GlarusBI проверяет веб-токен JSON, регистрирует пользователя, а затем перенаправляет его к исходному пункту назначения, /question/1-superb-question.

Типичный поток для взаимодействия единого входа на основе JWT с GlarusBI

Предполагая, что ваш сайт является локальным хостом, обслуживающим порт 3000:

  1. Человек пытается просмотреть вопрос, например, http://localhost:3000/question/1-superb-question.

  2. Если человек не вошел в систему, GlarusBI перенаправляет его на http://localhost:3000/auth/sso.

  3. Сохраняя исходный URI /question/1-superb-question, GlarusBI перенаправляет человека к поставщику SSO (приложению аутентификации).

  4. Пользователь входит в систему, используя основную форму.

  5. В случае успешного входа ваше приложение аутентификации должно отправить запрос GET к вашей конечной точке GlarusBI с токеном и URI «возврата»: http://localhost:3000/auth/sso?jwt= TOKEN_GOES_HERE&return_to=/question/1-превосходный-вопрос.

  6. GlarusBI проверяет веб-токен JSON, регистрирует пользователя, а затем перенаправляет его к исходному пункту назначения, /question/1-superb-question.

Включение аутентификации JWT

Перейдите в раздел Администрирование > Настройки области администрирования, затем нажмите на вкладку Аутентификация. Нажмите кнопку Настроить в разделе JWT на этой странице, и вы увидите эту форму:

Форма SAML

Щелкните переключатель в верхней части формы, чтобы включить аутентификацию на основе JWT. Обязательно установите переключатель в положение «Включено», иначе аутентификация JWT не будет работать, даже если все остальные параметры указаны правильно.

Вот разбивка каждой из настроек:

Поставщик удостоверений URI JWT: здесь GlarusBI будет перенаправлять запросы на вход. То есть это то место, где ваши пользователи входят в систему через вашего поставщика удостоверений.

Строка, используемая ключом подписи JWT: Строка, используемая для заполнения закрытого ключа, используемого для проверки сообщений JWT. И GlarusBI, и приложение аутентификации должны иметь один и тот же ключ подписи JWT.

Конфигурация атрибута пользователя (необязательно)

Это дополнительные настройки, которые вы можете заполнить для передачи пользовательских атрибутов в GlarusBI.

  • Атрибут электронной почты: ключ для получения адреса электронной почты каждого пользователя JWT.

  • Атрибут First Name: ключ для получения имени каждого пользователя JWT.

  • Атрибут Last Name: если вы догадались, что это ключ для получения фамилии каждого пользователя JWT, значит, вы обратили на это внимание.

Вы можете отправить дополнительные пользовательские атрибуты в GlarusBI, добавив атрибуты в виде пар ключ/значение в свой JWT. Эти атрибуты будут синхронизироваться при каждом входе в систему.

Схема группы

Вы можете использовать JWT для назначения пользователей GlarusBI в настраиваемые группы, выполнив следующие действия:

  1. Добавьте это в свой JWT: groups: ["group_name"]

  2. В панели администратора в GlarusBI перейдите на вкладку «Аутентификация» раздела «Настройки» и нажмите кнопку «Настроить» на JWT. На этом экране включите переключатель в разделе «СИНХРОНИЗИРОВАТЬ ЧЛЕНСТВО В ГРУППЕ».

  3. Затем нажмите «Редактировать сопоставления». В этом модальном окне введите имя одной из ваших групп, как определено в JWT, затем нажмите «Добавить». В появившейся строке щелкните раскрывающийся список, чтобы выбрать группу GlarusBI, с которой она должна сопоставляться. Повторите это для каждой из групп, которые вы хотите отобразить.

Отключение входа по паролю

Избегайте блокировки в GlarusBI! Эта настройка будет применяться ко всем учетным записям GlarusBI, включая вашу учетную запись администратора GlarusBI. Мы рекомендуем включить аутентификацию по паролю. Это защитит вас от блокировки GlarusBI в случае каких-либо проблем с SSO.

Чтобы потребовать от людей входа с помощью SSO, отключите аутентификацию по паролю в разделе Администрирование > Аутентификация.

Отключение пароля

Примечание об Azure

Если вы используете Azure, вам может понадобиться Azure AD B2C. Ознакомьтесь с их обзором токенов.

Пример кода с использованием аутентификации на основе JWT

Пример кода, использующего JWT-аутентификацию, можно найти в репозитории примеров SSO.