반응형
Bean
Bean 이 적용된 Class 가 여러 개일 경우
@Autowired
Food food;
하면 에러 발생
Food chicken;
Food pizza;
1. 객체를 따로 선언해준다.
2. @Primary 어노테이션을 붙여준다. (범용적으로 사용되는 객체)
3. @Qualifier("pizza") 를 해당 클래스, Food 객체 선언할 때 붙여준다. (Primary 보다 우선순위가 높음, 지역적으로 사용되는 객체)
인증 (Authentication) 과 인가 (Authorization)
인증 vs 인가
인증 - 해당 유저가 실제 유저인지 인증하는 개념
인가 - 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념
인증 방식
쿠키-세션 방식
서버가 '특정 유저가 로그인되었다'는 상태를 저장하고, 인증과 관련된 최소한의 정보만 저장해서 로그인을 유지시킨다.
쿠키 - 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
쿠키와 세션 모두 HTTP 에 상태 정보를 유지 (Stateful) 하기 위해 사용된다.
쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있다.
쿠키는 공백이 불가하다.
JWT (JSON Web Token) 방식
JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token
JWT 토큰 (Access Token) 을 HTTP 헤더에 실어 서버가 클라이언트를 식별한다.
쿠키 저장소를 사용하여 JWT 저장
로그인 정보를 Server 에 저장하지 않고, Client 에 로그인 정보를 JWT 로 암호화하여 저장
- 모든 서버에서 동일한 Secret Key 소유
- Secret Key 통한 암호화 / 위조 검증
장점
- 동시 접속자가 많을 때 서버 측 부하 낮춤
- Client, Server 가 다른 도메인을 사용할 때 (ex. 카카오)
단점
- 구현의 복잡도 증가
- JWT 에 담는 내용이 커질수록 네트워크 비용 증가 (클라이언트 -> 서버)
- 기 생성된 JWT 를 일부만 만료시킬 방법 x
- Secret Key 유출 시 JWT 조작 가능
반응형
'개발 ━━━━━ > Spring(boot)' 카테고리의 다른 글
[Spring] Singleton, Prototype Scope Bean (0) | 2024.09.06 |
---|---|
[Spring] 이전 데이터를 불러올때 stream문과 for문의 성능 차이 테스트 - 1 (0) | 2023.11.18 |
[Spring] WebSocket 을 이용한 채팅 구현 (0) | 2023.10.09 |
[Spring] Entity 관계 (0) | 2023.09.02 |
[Spring] Filter (0) | 2023.09.01 |