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 <token>
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 и внешние системы без хранения секретов.
Это не просто новый способ входа — это переход к более безопасной модели работы с доступами в инфраструктуре.