일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- csee
- CHEMISTRY
- 찬양
- 묵상
- 혼자공부하는sql
- Software Engineering
- GLS
- SQLD
- typeScript
- 날솟샘
- 어노인팅
- Database
- FE
- 남재창교수님
- 화학
- 웹개발
- dbms
- 일반화학
- 한동대학교
- SQL
- 유태준교수님
- 예배
- 설교
- CCM
- 프론트엔드
- 전산전자공학부
- QT
- 글로벌리더십학부
- 날마다 솟는 샘물
- 데이터베이스
- Today
- Total
멈추지 않는 기록
[일지] 250324 (월) 본문
1. Login
ID/PW를 Controller에서 받고, TokenFactory에게 부탁해서 토큰을 받고 RefreshToken을 Header에 담아서 반환했다.
-> 이 기능을 Spring에서는 AuthenticationFilter를 사용한다.
2. RF를 가지고 AT를 발급 받았다.
3. AT을 Header에 담아서 사용할 때 유효한 값인지 확인하는 인터셉터
-> 이 기능을 Spring에서는 AuthorizationFilter를 사용한다.
SecurityConfig 파일 생성하기 -> 패키지명 해당 프로젝트로 수정하기
build.gradle에서 security 사용을 위한 부분 주석 풀기
- (임시) ExternalProperties 객체에 값을 주입해서, 그것을 꺼내서 사용할 예정이다.
Security 새로운 패키지 생성
관련 파일 생성하기 + ExternalProperties 파일을 생성한다.
Import에 있어서 패키지명 해당 프로젝트로 수정하기
Exception 새로운 패키지 생성
관련 파일 생성하기
Spring Security에서는 User가 어떤 Role을 가지고 있는데 지정해줘야 한다.
role / userRole을 추가해야 한다.
UserRoleTyoe과 RoleType 도메일을 생성한다.
User 도메인에도 관련된 내용을 추가한다.
토큰 팩토리를 사용하지 않을 것이기에, 에러 발생하는 것에 대해서 어느정도 지워준다.
UserRepository를 수정
RoleType/UserRoleType Repository를 생성하기
SecurityConfig.java
1. AuthService = tokenFactory와 동일
2. ExternalProperties : 보안상 유지하려고 외부 파일을 가져온다.
3. byCryptPasswordEncoder : 암호화 (비밀번호를 암호화한다)
4. filterChain : 스프링 시큐리티 관련해서 권한을 지정한다.
5. CustomDsl : 시큐리티 설정의 한 몸이라 생각하자. (로그인에서 사용하는 authenticationFilter와 AuthrizationFilter를 추가.
- 이게 () 할 때 유일한 방식이다.
CorsFilterConfiguration.java
- corsFilter : 허용하는 부분들에 대한 선언.
User : Spring Security를 사용하기 위해서 Role을 1~N개를 가져야 한다. Role이 없으면 사용할 수가 없다.
RoleType : Role을 지정하기 위한 도메인.
UserRoleType :
Security 패키지의 폴더 탐색
jwtAutenticationFilter.java
1. attemptAuthentication : request에 username/password있는지 확인 -> 실존하는 고객인지 확인,
- authentication이라는 객체를 만들어야 한다.
- 리턴함과 동시에 호출되는 함수가 successfulAuthenticiation
2. successfulAuthenticiation
- principalDetails를 생성한다. (user 정보가 담겨 있는 친구, user라는 필드가 있다. getUser, getUserID -> RefreshToken)
jwtAuthrizationFilter.java
AccessToken을 가지고 올 때마다 지나가는 친구다.
doFilterInternal : AccessToken값이 있는지 없는지 확인한다. prefix를 떼놓은 accessToken으로 verify를 한다. 가져온 userId가 실존하는 사용자인지 확인.
'웹 개발 > Spring Boot' 카테고리의 다른 글
[Spring Boot] Network 탭엔 있는데, JS에선 undefined? Authorization 헤더가 안 보이는 진짜 이유 (0) | 2025.05.16 |
---|---|
[일지] 250312 (0) | 2025.03.24 |
[일지] 250311 (0) | 2025.03.24 |
[일지] 240310 (2) | 2025.03.11 |