senior
Как работает аутентификация и авторизация в Jira Cloud приложениях?
Аутентификация и авторизация в Jira Cloud зависят от типа приложения (Forge, Connect) и сценария использования: OAuth 2.0 для user context, API Tokens для простых интеграций, JWT для Connect.
OAuth 2.0 (3-legged) — для user context
Пример
User → Redirect → Atlassian Auth Server
← Login + Consent →
← Callback + code
→ Exchange code → token
← Access token + Refresh token
Spring Boot OAuth 2.0 конфигурация
@Configuration
public class JiraOAuth2Config {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.oauth2Client(Customizer.withDefaults())
.build();
}
@Bean
public ClientRegistration jiraClientRegistration(
@Value("${jira.oauth2.client-id}") String clientId,
@Value("${jira.oauth2.client-secret}") String clientSecret) {
return ClientRegistration.withRegistrationId("jira")
.clientId(clientId)
.clientSecret(clientSecret)
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
.redirectUri("{baseUrl}/callback")
.authorizationUri("https://auth.atlassian.com/authorize")
.tokenUri("https://auth.atlassian.com/oauth/token")
.scope("read:jira-work", "write:jira-work", "read:jira-user")
.build();
}
}
Forge — автоматическая аутентификация
Пример
import api, { route } from '@forge/api';
// От имени пользователя (scopes из manifest.yml)
const userResponse = await api.asUser().requestJira(route`/rest/api/3/myself`);
// От имени приложения
const appResponse = await api.asApp().requestJira(route`/rest/api/3/issue/PROJ-123`);
Scopes (области доступа)
| Scope | Описание |
|---|---|
read:jira-work |
Чтение задач, проектов, досок |
write:jira-work |
Создание/обновление задач |
read:jira-user |
Чтение профилей пользователей |
manage:jira-project |
Управление проектами |
manage:jira-configuration |
Управление конфигурацией |
Частые ошибки
- Использование API Token в серверном приложении для нескольких пользователей — все действия от одного пользователя
- Не обновлять refresh token — пользователю приходится переавторизовываться
- Запрос избыточных scopes — Atlassian может отклонить приложение при review
- Хранение client secret и shared secret в коде — используйте переменные окружения
Как используется в 2026
- OAuth 2.0 — единственный рекомендуемый метод аутентификации для Cloud-приложений
- Basic Auth полностью deprecated для Cloud (работает только с API tokens)
- Atlassian вводит granular scopes для более точного контроля доступа
- PKCE рекомендуется для public-клиентов (SPA, мобильные)
На собеседовании: разграничьте аутентификацию по типу приложения: в Forge она автоматическая (asUser/asApp), в Connect — JWT с shared secret, для внешних интеграций — OAuth 2.0. API Tokens подходят только для скриптов. Refresh tokens обновляйте до истечения срока (обычно 90 дней).