Gymterview
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 дней).