JWT-аутентификация

JWT-аутентификация в BearPass: как это работает

JWT-аутентификация (JSON Web Token) — это способ получения доступа к API BearPass без использования долгоживущих ключей.

Вместо хранения секретов в скриптах, пайплайнах или внешних сервисах используется токен, выданный сторонним провайдером идентификации, работающим по протоколу OpenID Connect (OIDC).

BearPass в этом сценарии выступает как доверяющая сторона: он проверяет JWT-токен и, если всё корректно, выполняет запрос от имени пользователя.

Где это используется

Чаще всего JWT-аутентификация применяется в автоматизированных сценариях:

  • запросы к API BearPass из CI/CD (GitLab CI, GitHub Actions и др.);
  • интеграция с внутренними системами автоматизации;
  • доступ к секретам из внешних сервисов без хранения ключей;

Главное преимущество — отсутствие необходимости хранить статические API-ключи.

Как работает схема

1. Добавление доверенного провайдера

Администратор настраивает внешний OIDC-провайдер в BearPass. Для этого указываются:

  • Issuer — адрес провайдера (iss);
  • JWKS URL — источник публичных ключей для проверки подписи;
  • Audience — получатель токена (aud);

После этого BearPass сможет доверять токенам, выпущенным этим провайдером.

2. Привязка пользователя

Пользователь создаёт привязку своей учетной записи к внешнему идентификатору.

Для этого используется значение sub из JWT-токена — уникальный идентификатор пользователя в системе провайдера.

Именно по этому значению BearPass определяет, от чьего имени выполнять запрос.

3. Запрос к API

Внешняя система (например, CI/CD) отправляет JWT-токен в BearPass через эндпоинт:

/api/auth/login-by-jwt

В ответ система возвращает токен доступа BearPass, который используется в заголовке:

Authorization: Bearer

4. Проверка и доступ

Перед выполнением запроса BearPass проверяет:

  • подпись токена через JWKS;
  • соответствие issuer и audience;
  • наличие привязки по значению sub;

Если всё корректно — запрос выполняется с правами пользователя.

Пример: GitHub Actions

JWT-аутентификация удобно работает с GitHub Actions.

Пример настроек провайдера:

  • Issuer: https://token.actions.githubusercontent.com
  • JWKS URL: https://token.actions.githubusercontent.com/.well-known/jwks
  • Audience: URL репозитория или организации

После настройки можно использовать токены GitHub для доступа к API BearPass без хранения секретов.

Управление провайдерами и привязками

В BearPass предусмотрены отдельные интерфейсы для работы с JWT:

Доверенные провайдеры

  • просмотр списка провайдеров;
  • управление (редактирование, удаление);
  • включение/отключение;

Если провайдер отключён — все привязки временно не работают.

JWT-привязки пользователей

Пользователь может:

  • создавать привязки к провайдерам;
  • отслеживать их использование;
  • редактировать или удалять;

Дополнительно есть удобная функция автозаполнения — можно вставить JWT-токен, и система сама извлечёт значение sub.

Проверка токена

Для отладки доступен инструмент проверки JWT:

  • показывает содержимое токена (iss, aud, sub);
  • помогает понять ошибки валидации;
  • позволяет проверить настройки до создания привязки;

Это особенно полезно при интеграциях с CI/CD и внешними системами.

Почему это важно

JWT-аутентификация меняет подход к работе с доступами:

  • нет хранения ключей в коде и пайплайнах;
  • доступы становятся временными и управляемыми;
  • снижается риск утечек;
  • проще интегрировать BearPass в инфраструктуру;

Это особенно актуально для DevOps-команд и компаний с развитой автоматизацией.

Итог

JWT-аутентификация через OIDC позволяет безопасно интегрировать BearPass в CI/CD и внешние системы без хранения секретов.

Это не просто новый способ входа — это переход к более безопасной модели работы с доступами в инфраструктуре.

Рекомендуем к прочтению