[Spring Security] 로그인/로그아웃 구현 및 타임리프 적용
·
Spring Security
1. 개요리엑트와 같은 클라이언트 사이드 렌더링일 경우 JWT 토큰을 사용해 로그인 처리를 했겠지만, 저같은 경우 서버 사이드 렌더링인 타임리프를 사용해 JWT 토큰 사용은 곤란했습니다. 따라서 시큐리티의 세션으로 로그인 로그아웃을 구현했고, formLogin을 사용했습니다.2. 설정 정보전체 설정 코드아래는 SecurityConfig 설정입니다. 저는 스프링 부트 3.1, 스프링 시큐리티 6.1 버전을 사용하고 있습니다.@Configuration@RequiredArgsConstructorpublic class SecurityConfig { private final MemberDetailsService memberDetailsService; private static final int ONE_MONT..
[Spring Security] 인증(Authentication), 인가(Authorization), 권한(Authority), 역할(Role) 알아보기
·
Spring Security
1. 인증과 인가인증은 시스템에 접근하기 위해 회원의 정보를 확인하는 것입니다. 인증은 인가 이전에 완료되며, 보통 회원의 로그인 정보가 필요합니다. 만약 인증이 실패한다면, 클라이언트는 401 UNAUTHORIZED 에러를 응답받습니다.인가란 특정 리소스에 접근하려는 회원의 권한을 확인하는 것입니다. 인가는 항상 인증 이후에 일어나며, 회원의 권한(privilege)이나 역할(role)이 필요합니다. 만약 인가가 실패한다면, 클라이언트는 403 FORBIDDEN 에러를 응답받습니다.정리인증은 인가 전에 완료된다.인증이 실패하면 401 UNAUTHORIZED 에러를 응답받는다.인가는 리소스에 접근하려는 회원의 권한을 확인하는 것이다. 예를 들어 본인이 작성한 게시글이 아닌데 삭제하려고 할 때이다.인가가 ..
[Spring Security] CORS, CSRF란?
·
Spring Security
CORS란?CORS란 “Cross-Origin Resource Sharing”의 약자입니다. CORS는 프로토콜인데, 서로 다른 origin일 시 리소스와 상호 작용하기 위해 클라이언트인 브라우저에서 실행되는 스크립트입니다. 예를 들어 UI 앱에서 서로 다른 도메인인 API를 호출할 시 CORS로 인해 기본적으로 차단됩니다. 이는 대부분의 브라우저에서 구현되는 W3C의 스펙입니다.따라서 CORS는 보안이나 공격과 같은 문제가 아니라 서로 다른 Orgin 간의 데이터 및 통신을 할 때 브라우저에서 이를 중지하기 위해 제공하는 기본 보호 기능입니다.예를 들어 큰 규모의 IT 기업일 경우 백엔드 서버와 프론트엔드 서버의 IP가 서로 다릅니다. 이때 프론트엔드 서버에서 클라이언트가 로그인을 했을 때, 백엔드의 ..
[Spring Security] Password Encoder 알아보기
·
Spring Security
1. Password Encoder의 역할?비밀번호를 저장할 때, 일반 플레인 텍스트를 데이터베이스에 저장하면 안 됩니다. DBA나 해커가 고객 데이터베이스에 접근한다면, 비밀번호를 볼 수 있기 때문입니다. 따라서 비밀번호는 암호화 과정을 거쳐 데이터베이스에 저장하는 것이 바람직합니다. 여기 몇 가지 암호화 과정이 있습니다. 인코딩 방법인코딩 방법은 데이터를 한 형식에서 다른 형식으로 변환하는 프로세스이며 암호화와는 관련이 없습니다. 이 방법은 이미 너무 알려져 있으며, 복호화도 쉽습니다. 따라서 인코딩은 보안이 필요한 데이터에 사용되지 않습니다. 인코딩 방식은 ASCII, BASE64, UNICODE 방식이 있습니다. Encryption 방법Encryption 방법은 테이터를 변환하는 프로세스로 기밀을..
[Spring Security] UserDetailsService와 UserDetails 및 Authentication의 차이점
·
Spring Security
1. UserDetailsManager 이해하기스프링 시큐리티 필터를 거친 다음, AuthenticationManager는 적절한 Provider를 선택한 후 UserDetailsManager를 호출합니다.상속도전반적인 상속도입니다. 최하단의 3개의 클래스는 Spring Security에서 기본적으로 제공하는 매니저이며, 개발자가 정의한 매니저를 사용할 수 있습니다.1. UserDetailsServiceUserDetailService에서는 클라이언트에게 받은 username을 검색합니다. 해당 인터페이스에는 loadUserByUsername() 메소드만 정의되어 있습니다.public interface UserDetailsService { UserDetails loadUserByUsername(String..
[Spring Security] 스프링 시큐리티란?
·
Spring Security
1. 스프링 시큐리티가 필요한 이유은행을 생각합시다. 은행에는 수많은 보안이 있습니다. 보안 요원부터 24시간 돌아가는 CCTV와 금고까지... 은행을 이토록 보호하는 이유는 무엇일까요? 바로 은행에는 귀중한 가치인 금과 돈이란 자산이 있기 때문입니다.이처럼 우리의 프로젝트에는 고객들의 귀중한 가치인 데이터가 있습니다. 그리고 이를 지키기 위해 우리는 무언가 조치를 취해야 합니다. 그래서 등장한 것이 스프링 시큐리티 프레임워크입니다.2. 스프링 시큐리티 흐름서블릿과 필터자바 웹 어플리케이션 안의 필터는 서블릿 컨테이너의 요청과 응답을 가로챌 수 있습니다. 이로 인해 어플리케이션의 핵심 비즈니스 로직이 실행되기 전에 특정 작업을 수행할 수 있습니다. 스프링 시큐리티는 이런 필터를 사용해서 웹 어플리케이션 ..
코더 제이콥
'Spring Security' 카테고리의 글 목록