Spring Security/security
-
Spring security - 4. 중복 로그인 로그아웃 시키기Spring Security/security 2023. 11. 17. 15:28
Spring security는 session을 관리 할 수 있어서, 같은 사용자가 들어왔을 때 기존에 로그인한 session 또는 마지막에 로그인한 session을 선택해서 로그아웃을 시킬 수 있다고 한다. * 코드 작성 httpSecurity에 sessionManagement 설정을 넣어주어야 한다. sessionFixation에서 chageSessionId 설정을 하는데, 동일한 아이디로 계속 로그인을 해도 SessionId가 변경이 안된다고 하는 것 같다. SessionId가 변경이 안되고 고정되면 xss공격으로 SessionId를 탈취 할 수 있다고 한다. 그래서 cahgeSessionId설정을 통해 중복 로그인시 SessionId를 변경한다. maximunSessions를 통해 Session의 ..
-
Spring security - 3. Security설정한 거 끝까지 파보기Spring Security/security 2023. 11. 8. 22:00
지난번 글에서 UserDetailsService를 사용하여 security로그인 기능을 구현하였다. 내가 작성한 것은 userDetailsService에 하나 있는 loadUserByUsername 메소드를 override한거고, 그 내용은 db에서 조회 후 security가 원하는 UserDetails 라는 객체에 넣어줬을 뿐인데, 그 후에 이 놈이 뭘 했길래 session에 그 정보를 저장하는지 궁금했고, 1장에 있는 그 그림대로 움직이는게 어떤건지 궁금해서 userDetailsService를 시작으로 메소드가 끝날때 까지 파보기로 하였다. 우선 내가 담아보낸 User와 UserDetails를 먼저 살펴봤다 Security에 기본으로 작성되어있던 User class, 이 놈이 UserDetails 를..
-
Spring security - 2. UserDetailsService를 사용하여 로그인 구현Spring Security/security 2023. 11. 8. 19:01
UserDetail과 UserDetailService는 Spring security에 들어있는 사용자 정보와 사용자 정보를 가져오는 인터페이스이다. UserDetail을 구현한 기본 클래스인 User를 사용해도 되고, CustomUser를 만들어 UserDetail을 구현하여 사용해도 된다. (나는 Security에 있는 User 사용) session에 저장하는 방식이기 때문에 로그인 성공시 session에 사용자 정보를 저장하고, Client에게 JSESSIONID 라는 key로 sessionId를 담아 Set-cookie에 전달한다. JSESSIONID는 톰켓 서블릿 컨테이너에서 세션을 유지하기 위해 발급하는 key라고 한다. github에서 코드를 확인 할 수 있다 * 코드 구현 Spring 5. ..
-
Spring security - 1. Spring security에 대해Spring Security/security 2023. 11. 8. 13:45
Spring security Spring에서 어플리케이션의 인증과 인가를 담당하는 Spring의 하위 보안 프레임 워크. Spring security에서 인증과 인가는 서블릿컨테이너 안에서 DispatchServlet으로 가기전에 filter chain에서 동작. filter chain은 Security 설정으로 사용자가 addFilter() 라는 메소드를 통해 설정 할 수 있다. 인증과 인가 인증(Authentication) 인증은 우리 서버에 맞는 사용자인지 확인하는 절차. ID, PW로 확인하거나 OAuth라는 개방형 인증 절차를 통해 확인함. 인증된 사용자는 등록된 정보에 맞게 권한을 부여받음. (User, Admin 등) 인가(Authorization) 인증된 사용자에 대한 권한을 확인하고 어떠..