![[Spring Security] 1. 회원가입/로그인 - SSR](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255BSpring%2520Security%255D%25201.%2520%25ED%259A%258C%25EC%259B%2590%25EA%25B0%2580%25EC%259E%2585%252F%25EB%25A1%259C%25EA%25B7%25B8%25EC%259D%25B8%2520-%2520SSR%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3Djay0628&w=2048&q=75)
프로젝트 생성


### 1. html로 폼 로그인
### 2. 뭐한댓더라..
### 3. oauth
Spring Security를 써야 하는 이유
이 서버가 꼭 들고 있어야 하는 보안 정책이 있는데 (예 - 비번 해시) 기본적으로 positive 전략이기 때문에 내가 직접 막아야 한다. Security를 적용하면 negative 전략이므로 내가 선택해서 해제해줘야 한다. 따라서 실무에서는 풀어줘야 하는 것들만 임의로 해제하면 나머지는 block 되기 때문에 사용한다.
로그인 = db에 username과 password 있으면 세션을 준다는 것
spring security filter chain


security가 만든 login 화면
username에 user넣고
password에
→ 임시 테스트 코드 같은거
⇒ Authentication 객체 만들어진거임

chainㅇ르 감시하는 감시자 리스너가 security에 존재
SecurityConfig
세션이 없으면 내가 만든 login 페이지로 가줘!라고 Security 라이브러리를 설정하기
@Configuration : 설정 파일을 만들기 위한 어노테이션
필터체인객체를 IOC에 걸어놓음 = 디폴트 필터체인
내가 커스터마이징 해서 다시 IOC에 걸어놓을거면 @Bean
현재 /user/** 주소의 페이지들은 전부 인증이 필요하기 때문에 login-form 페이지로 redirection 되도록 되어있다.

/join-form 회원가입 페이지는 인증이 필요하지 않기 때문에 security filter에 의해 막히지 않도록 설정해두었으므로 localhost:8080/join-form했을때 막히지 않는다.

builder 패턴할걸그랫다는데 뭐지
/login이라고 데이터가 날아가면 ?가 낚아챈다고..?
loginProcessingUrl

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

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

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