로그인을 구현하기 위한 방법 중
session기반(서버)의 인증 방식
-> 클라이언트와 서버 간의 상태를 유지하기 위해 사용하는 방식
-> 단점으로 유저의 수가 늘어난다면 무리가 갈 수 있고, 데이터베이스의 성능에 저하를 줄 수 있다.
-> 확장성에 있어서 문제가 생길 수 있다. (비용이 많이 듬 , 쉽지 않음)
-> 확장을 위해 분산된 시스템을 설계할 경우 과정이 매우 복잡해 질 수 있다.
토큰(token) 기반 시스템의 방식
-> 오늘 주요하게 살펴볼 토큰 기반 방식 입낟.
-> stateless
- 토큰 방식에서는 유저의 인증 정보를 서버(세션) 에 담아놓지 않는다.
- 이를 통해 서버를 이용할 때의 문제점을 많은 부분 해소가 가능하다.
-> 1. 사용자가 id와 pw 로 로그인을 한다.
-> 2. 서버는 이 정보를 검증한다.
-> 3. 가지고 있는 계정정보와 입력된 정보가 정확하다면 유저에게 signed된 토큰을 발급해준다.(정상발급)
-> 4. 유저측은 전달받은 토큰을 저장해두고, 로그인된 상태에서 접근가능 한 정보에대해 서버에 요청을 할 떄
해당 토큰을 함께 서버에 전달을 한다. (헤더)
-> 5. 서버는 토큰의 검증 과정을 포함하여, 주어진 요청을 처리하여 준다.
-> 로그인 정보가 여러 곳에서 사용가능 하다 . 발급 받은 토큰을 가지고 다른 시스템에 접근이 가능하도록
설계할 수 있으며, 토큰에 선택적인 권한을 주어 발급을 할 수도 있다.
-> JWT의 경우 웹 표준 RFC 7519에 등록되어 있으므로 여러 환경에서 지원이 되며, 다방면으로 사용되고 있다.
-> 권한유효성을 검사 할 때 데이터베이스에 접근하지 않아도 된다는 장점이 있다.
로그인한 사용자인지 확인을 할 때, 토큰의 유효 여부만 확인을 하면 된다. (데이터베이스 접근을 줄임)
-> 보안의 문제는 IP주소에대한 추가 검증등 을 통해 보완할 수는 있으나 여전히 보안 문제는 JWT를 사용시 일어날 수 있는 문제이다.
간단하게
장점
-> 데이터베이스 접근을 최소화 할 수 있다.
-> 간편하다.
단점
-> 다른 글에서도 언급했듯 보안문제는 보완, 해결해 나가야할 과제이다.
-> 프론트엔드 측에서 토큰을 관리 해야 한다는 것
'Web & App > Server' 카테고리의 다른 글
JSON (JavaScript Object Notion) ? (0) | 2020.10.26 |
---|---|
Git 이란 ? [Git Hub, Git Lab] (0) | 2020.10.16 |
로컬 컴퓨터에서 aws ec2 서버로 특정 파일 전송 (3) | 2020.08.15 |
Nginx - php - mysql를 설치 (0) | 2020.08.14 |
윈도우에서 aws ec2에 접근하기 (cmd) (0) | 2020.08.14 |