싱글톤타입 빈 :
프로토타입 빈 : 필요할 때마다 생성됐다가 지워졌다가 함
프로토타입 스코프
Prototype -> Singleton
프로토타입에서 싱글톤을 참조하는 것은 문제가 없음
Singleton -> Prototype
이 경우에는 문제가 됨.
예시)
Singleton A -> Prototype A
Singleton A -> Prototype B
X (프로토 타입은 주입을 못 시켜줌)
디자인 패턴 중 프록시 패턴 사용하면 문제 해결할 수 있음.
Proxy pattern
프록시란??
프로토를 감싸줌. 빈과 같은 역할을 함.
nginx : web server
tomcat : web application server
proxy
forward proxy 요청하는 사람이 신경 씀
Vs
reverse proxy 데이터를 제공하는 사람 입장에서 신경 씀
nginx ( tomcat )
인증/인가
인증 : 특정 유저가 우리 시스템에 인증이 돼서 시스템을 사용할 수 있는지.
인가 : 권한
ex)admin 권한이 없지만 사용자 인증은 됨
role
UserPrincipal에 인증과 인가 정보가 같이 들어감
비연결성:연속성이 없다.
무상태
SSE, Websocket 연결되어있음.
Http Request/Response 연결이 안되어 있는상태
프로토콜
상태를 유지시키려면 어딘가에는 저장해야함.=> 쿠키방식 세션방식
클라이언트(프론트엔드)에 저장: 쿠키
웹서버(백엔드)에 저장: 세션
쿠키 기반 인증인가 / 세션 기반 인증인가
서버 확장성 때문에 쿠키 방식 많이 사용함.
사내 시스템 정도의 크기면 세션방식을 사용하기도 함. 보편적인 서비스를 개발한다면 서버가 많은 사용자를 관리하기엔 힘듦.그렇기 때문에 사용자에게 위임함. 대표적인 방식 jwt.
jwt
인증에 필요한 정보를 json 형태로 암호화 해서 저장함. (쿠키방식)
브라우저 레벨에서의 쿠키와 세션이 따로 있음. 헷갈리지 말기.
jwt가 나온 이유
동시 접속자가 많을 때 서버 측 부하 낮춤.
client, Server 가 다른 도메인을 사용할 때 사용.
cache
client 단에 부하를 분산하는 방법(token)
BARER 가 뭘까?
Atherization의 타입.
payload
암호화하고자 하는 정보들
클라이언트가 사용자의 로그인 요청 -> jwt 토큰 만듦 -> api 리스폰스 헤더
암호화 알고리즘
뒤에 있는 숫자가 높을수록 암호화 레벨이 높지만 복호화 하는 시간도 오래 걸린다.