[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-jira-kak-rabotaet-autentifikatsiya-i-avtorizatsiya-v-jira-cloud-prilozheniyakh":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},1066,"kak-rabotaet-autentifikatsiya-i-avtorizatsiya-v-jira-cloud-prilozheniyakh",27,"jira","Jira","📋","Как работает аутентификация и авторизация в Jira Cloud приложениях?","Аутентификация и авторизация в Jira Cloud зависят от типа приложения (Forge, Connect) и сценария использования: OAuth 2.0 для user context, API Tokens для простых интеграций, JWT для Connect.\n\n### OAuth 2.0 (3-legged) — для user context\n\n```\nUser → Redirect → Atlassian Auth Server\n     ← Login + Consent →\n     ← Callback + code\n     → Exchange code → token\n     ← Access token + Refresh token\n```\n\n\u003Cdetails>\n\u003Csummary>Spring Boot OAuth 2.0 конфигурация\u003C\u002Fsummary>\n\n```java\n@Configuration\npublic class JiraOAuth2Config {\n\n    @Bean\n    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {\n        return http\n                .oauth2Client(Customizer.withDefaults())\n                .build();\n    }\n\n    @Bean\n    public ClientRegistration jiraClientRegistration(\n            @Value(\"${jira.oauth2.client-id}\") String clientId,\n            @Value(\"${jira.oauth2.client-secret}\") String clientSecret) {\n        return ClientRegistration.withRegistrationId(\"jira\")\n                .clientId(clientId)\n                .clientSecret(clientSecret)\n                .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)\n                .redirectUri(\"{baseUrl}\u002Fcallback\")\n                .authorizationUri(\"https:\u002F\u002Fauth.atlassian.com\u002Fauthorize\")\n                .tokenUri(\"https:\u002F\u002Fauth.atlassian.com\u002Foauth\u002Ftoken\")\n                .scope(\"read:jira-work\", \"write:jira-work\", \"read:jira-user\")\n                .build();\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Forge — автоматическая аутентификация\n\n```typescript\nimport api, { route } from '@forge\u002Fapi';\n\n\u002F\u002F От имени пользователя (scopes из manifest.yml)\nconst userResponse = await api.asUser().requestJira(route`\u002Frest\u002Fapi\u002F3\u002Fmyself`);\n\n\u002F\u002F От имени приложения\nconst appResponse = await api.asApp().requestJira(route`\u002Frest\u002Fapi\u002F3\u002Fissue\u002FPROJ-123`);\n```\n\n### Scopes (области доступа)\n\n| Scope | Описание |\n|---|---|\n| `read:jira-work` | Чтение задач, проектов, досок |\n| `write:jira-work` | Создание\u002Fобновление задач |\n| `read:jira-user` | Чтение профилей пользователей |\n| `manage:jira-project` | Управление проектами |\n| `manage:jira-configuration` | Управление конфигурацией |\n\n### Частые ошибки\n\n- Использование API Token в серверном приложении для нескольких пользователей — все действия от одного пользователя\n- Не обновлять refresh token — пользователю приходится переавторизовываться\n- Запрос избыточных scopes — Atlassian может отклонить приложение при review\n- Хранение client secret и shared secret в коде — используйте переменные окружения\n\n### Как используется в 2026\n\n- OAuth 2.0 — единственный рекомендуемый метод аутентификации для Cloud-приложений\n- Basic Auth полностью deprecated для Cloud (работает только с API tokens)\n- Atlassian вводит granular scopes для более точного контроля доступа\n- PKCE рекомендуется для public-клиентов (SPA, мобильные)\n\n> **На собеседовании:** разграничьте аутентификацию по типу приложения: в Forge она автоматическая (asUser\u002FasApp), в Connect — JWT с shared secret, для внешних интеграций — OAuth 2.0. API Tokens подходят только для скриптов. Refresh tokens обновляйте до истечения срока (обычно 90 дней).","","senior",[15,16,17,18,7],"security","jwt","jira-cloud","oauth",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":35,"featuredSnippetReady":36},"Аутентификация и авторизация в Jira Cloud приложениях — Gymterview","Аутентификация Jira Cloud: OAuth 2.0 (3LO, 2LO), API Tokens, JWT (Connect), автоматическая (Forge). Scopes, Spring Boot OAuth2 конфигурация.","Аутентификация Jira Cloud: OAuth, JWT, API Token, Forge — Gymterview","Методы аутентификации в Jira Cloud по типам приложений: Forge (автоматическая), Connect (JWT), внешние (OAuth 2.0, API Token).",[27,28,29,30,31,32,33,34],"OAuth 2.0","JWT","API Token","Forge auth","Connect JWT","scopes","Jira Cloud аутентификация","Spring Security","Зависит от типа приложения: Forge — автоматическая (api.asUser\u002Fapi.asApp, scopes в manifest.yml), Connect — JWT с shared secret (HMAC-SHA256), внешние интеграции — OAuth 2.0 (3LO для user context, 2LO для app context) или API Token (email + token). Scopes: read:jira-work, write:jira-work, read:jira-user. Refresh tokens обновлять до истечения (90 дней). PKCE для SPA\u002Fмобильных.",true]