Spring Security(8)
-
Refresh Token이 CSRF 보호가 필요한 이유와 설정 방법
CORS 허용 설정을 통해 다른 출처(Origin)의 접근을 허용할 수 있습니다.하지만 GET외의 요청은 CSRF 차단하므로, 사용자 인증/인가와는 별개로 403 Forbidden이 발생합니다.이번에는 CSRF가 무엇인지 되짚어보고, Spring Security에서의 기본 CSRF 동작 이해와 Refresh Token에 CSRF 설정이 필요한 이유 및 설정 방법에 대해 다룹니다. CSRF (Cross Site Request Forgery) 란?Refresh Token의 CSRF 보호가 필요한 이유Spring Security의 CSRF 기본 설정REST + JWT(Refresh Token Rotation)의 CSRF 설정CSRF 핸들러 설정: CsrfTokenRequestHandler회고참고 CSRF (C..
2025.11.24 -
[Spring Security] Spring Security
이 글에서는 Spring Security에 대한 개요 및 주요 구성과 관련 정보에 대해 학습한 내용을 공유합니다.Spring Security주요 구성 요소관련 정보회고Spring Security인증/인가 등 보안 전반을 표준화해 애플리케이션을 안전하게 보호하는 스프링 기반 보안 프레임워크Spring Security는 지속적인 보안 업데이트를 제공하고, 실제 사용되는 검증된 보안 기능을 제공합니다.개발자는 복잡한 보안 로직을 직접 구현하지 않아도 높은, 수준의 보안 설정이 가능하며 비즈니스 로직에 집중할 수 있습니다.세션 관리, 암호화, CSRF 방어, CORS 정책 적용, 보안 이벤트 처리 등 실무에서 필요한 공통 보안 기능 내장OAuth2, JWT, LDAP 등 현대화된 보안 방식을 제공합니다.이 가능..
2025.11.17 -
개발자 유미 - 스프링 시큐리티 6. DB 연결
스프링 시큐리티 6 : DB 연결 개발자 유미 | 커뮤니티 개발자 유미 | 커뮤니티 www.devyummi.com 데이터베이스의 필요성로그인한 사용자의 인증을 위해서는 회원 정보를 저장해야한다.이를 위해서는 DB가 필요하며 JPA를 사용해 DB 쿼리문을 쉽게 생성할 수 있다.build.gradle 설정프로젝트에 MySQL 및 JAP 의존성을 추가 후 리프레쉬 후 필요한 파일을 다운받고 활성화를 해주자.dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.mysql:mysql-connector-j'}application.properties 설정스프링 서버에서 DB에 ..
2025.03.07 -
개발자 유미 - 스프링 시큐리티 5. BCrypt 암호화 메소드
스프링 시큐리티 5 : BCrypt 암호화 메소드 개발자 유미 | 커뮤니티 개발자 유미 | 커뮤니티 www.devyummi.com 단방향 해시 암호화로그인을 통한 사용자 인증 시 사용자의 비밀번호에 대해 단방향 해시 암호화를 진행해야 한다.이를 통해 비밀번호의 유출로부터 안전해지고, 복호화가 불가능해 보안을 지킬 수 있다.스프링 시큐리티는 비밀번호의 암호화를 위해 BCrypt Passwrod Encoder를 사용하는 것을 권장한다.BCrypt Passwrod Encoder 반환 빈 등록BCrypt Passwrod Encoder를 반환하는 메소드를 만들고, 빈으로 등록하자.package com.example.testsecurity.config;import org.springframework.context...
2025.03.07 -
개발자 유미 - 스프링 시큐리티 4. 커스텀 로그인 설정
스프링 시큐리티 4 : 커스텀 로그인 설정 개발자 유미 | 커뮤니티 개발자 유미 | 커뮤니티 www.devyummi.com 기존의 Config 설정을 다시 확인해보자. @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests((auth)->auth .requestMatchers("/", "/login").permitAll() .requestMatchers("/admin").hasRole("ADMIN") ..
2025.03.07 -
개발자 유미 - 스프링 시큐리티 3. Security Config 인가 작업
스프링 시큐리티 3 : Security Config 인가 작업 개발자 유미 | 커뮤니티 개발자 유미 | 커뮤니티 www.devyummi.com 인가특정 경로 요청시 Controller보다 앞서 Filter에서 Spring Security가 다음과 같은 검증을 진행허용된 접근 경로인지(로그인을 통해)인가 된 사용자인지접근에 필요한 권한을 가지는지 검증 SecurityConfing.java 생성/config/SecurityConfing.javapackage com.cos.testsecurity.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;imp..
2025.02.09 -
개발자 유미 - 스프링 시큐리티 2. 프로젝트 생성
스프링 시큐리티 2 : 프로젝트 생성 개발자 유미 | 커뮤니티 개발자 유미 | 커뮤니티 www.devyummi.com 프로젝트 생성필수 의존성Spring WebLombokMustacheSpring SecuritySpring Data JPAMySQL Driverstart.spring.ioMainController.java 생성/controller/MainController.javapackage com.example.testsecurity.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class MainContro..
2025.02.09 -
개발자 유미 - 스프링 시큐리티 1 : 실습 목표 및 간단한 동작 원리
https://www.youtube.com/watch?v=y0PXQgrkb90&list=PLJkjrxxiBSFCKD9TRKDYn7IE96K2u3C3U&index=1 ⛳ 목표Spring Security를 활용한 인증/인가 구현MySQL을 활용한 회원 정보 저장(영속성)구현 기능인증 : 로그인 기능 구현인가 : 경로별 접근 권한 설정회원가입 : 회원 정보 저장 시큐리티 동작 원리Client의 요청 발생Servlet Container가 요청을 받고 여러 개의 Filter를 거쳐 컨트롤러에 도달Spring Security를 활성화하면 Filter에서 요청을 가로챔Filter에서 인증 인가 확인 후 최종적으로 접근 허용 실습 버전Spring Boot 3.1.5Security 6.1.5Spring Data JPA..
2025.02.05