build.gradle 에 다음 의존성 추가implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0' SecurityConfig 에 다음 사항 permitAll() 적용new AntPathRequestMatcher("/swagger-ui/**"),new AntPathRequestMatcher("/v3/api-docs/**"),new AntPathRequestMatcher("/swagger-resources/**"),new AntPathRequestMatcher("/swagger-ui.html"),new AntPathRequestMatcher("/webjars/**") JwtFilter 에 다음 사항을 화이트리스트에 적용new Ht..
SpringBoot
▶ 실제 토큰 발급 흐름 사용자가 로그인하면 서버에서 Access Token과 Refresh Token을 발급한다.Access Token은 HTTP 응답 헤더로 반환.Refresh Token은 HttpOnly 쿠키에 저장.클라이언트는 API 호출 시 Access Token을 로컬 변수에 임시 저장하고 요청에 사용한다.Access Token이 만료되면, 클라이언트는 Refresh Token을 기반으로 서버에 새 Access Token을 요청한다.서버에서 Refresh Token 을 검증한 후 Access Token과 Refresh Token을 재발급한다.재발급에 사용한 Refresh Token을 쿠키에서 삭제하고 새로 발급 받은 Refresh Token을 저장한다.1. 토큰 발급▶ 백엔드 : 로그인 성공..
토큰은 일반적으로 쿠키, 세션스토리지, 로컬 스토리지, 로컬변수 등에 저장한다.사용자의 토큰을 탈취당하지 않게 하기 위해 어떤 방식을 사용할 지 선택해야한다. 1. 쿠키에 저장하는 경우특징브라우저에서 HTTP 요청 시 자동으로 서버로 전송됩니다.보안 옵션(HttpOnly, Secure, SameSite)을 통해 공격 방지 가능.장점자동 전송: 브라우저가 쿠키를 자동으로 서버로 전송하므로 추가 코드 없이 편리.HttpOnly 보호: JavaScript로 접근할 수 없어 XSS 공격에 강함.옵션 강화 가능: Secure와 SameSite로 보안을 강화할 수 있음.단점CSRF 취약: 기본적으로 CSRF에 취약하며 추가 보호 장치가 필요.쿠키 크기 제한: 브라우저 별로 쿠키 크기에 제한(보통 4KB)이 있음.설..
쿠키(Cookie)란?브라우저(크롬, 엣지)가 서버로부터 받은 데이터를 클라이언트(사용자)의 컴퓨터에 저장하는 작은 파일로주로 사용자 식별 정보나 설정 값을 저장한다. 특징 1. 브라우저는 서버에서 받은 쿠키를 저장해두었다가 동일한 서버로 요청할 때마다 쿠키를 함께 전송한다.2. 참고로 쿠키는 도메인에 따라 제한이 된다.예를 들면 유튜브가 준 쿠키는 유튜브에게만 전송된다. 3. 쿠키는 유효기간이 있다.서버가 정한 기간에 따라 유효하다.4. 쿠키는 인증뿐만 아니라 여러가지 정보를 저장할 수 있다.예를 들면 내가 유튜브에 들어가서 언어설정을 한국어로 바꾸면 서버는 내가 선택한 언어를 저장한 쿠키를 주고다음에 내가 유튜브에 들어갈 때 쿠키는 요청과 함께 서버로 보내지고 유튜브는 내가 설정한 언어로 이루어진 ..
@CreatedDate Entity가 생성될 때 자동으로 현재 날짜와 시간을 저장하는 어노테이션이다.이 어노테이션이 적용된 필드는 Entity가 생성될 때마다 데이터베이스에 현재 날짜와 시간이 자동으로 저장된다. @LastModifiedDateEntity가 수정될 때 자동으로 현재 날짜와 시간을 저장하는 어노테이션이다.이 어노테이션이 적용된 필드는 Entity가 수정될 때마다 데이터베이스에 현재 날짜와 시간이 자동으로 저장된다. ▶사용방법메인 클래스에 @EnableJpaAuditing 붙이기 엔티티 상단에 @EntityListeners(AuditingEntityListener.class) 엔티티 하단에 @CreatedDate 와 @LastModifiedDate 붙이기
gradle 에 다음과 같은 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-mail' application.properties 에 다음 코드 추가spring.mail.host=smtp.naver.comspring.mail.port=465spring.mail.username=네이버아이디@naver.comspring.mail.password=네이버비밀번호spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.ssl.enable=true 임시 비밀번호 생성 클래스public class TempPwdGenerator { //임시 비밀번호 생성 클래스 ..
※순서1. 스프링 시큐리티에 로그인 URL 등록하기___(SecurityConfig.java)2. 회원 컨트롤러에 URL 매핑 추가하기______(UserController.java)3. 로그인 화면 구현____________________(login_form.html)4. 회원 리포지터리 수정하기_____________(UserRepository.java)5. 권한 설정 파일 생성하기______________(UserRole.java)6. UserSecurityService 서비스 생성하기7. 스프링 시큐리티 설정 수정하기8. 로그인 화면 수정하기9. 로그아웃 기능 구현하기 1. 스프링 시큐리티에 로그인 URL 등록하기 SecurityConfig.java 에 다음 코드 추가.formLogin((fo..
※순서1. 회원 엔티티 구현__________________(User.java)2. 회원 리포지터리, 서비스 구현_________(UserRepository.java, UserService.java)3. DTO 구현_______________________ (UserCreateForm.java)4. 회원 컨트롤러 구현_________________(UserController.java)5. 회원가입 화면 구현_________________(signup_form.html)6. 중복 회원가입 방지 1. 회원 엔티티 구현 User.javapackage com.mysite.sbb.user;import jakarta.persistence.Column;import jakarta.persistence.Ent..
▶ 설치 build.gradle 파일에 다음과 같이 추가dependencies{ implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'} ▶ 설정스프링 시큐리티 설정을 담당할 SecurityConfig.java 파일 생성package com.mysite.seouldensity;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.s..