Spring Boot 기반으로 개발하는 Spring Security : 인증 개념 이해 - Authentication
2023. 4. 20. 22:16
무조건 따라하기/Spring Boot 기반 Security
Authentication이란? 스프링 시큐리티에서 Authentication은 사용자의 인증 정보를 나타내는 인터페이스이다. 스프링 시큐리티는 Authentication 객체를 만들고, 이를 보유하고, 인증 정보를 검증하고, 사용자 인증 정보를 유지 관리하고, 사용자 권한을 부여하기 위해 사용된다. 이러한 인증 과정은 보안에 중요한 역할을 한다. 인증 시 id 와 password 를 담고 인증 검증을 위해 전달되어 사용 되며, 인증이 성공하면 사용자는 시스템에 대한 액세스 권한을 부여받고 SecurityContext 에 저장되어 전역적으로 참조가 가능하다 Authentication 인터페이스의 구조는 아래와 같다. principal : 사용자 아이디 혹은 User 객체를 저장 credentials : ..
Spring Boot 기반으로 개발하는 Spring Security : CSRF, CsrfFilter
2023. 4. 19. 22:08
무조건 따라하기/Spring Boot 기반 Security
CSRF CSRF란? CSRF는 Cross-Site Request Forgery의 약어로, "사이트간 요청 위조"를 의미한다. 공격자가 사용자가 로그인한 웹사이트를 통해 사용자가 모르는 상황에서 원치 않는 동작을 수행하게 하는 보안 취약점이다. 위 이미지와 같이 공격을 방지하기 위해 웹 개발자들은 요청을 보낼 때 추가적인 보안 검증 절차를 구현하고, 사용자에게 요청의 적절성을 확인하도록 요청하는 등의 대응 방안을 마련해야 한다. CsrfFilter CsrfFilter란? CsrfFilter는 웹 어플리케이션에서 CSRF(Cross-Site Request Forgery) 공격을 방지하기 위한 필터다. Spring Security에서 제공하는 CsrfFilter는, HTTP 요청에 대해 CSRF 토큰을 생성..
Spring Boot 기반으로 개발하는 Spring Security : 동시 세션 제어, 세션 고정 보호, 세션 정책
2023. 4. 15. 11:29
무조건 따라하기/Spring Boot 기반 Security
동시 세션 제어 최대 허용 세션이 초과했을 경우 시큐리티는 2개의 설정이 있다. sessionManagement > maxSessionsPreventsLogin() 를 사용하여 기본값은 false로 기존 세션을 만료시키고 true는 현재 접속하는 세션을 차단한다. http.sessionManagement() .maximumSessions(1) // 최대 허용 가능 세션 수, -1 : 무제한 .maxSessionsPreventsLogin(false) // 동시 로그인 차단함, false : 기존 세션 만료 (default) .expiredUrl("/expired") // 세션이 만료된 경우 이동할 페이지 테스트 maxSessionsPreventsLogin를 true로 설정해서 초과하는 세션을 차단할 경우 ..
Spring Boot 기반으로 개발하는 Spring Security : LogoutFilter
2023. 4. 11. 22:07
무조건 따라하기/Spring Boot 기반 Security
Logout 스프링 시큐리티는 아래와 같은 설정으로 세션, 인증토큰, 쿠키정보를 삭제해 로그아웃시킬 수 있다 //region logout http .logout() //Post Method .logoutUrl("/logout") // 로그아웃 처리 url .logoutSuccessUrl("/login") // 로그아웃 성공 후 이동페이지 .addLogoutHandler(new LogoutHandler() { // 로그아웃 핸들러 @Override public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { HttpSession session = request.getSes..
[java/spring] 스프링시큐리티에서 세션 안받아지는 CORS 문제 해결하기
2022. 6. 20. 16:06
몰아 넣기
#들어가는 말 스프링시큐리티를 이용해 세션방식으로 로그인을 구현한다면 프론트와 서버가 합쳐져있는 프로젝트라면 CORS 문제가 없어 세션이 자동으로 쿠키에 저장이 된다. 하지만 프론트를 나누기 시작 하면 CORS 문제로 세션이 받아지지도 않고 자동으로 쿠키에 저장이 되지 않는다 그 문제를 해결할 것이다. 스프링시큐리티 GitHub - whitewise95/TIL: Today I Learned Today I Learned. Contribute to whitewise95/TIL development by creating an account on GitHub. github.com 세션방식 GitHub - whitewise95/TIL: Today I Learned Today I Learned. Contribute..
[java/spring]SpringSecurity(스프링시큐리티)란?
2022. 6. 19. 19:16
몰아 넣기
들어가는 글 스프링 시큐리티는 책을 보고 한번 따라서 해보고 어렵지 않다라고 생각하고 넘어갔지만 ... 이번 항해99 프로젝트에서 쓰게되었는데 모든 로직이 스프링 시큐리티에 맞춰있지 않은 상태에서, 시큐리티를 넣었더니 생각보다 어려운 프레임워크라는 걸 알게 되었다. 그래서 스프링 시큐리티에서 공부하게 되었고 정말 어려운 프레임워크라는 걸 인지했다. 생각보다 시큐리티 공식 문서가 번역기로 돌려서 보면 볼만하다. Spring Security Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real..