inblog logo
|
jay0628
    Spring Security

    [Spring Security] 1. 회원가입/로그인 - SSR

    김주희's avatar
    김주희
    Jul 25, 2025
    [Spring Security] 1. 회원가입/로그인 - SSR
    프로젝트 생성
    notion image
    notion image
    ### 1. html로 폼 로그인 ### 2. 뭐한댓더라.. ### 3. oauth
     
    Spring Security를 써야 하는 이유
    이 서버가 꼭 들고 있어야 하는 보안 정책이 있는데 (예 - 비번 해시) 기본적으로 positive 전략이기 때문에 내가 직접 막아야 한다. Security를 적용하면 negative 전략이므로 내가 선택해서 해제해줘야 한다. 따라서 실무에서는 풀어줘야 하는 것들만 임의로 해제하면 나머지는 block 되기 때문에 사용한다.
     
    로그인 = db에 username과 password 있으면 세션을 준다는 것
     
     
    spring security filter chain
     
    notion image
     
    notion image
    security가 만든 login 화면
    username에 user넣고
    password에
     
    → 임시 테스트 코드 같은거
    ⇒ Authentication 객체 만들어진거임
    notion image
     
    chainㅇ르 감시하는 감시자 리스너가 security에 존재
     

     

    SecurityConfig

    세션이 없으면 내가 만든 login 페이지로 가줘!라고 Security 라이브러리를 설정하기
     
    @Configuration : 설정 파일을 만들기 위한 어노테이션
     
    필터체인객체를 IOC에 걸어놓음 = 디폴트 필터체인
    내가 커스터마이징 해서 다시 IOC에 걸어놓을거면 @Bean
     
     
    현재 /user/** 주소의 페이지들은 전부 인증이 필요하기 때문에 login-form 페이지로 redirection 되도록 되어있다.
     
    notion image
     
    /join-form 회원가입 페이지는 인증이 필요하지 않기 때문에 security filter에 의해 막히지 않도록 설정해두었으므로 localhost:8080/join-form했을때 막히지 않는다.
    notion image
     
    builder 패턴할걸그랫다는데 뭐지
    /login이라고 데이터가 날아가면 ?가 낚아챈다고..?
     
    loginProcessingUrl
    notion image
     
     

    세션에 security context holder 영역이 있고 그 안에는 Authentication 객체
    Authentication 객체는 principalDetails, role, credential 필드 가지고 있음
    꺼내보면서 누군지 체킹함
     
    Authentication 객체에 principalDetails 꼽혀야 됨?
     
     
     
     
    notion image
     
     

     
    CH27 스프링부트 인증 - 시큐리티.pdf
    470.9 KB
     
    인증 = 로그인
    인가 = 로그인 된 사람들의 권한을 체크
     
    인가와 인증의 처리를 시큐리티에게 맡김
     
    1. 보안 개념 파악
    1. 기존에 만들어진 거 커스터마이징 하는 방법
     
    지금 하는건 시스템 돌아가는 전체적인 흐름 파악
    notion image
     

    250725 1교시 복습
    ExceptionTranslationFilter = 필터 체인에서 예외를 전역적으로 제어하기 위한 필터
     
    /join-form
    aware filter가 인증 안필요한 주소는 그냥 쭉 통과시켜줌
    /join
    도 통과
    사용자마다 request 가방 줌 (여기에 username, password, email 담겨있음)
    DS가 reflection으로 매개변수 분석해서 request 가방에 똑같은거 잇는지 찾아서 주입해줌
    service한테 전달
    transaction시작 - db에 고립이 걸림
    db insert되고 transaction 종료되고 stack 무너지면서
     
    main으로 redirect
    response 가방 줌
    가방에 302, location(/main) 들고 감
    request 가방은 반납
    근데 main으로 가면 aware filter한테 걸림 → 수정하자!
    /login-form으로 가도록 수정함
     
    /login-form
    쭉 들어가서
    파일 내용 응답 (버퍼)
     
    username=ssar&password=1234
    /login
    aware filter 인증 필요없는 거네 통과!
    근데 UsernamePasswordAuthenticationFilter가 낚아챔
     
    UPAF가 낚아채서하는 일 이제부터 공부할거임
     
     
    Share article

    jay0628

    RSS·Powered by Inblog