4가지 인증 배울거임
- 지식 기반 인증
고객이 알고 있는 정보 기반으로 인증
비밀번호 등
유추가 가능하고 유출의 우려가 있음
- 소유 기반 인증
고객이 소유하고 있는 것을 기반으로 인증
공인인증서, 시크리트 카드, OTP, 문자인증 등
지식 기반 인증과 함께 사용되면 강력함
복제/분실의 우려 존재
- 생체 기반 인증
고객이 가지고 있는 고유한 생체적 특징을 기반으로 인증
지문인증, 홍체인증 등
분실이나 도난의 위험이 없고 복제가 어려움
재발급이나 변경이 안되므로 복제가 될 경우 위험
인증 실패(본인거부)의 가능성
- 행위 기반 인증
주체가 하는 행위 기반으로 인증
걸음걸이, 서명, 음성 등
참고
1. 가장 기본 인증
웹 기본은 stateless


프로토콜 인터페이스 차이
- 인터페이스
갑이 하는 약속( 갑 마음대로 할 수 있다)
예로 내 휴대폰이 11시 10~ 15분까지 아무나 사용할 수 있어요
- 프로토콜
협의하에 만들어진 것
공유물 (갑 을 없이 동등한 관계) 에어컨을 10시 부터 10시 10분까지 쓰자 했는데
다른 사람들이 15분까지는 안돼요? 물어봤을 때 변경할 수 있다
다시 사진으로 넘어가서
로그아웃 방법 2가지
- 쿠키를 지운다(key를 지운다) → 로그아웃(락카에는 정보가 있지만 요청할 때 쿠기에 키를 안 들고 가니까)
- 쿠키는 키를 가지고 있지만 락카(session)에서 정보를 지우는것(sessioninvelidate)(시간 정할 수 있다.)
서버 입장에서는 락카(session) 내용 지우는 것만 가능 쿠키를 못 지우니까
세션.getAttribute해서 꺼냄 락카안에 타입 설정한다면
제내릭은 new할 때 타입 정한다 하지만 session은 이미 타입이 있음
session은 무슨 타입으로 해야할까?
→ session은 여러 가지 정보들이 있어서 특정지을 수 없기에 Object타입으로 할 수 밖에 없고
꺼내 쓸때는 반드시 다운케스팅 해야 한다!!
다운 케스팅이 불편해서 그냥 user 타입으로 바꾸면 안 돼요?
→ user타입으로 통일했을 때 정보를 넣으려면 무조건 extend 해서 적어야 하는 번거롭다!
핸드폰과 브라우저와 서버와의 정보 전달 차이
C라는 프로그램을 만들었는데 휴대폰 App이라면
휴대폰이 락카에 인증요청을 해
기본인증!
- 인증 → 락카가 ok라고 하고 2번 자리에 어떤 정보를 담고 키를 준다(setCookie에 담아서 request한다) 브라우저니까 저장해주는거지 휴대폰 APP은 저장하지 않는다. → 다음 요청 때 2번 key를 안 들고 간다 → 인증 안됨 그래서 휴대폰 app을 Http프로토콜에 맞춰서 만들어야 함 response해더를 열어서 핸드폰저장소에 직접 코드로 저장해야 한다 그럼 될까? 안된다 → 직접 요청 때에도 request해더에 key값을 넣어줘야 한다!
2 번째로 인증
request 객체는 동시 접속할 때 한번에 몇 명까지 가능한지

서버에 request가 50개 있는데 51번째 request객체 들어오면 wait됨
하지만 100명이 들어온다면 서버 터짐 즉 서버를 늘려야 한다(기계를 바꾸는 것 보다 똑같은 서버를 한번 더 만든다 이게 좋다 복제함(레이드))
항상 연결되는게 아니니까 서버 아래로 간다면 인증 안됨
용어 정리
- 스케일 아웃
스케일 아웃은 접속된 서버의 대수를 늘려 처리 능력을 향상하는 것이다
- 스케일 업
스케일 업은 서버 자체의 성능을 높여 처리 능력을 향상하는 것으로 프로세서 자체를 고성능 모델로 옮겨 놓는 것을 가리킨다.
→ 컴퓨터 자체의 성능을 늘린다(비싸고 시간 오래걸림)
- 레이드(RAID)
저장 장치의 배열 및 관리에 관한 기술로, 하드 드라이브의 데이터 보호 및 성능 향상을 목적
→ 서버 복제한다
- 오토 스케일링
일반적으로 컴퓨팅 리소스 측면에서 시스템이 자동으로 규모를 조절(scale)하는 기능
ex) request객체가 50개인 서버에서 30개까지 찼다면 자동으로 서버를 알아서 늘리는 것
- 프로비저닝
사용자가 요청한 IT 자원을 사용할 수 있는 상태로 준비하는 것을 말한다.
- 로드 밸런서
클라이언트, 서버풀 사이에 위치해서 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해주는 장치 또는 기술
- 스티키 세션
특정 세션의 요청을 처음 처리한 서버로만 전송하는 것을 의미합니다.
서버 뻗기전 서버 늘리는게 좋다 → 미리 준비하기(프로비저닝) (전날 저녁에 미리 컴퓨터 만들어두고 시작하면 미리 붙인다 ) 이거를 내가 하면 귀찮잖아(새벽에 만들어 두고 아침에 붙이는게)
→ 자동으로 컴퓨터 팍 늘어남(30명쯤 되면 알아서 는다) (이거를 오토 스케일링이라 한다)
다시 사진으로 돌아가서
만약 새로 만들어진 서버에 요청하면 인증이 안 된다 1번 서버에 정보가 있기 때문이다
→
단일 진입점을 만든다(로드 밸런서 → 스티키 세션)
방법 3가지
- 한번 접속하면 로드 밸런서가 서버가 바빠도 로그인 된 서버로 보내줌
- 한번 접속했어? 하면 새로 만들어진 서버 세션에 동기화 시켜줌(위험한게 동기화 중에 다른 곳으로 접속한다면 다른 서버에서는 로그아웃(정보가 없어)되어 있어서 로그인(정보 다시 기입)을 해야한다 )

- 외부에 세션을 하나 따로 둔다(세션 관리하는 DB가 필요하다) → 서버 붙어있는 세션 지운다 문제가 세션은 메모리에 띄워 속도가 빠른 건데 DB는 디스크에 넣는 거라 느리다 그래서 이 DB는 메모리DB를 사용해야 IO(속도 느려짐)안됨 대표적인 DB이름이 redis, memcached다

Share article