no image
[Spring Security] 09 - 세션 설정
로그인 정보 사용자가 로그인을 진행한 뒤 사용자 정보는 SecurityContextHolder에 의해서 서버 세션에 관리된다. 이때 세션에 관해 세션의 소멸 시간, 아이디당 세션 생성 개수를 설정하는 방법에 대해 알아보자. 세션 소멸 시간 설정 세션 타임아웃 설정을 통해 로그인 이후 세션이 유지되고 소멸하는 시간을 설정할 수 있다. 세션 소멸 시점은 서버에 마지막 특정 요청을 수행한 뒤 설정한 시간만큼 유지된다. (기본 1800초) application.properties //초 기반 server.servlet.session.timeout=1800 //분 기반 server.servlet.session.timeout=90m 다중 로그인 설정 하나의 아이디에 대해서 여러 브라우저에 로그인하는 방법 https..
2024.02.26
no image
[Spring Securitiy] 08 - 세션 정보 확인
세션(Session) 세션(Session)은 사용자가 웹 사이트에 로그인했을 때 사용자에 대한 정보를 일정 기간 동안에 서버에 기록하고 보관함으로써 사용자를 관리하기 위한 목적으로 사용되는 저장 공간이다. 세션 정보 확인 1. id 확인하기 String id = SecurityContextHolder.getContext().getAuthentication().getName(); SecurityContextHolder.getContext() - Spring Security에서 현재 실행 중인 보안 컨텍스트를 제공하는 클래스이다. 이를 통해 현재 사용자의 인증 정보에 접근할 수 있다. getAuthentication() - 현재 인증된 사용자의 인증 정보를 반환한다. 이 정보는 Authentication 인..
2024.02.25
no image
자바 [Programmers] 1단계 - 없는 숫자 더하기
class Solution { public int solution(int[] numbers) { int answer = 0; int[] arr = new int[10]; for(int i=0; i
2024.02.24
no image
[Spring Security] 07 - 로그인 검증 로직
인증 Security를 통해 인증을 진행하는 방법은 사용자가 Login 페이지를 통해 아이디, 비밀번호를 POST 요청시 Spring Security가 데이터베이스에 저장된 회원의 정보를 조회 후 비밀번호를 검증하고 서버 세션 저장소에 해당 아이디에 대한 세션을 저장한다. UserDetails Spring Security에서 사용자의 정보를 담는 인터페이스이다. Spring Security에서 사용자의 정보를 불러오기 위해서 구현해야 하는 인터페이스로 기본 오버라이드 메서들을 구현해야 한다. 메소드 리턴 타입 설명 기본값 getAuthorities() Collection
2024.02.22
no image
[Spring Security] 06 - 회원가입 로직
회원가입 회원 정보를 통해 인증 / 인가 작업을 진행하기 때문에 사용자로부터 회원 가입을 진행한 뒤 데이터베이스에 회원 정보를 저장한다. SecurityConfig package com.gdy.springsecurity.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.E..
2024.02.21
no image
[Spring Security] 05 - BCrypt 암호화 메서드
Security BCrypt Spring Security는 사용자 인증(로그인)시 비밀번호에 대해 단방향 해시 암호화를 진행하여 저장되어 있는 비밀번호와 대조한다. 따라서 회원가입 시 비밀번호 항목에 대해서 암호화를 진행해야한다. Spring Security는 암호화를 위해 BCrypt Password Encoder를 제공하고 권장한다. 따라서 해당 클래스를 return하는 메소드를 만들어 @Bean으로 등록하여 사용하면 된다. package com.gdy.springsecurity.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; impo..
2024.02.21
no image
[Spring Security] 04 - 커스텀 로그인
Config 설정 후 로그인 페이지 Spring Security Config 클래스 설정 후 특정 경로에 대한 접근 권한이 없는 경우 자동으로 로그인 페이지로 리다이렉팅 되지 않고 오류 페이지가 발생한다. 위 문제를 해결하기 위해 Config 클래스를 설정하면 로그인 페이지 설정도 진행해야 한다. Security Config 로그인 페이지 설정 및 로그인 경로 package com.gdy.springsecurity.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config...
2024.02.21
no image
[Spring Security] 03 - Security Config 클래스
인가 특정한 경로에 요청이 오면 Controller 클래스에 도달하기 전 필터에서 Spring Security가 검증을 한다. 해당 경로의 접근은 누구에게 열려 있는지 로그인이 완료된 사용자인지 해당되는 role을 가지고 있는지 Security Configuration 인가 설정을 진행하는 클래스 package com.gdy.springsecurity.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity..
2024.02.21