[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-sovremennaya-razrabotka-web-kak-rabotaet-oauth-2-1-i-jwt-v-mikroservisnoy-arkhitekture":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":20,"progress":21,"seo":22},1193,"kak-rabotaet-oauth-2-1-i-jwt-v-mikroservisnoy-arkhitekture",37,"sovremennaya-razrabotka-web","Современная разработка WEB","🌐","Как работает OAuth 2.1 и JWT в микросервисной архитектуре?","OAuth 2.1 — упрощённая и более безопасная версия OAuth 2.0, в которой обязателен PKCE для всех клиентов, запрещены implicit flow и password grant.\n\n### JWT vs Opaque Tokens\n\n| Критерий | JWT | Opaque Token |\n|----------|-----|-------------|\n| Валидация | Локально (по подписи) | Запрос к Authorization Server |\n| Размер | Большой (payload в токене) | Маленький (ссылка) |\n| Отзыв | Сложно (blacklist \u002F short TTL) | Легко (удалить на сервере) |\n| Информация | Содержит claims | Только идентификатор |\n| Подходит для | Микросервисов (нет доп. запросов) | Монолитов с требованиями к безопасности |\n\nРекомендация: JWT для межсервисного взаимодействия, короткий TTL (5-15 минут), refresh token для обновления.\n\n### Keycloak как Identity Provider\n\n```yaml\n# docker-compose.yml (dev-окружение)\nservices:\n  keycloak:\n    image: quay.io\u002Fkeycloak\u002Fkeycloak:26.0\n    command: start-dev\n    ports:\n      - \"8180:8080\"\n    environment:\n      KEYCLOAK_ADMIN: admin\n      KEYCLOAK_ADMIN_PASSWORD: admin\n      KC_DB: postgres\n      KC_DB_URL: jdbc:postgresql:\u002F\u002Fpostgres:5432\u002Fkeycloak\n```\n\n### Конфигурация Resource Server\n\n```yaml\nspring:\n  security:\n    oauth2:\n      resourceserver:\n        jwt:\n          issuer-uri: https:\u002F\u002Fkeycloak.example.com\u002Frealms\u002Fmy-app\n          jwk-set-uri: https:\u002F\u002Fkeycloak.example.com\u002Frealms\u002Fmy-app\u002Fprotocol\u002Fopenid-connect\u002Fcerts\n```\n\n### Частые ошибки\n\n- Длинный TTL для access token (часы, дни). Рекомендация: 5-15 минут\n- Отсутствие PKCE для public клиентов\n- Хранение секретов в коде или конфигурационных файлах\n\n### Как используется в 2026\n\nKeycloak остаётся лидером среди open-source Identity Provider. OAuth 2.1 формально стандартизирован. Spring Authorization Server зрелый продукт для случаев, когда нужен собственный Authorization Server.\n\n> **На собеседовании:** ключевой вопрос senior-уровня: \"Как отзывать JWT?\" Правильный ответ: JWT по природе не отзываемый, поэтому используют короткий TTL (5-15 мин) + refresh token. Для критичных систем — blacklist в Redis. Упоминание OAuth 2.1 (vs 2.0) и PKCE показывает актуальные знания.","","senior",[15,16,17,18,19],"keycloak","security","jwt","oauth","microservices",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":38,"featuredSnippetReady":39},"Как работает OAuth 2.1 и JWT в микросервисной архитектуре — Gymterview","OAuth 2.1 и JWT для микросервисов: PKCE, JWT vs Opaque Tokens, Keycloak как Identity Provider, отзыв токенов, Resource Server. Senior-уровень собеседования.","OAuth 2.1 и JWT в микросервисной архитектуре — Gymterview","OAuth 2.1: PKCE, JWT vs Opaque Tokens, Keycloak, отзыв токенов через короткий TTL + refresh token. Senior-вопросы.",[28,29,30,31,32,33,34,35,36,37],"OAuth 2.1","JWT","PKCE","Keycloak","Opaque Token","refresh token","Resource Server","микросервисы","Spring Authorization Server","собеседование","OAuth 2.1 — упрощённая версия OAuth 2.0: PKCE обязателен, implicit flow и password grant запрещены. JWT для межсервисного взаимодействия (валидация по подписи без запроса к auth-серверу), короткий TTL 5-15 минут + refresh token. Keycloak — лидер open-source Identity Provider. JWT не отзываемый по природе — используют blacklist в Redis для критичных систем.",true]