[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rest-api-kakie-sposoby-autentifikatsii-ispolzuyutsya-v-rest-api":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":16,"progress":17,"seo":18},1125,"kakie-sposoby-autentifikatsii-ispolzuyutsya-v-rest-api",34,"rest-api","REST API","🌐","Какие способы аутентификации используются в REST API?","Аутентификация в REST API — процесс проверки личности клиента, выполняемый при каждом запросе в силу stateless-природы REST.\n\n### 1. Basic Authentication\n\nЛогин и пароль передаются в заголовке `Authorization` в кодировке Base64.\n```\nGET \u002Fapi\u002Fusers HTTP\u002F1.1\nAuthorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=\n```\n- Простота реализации.\n- Обязательно использовать только по HTTPS.\n- Учётные данные передаются при каждом запросе.\n- Не рекомендуется для публичных API.\n\n### 2. Token-based (Bearer Token \u002F JWT)\n\nКлиент получает токен при аутентификации и использует его в последующих запросах.\n```\nPOST \u002Fapi\u002Fauth\u002Flogin\n{\"username\": \"user\", \"password\": \"pass\"}\n\nОтвет:\n{\"accessToken\": \"eyJhbGciOiJIUzI1NiJ9...\", \"refreshToken\": \"...\"}\n```\n\n```\nGET \u002Fapi\u002Fusers HTTP\u002F1.1\nAuthorization: Bearer eyJhbGciOiJIUzI1NiJ9...\n```\n\nJWT (JSON Web Token) состоит из трёх частей: Header.Payload.Signature.\n```\nHeader:    {\"alg\": \"HS256\", \"typ\": \"JWT\"}\nPayload:   {\"sub\": \"42\", \"name\": \"Иван\", \"role\": \"ADMIN\", \"exp\": 1700000000}\nSignature: HMACSHA256(base64(header) + \".\" + base64(payload), secret)\n```\n\nПреимущества JWT: stateless (сервер не хранит сессии), содержит информацию о пользователе (claims), легко масштабируется.\n\n### 3. API Key\n\nКлюч передаётся в заголовке или query-параметре.\n```\nGET \u002Fapi\u002Fusers HTTP\u002F1.1\nX-API-Key: abcdef123456\n```\nИспользуется для межсервисного взаимодействия и публичных API с ограниченным доступом.\n\n### 4. OAuth 2.0\n\nПротокол авторизации, позволяющий приложению получить ограниченный доступ к ресурсам пользователя без передачи его учётных данных. Подробнее см. следующий вопрос.\n\n\u003Cdetails>\u003Csummary>Пример конфигурации Spring Security для JWT\u003C\u002Fsummary>\n\n```java\n@Configuration\n@EnableWebSecurity\npublic class SecurityConfig {\n\n    @Bean\n    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {\n        return http\n            .csrf(csrf -> csrf.disable())\n            .sessionManagement(session ->\n                session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))\n            .authorizeHttpRequests(auth -> auth\n                .requestMatchers(\"\u002Fapi\u002Fauth\u002F**\").permitAll()\n                .requestMatchers(\"\u002Fapi\u002Fadmin\u002F**\").hasRole(\"ADMIN\")\n                .anyRequest().authenticated())\n            .addFilterBefore(jwtAuthenticationFilter(),\n                             UsernamePasswordAuthenticationFilter.class)\n            .build();\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n> **На собеседовании:** нужно знать все четыре способа и понимать, когда какой использовать. Частая ошибка — не упомянуть, что JWT — stateless, а Basic Auth обязателен только по HTTPS.","","middle",[15],"rest",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":20,"featuredSnippetReady":23},"Какие способы аутентификации используются в REST API? — Gymterview","Аутентификация в REST API — процесс проверки личности клиента, выполняемый при каждом запросе в силу stateless-природы REST.","Аутентификация в REST API — процесс проверки личности клиента, выполняемый при каждом запросе в силу stateless-природы R",[15,13],true]