Springboot에서 SpringSecurity는 어떻게 초기화되는가? - 중
·
Web-Spring
개요이전 포스팅에서 Springboot의 초기화 시작점에서 SpringSecurity의 세팅이 어떻게 이뤄지는지 보았다면,이번 포스팅에서는 SpringSecurity내에 기본 필터들이 어떻게 초기화과정을 거치는지 알 수 있어요. 흔히 `securityFilterChain` Bean을 설정하는 코드에서`addFilterBefore()` 이나 `addFilterAfter()` 등을 사용하여 커스텀 시큐리티 필터를 등록하곤 해요이 메소드들의 동작도 함께 알아봅시다. 사전지식이전 포스팅의 사전지식과 동일하며, 해당 포스팅의 글을 읽고 오면 더욱 좋습니다.이전 포스팅을 읽은 적이 없다면, SecurityArchitecture을 이해하고 오면 좋습니다. 저번 포스팅에서 넘어오자면...저번 포스팅의 마지막에서 `We..
Springboot에서 SpringSecurity는 어떻게 초기화되는가? - 상
·
Web-Spring
개요흔히 Springboot에서 로그인 관련 인증/인가를 구현한다고 하면 기계처럼 블로그를 뒤져서라도 SpringSecurity를 도입하려고 시도해요// build.gradleimplementation 'org.springframework.boot:spring-boot-starter-security'implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'또한 SecurityConfig와 같은 Java Configuration 파일을 생성하여 SecurityFilterChain Bean을 구성하고@EnableWebSecurity와 같은 어노테이션을 붙여서 마무리해요.이 과정까지 성공한다면 SpringSecurity 덕에 쉽게 인..
SpringSecurity에서 OAuth2 로그인 시 쿼리 파라미터 유지하기
·
Web-Spring
개요이 문서는 SpringSecurity와 Authorization Code Grant 방식에서의 OAuth2 Client를 통한 소셜로그인이 구축된 환경에서 소셜로그인 요청시에 포함된 쿼리 파라미터를 최종 리다이렉트 주소까지 유지하는 방법을 알려줘요이 기능으로 OAuth2 Client 의 최종 리다이렉트 주소를 동적으로 지정하는 등의 다양한 활용이 가능해요Authorization Code Grant 개념OAuth2에서는 여러 인증방식이 있고, 그 중에서 kakao와 Google등의 소셜로그인 제공자에게 인가코드(Authorization Code)를 전달하는 방식을 Authorization Code Grant 이라고 해요Authorization Code Grant 기본 동작Authorization Cod..
쿠키와 SameSite, Secure, HttpOnly
·
Web-Spring
상황네이버카페의 경우 cafe.naver.com으로 본 네이버의 도메인에서 서브도메인을 사용한다.이와 같이 현재 개발중인 프로젝트도 서브도메인 양식을 사용하게 되는데,이에 따라 프론트에서도 서브도메인별 서로 다른 레포지토리를 활용한다고 들었다. 그러면 중요한것이 인증정보가 서브도메인별로 유지되어야 하는데, 이를 위해서 SSO라는 걸 도입하기도 한다.당장에 인증 체계를 빨리 구현하고 다른 도메인의 비즈니스 로직을 구현해야 한다고 판단했고,쿠키를 통해 서브도메인간 인증정보를 유지해야겠다는 생각이 들었다. 이 과정에서 쿠키를 추가할때 HttpServletResponse에 addCookie 메소드를 통해서 수행되고흔히 Spring에서 쿠키를 다룬다고 하면 JDK 21 기준 jakarta.servlet.http...
@JsonTypeInfo 를 통해 유연하게 Json과 Java객체 매핑하기
·
Web-Spring
상황게시판에 대해서 JPA와 Springboot를 통해 CRUD를 개발하려 하는데게시판은 종류가 여럿 존재하고(자유 게시판, 공지 게시판 등등),게시판 종류와 상관없는 전체 조회의 기능도 제공해야 했었다.또한 게시판별 종류별로 세부 요소들이 다를 수 있었다. 예를들어 자유게시판은 텍스트 에디터로 만들어진 콘텐츠가 있으며,공지 게시판에는 다른 게시판에는 없는 "공지 종류"와 같은 추가적인 요소가 존재하는것이었다. 따라서 생각한 DB 테이블 설계는 게시판별로 다른 요소를가진 테이블을 게시판 종류별로 설계하고공통요소들 (조회수, 좋아요수, 생성날짜, 게시날짜, 업데이트 날짜 등) 을 하나의 테이블로 관리하는것이다.공통요소가 있는 테이블과 게시판 종류별 테이블과의 1:1 관계를 맺는것으로 결론지었다. 이 과정에..
JUnit
·
Web-Spring
JUnit 5 의 간단한 개념 아래의 링크를 참고 하였다. https://junit.org/junit5/ JUnit 5 The JUnit team uses GitHub for version control, project management, and CI. junit.org JUnit 5는 JVM을 테스팅 하기위한 개발자에게 제공하는 테스팅 프레임워크 이다. JUnit의이전 버전들과는 달리 Junit5는 세 가지 다른 특징으로 구성되어있다. JUnit 5 = JUnit Platform + JUnit jupiter + JUnit Vintage JUnit Platform JUnit Platform (이하 플렛폼) 은 JVM에 대한 테스팅 프레임워크를 실행하기 위한 기반을 제공한다. 또한 플렛폼 위에서 동작하는..
mybatis & hikari 설정
·
Web-Spring
본 포스팅은 Spring boot 3.2.0, Java 17, MySQL을 기준으로 설명한다. 프로젝트 구조 pom.xml 4.0.0 org.springframework.boot spring-boot-starter-parent 3.2.0 com.khc demo 0.0.1-SNAPSHOT demo Demo project for Spring Boot 17 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime true org.springframework.boot spring-boot-starter-test test com.mysql mysql-connector-j 8.0.33 or..