Как отправить HTTP-файл cookie с использованием заголовка Set-Cookie через HTTP-соединение?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как отправить HTTP-файл cookie с использованием заголовка Set-Cookie через HTTP-соединение?

Сообщение Anonymous »

Я разрабатываю серверную часть веб-приложения с использованием Java Spring Framework и Spring Security. Я пытаюсь создать систему входа в систему с использованием JWT, отправляя токен доступа JWT с сервера клиенту в виде файлов cookie с помощью заголовка Set-Cookie.
Когда я тестирую localhost с Postman, у меня вроде проблем нет. Однако при попытке отправить файлы cookie клиенту на другом компьютере заголовок Set-Cookie, похоже, отклоняется клиентом.
Это логика получения запроса на вход от клиент и возвращает токен доступа JWT, если логин действителен:

Код: Выделить всё

    @PostMapping("/login")
public ResponseEntity authenticate(HttpServletRequest request, HttpServletResponse response, @RequestBody AuthRequestDTO requestDTO){

// Verify the client's login (username and password)
AuthDTO responseDTO = authService.authenticate(requestDTO);

// Set JWT access token if the client's login details are valid
ResponseCookie cookieAccessToken = ResponseCookie.from("accessToken", responseDTO.getAccessToken())
.maxAge(Duration.ofMinutes(5))
.domain(request.getRemoteAddr())
.sameSite("Lax")
.secure(false)
.httpOnly(true)
.build();

// Add access token as "Set-Cookie" key-value in HTTP response header.
response.addHeader(HttpHeaders.SET_COOKIE, cookieAccessToken.toString());

log.info("Access Token Cookie : " + cookieAccessToken.toString());

return ResponseEntity.ok().body(null);
}
Я считаю, что главное — это методы ResponseCookie. Я пробовал изменить многие параметры метода, но безрезультатно. Если кто-нибудь работал с отправкой файлов cookie через HTTP-соединение (не HTTPS — поскольку код находится на ранней стадии разработки), я был бы признателен за помощь в этом вопросе.
Для справки, это мой Настройки конфигурации Spring Security (AUTH_WHITELIST обеспечивает доступ к API входа в систему без необходимости использования токена доступа, а jwtAuthenticationFilter — это компонент Spring Bean моей пользовательской реализации JWT):

Код: Выделить всё

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{
http.csrf((csrf) -> csrf.disable())
.headers((header)->header.frameOptions((fo)->fo.sameOrigin()))
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers(AUTH_WHITELIST).permitAll()
.requestMatchers("/api/admin").hasAnyRole(ADMIN_MAIN.name(), ADMIN_SUB.name())
.requestMatchers("/api/file").hasAnyRole(ADMIN_MAIN.name(), ADMIN_SUB.name())
.requestMatchers("/**").hasAnyRole(ADMIN_MAIN.name(), ADMIN_SUB.name(), USER_ENTERPRISE.name(), USER_INDIVIDUAL.name(), VISITOR.name())
.anyRequest().authenticated());

http.sessionManagement((sessionManagement) -> sessionManagement
.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authenticationProvider(authenticationProvider)
.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);

http.logout((logout) -> logout.logoutUrl("/api/auth/logout").addLogoutHandler(logoutHandler)
.logoutSuccessHandler((request, response, authentication) -> SecurityContextHolder.clearContext()));
return http.build();
}
Я пробовал получить доступ к API входа в систему с нескольких клиентов. Я пытался получить доступ к API входа в Google Chrome, Mozilla Firefox и Postman с другого компьютера (т. е. с другого IP-адреса сервера).
РЕДАКТИРОВАТЬ: у меня настроен CORS в отдельном файле. .

Код: Выделить всё

    @Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE");
}
РЕДАКТИРОВАТЬ 2: Я также пытался явно установить IP-адрес клиентского компьютера в качестве домена. По какой-то непонятной причине это тоже не сработало.

Подробнее здесь: https://stackoverflow.com/questions/781 ... connection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»