일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클라우드자격증
- COFIBA
- MSCS
- 자연어처리
- MAB
- Collaborative Filtering Bandit
- nlp
- BERT
- 중국플랫폼
- MLOps
- 미국석사
- 머신러닝
- 클라우드
- AWS
- 언어모델
- RecSys
- chatGPT
- TFX
- 메타버스
- 추천시스템
- 네트워크
- aws자격증
- docker
- BERT이해
- BANDiT
- 플랫폼
- transformer
- llm
- 머신러닝 파이프라인
- HTTP
- Today
- Total
Julie의 Tech 블로그
HTTP - 인증 : Oauth, JWT, Bearer token 본문
앞선 글에서 인증 방식에 대해 살펴보았다.
오늘은 쿠키나 세션 기반 인증이 아닌, 토큰 기반 인증 방식에 대해 살펴볼 것이다.
쿠키는 사용자 인증 정보를 담아 HTTP를 통신하게 되면, 제3자가 악의적인 공격을 통해 데이터를 엿볼 수 있다.
세션은 쿠키보다 보안성이 강하지만, 세션 ID에 대해 서버가 내부적으로 스토리지를 보유하고 있어야한다는 단점이 있다.
따라서 쿠키나 세션이 아닌 토큰 기반 인증 방식을 통하게 되면 더욱 보안성이 강하고 효율적이다.
가장 대표적인 Oauth 인증방식과 JWT, Bearer token 각각에 대해 간단하게 개념을 정리해보려고 한다.
* Oauth
Oauth는 사용자의 비밀번호를 제공하지 않더라도 웹사이트나 어플리케이션에 접근할 수 있는 방법을 제공한다.
예를 들어 페이스북과 트위터가 이에 해당하는데, 굳이 페이스북과 트위터 각각에 로그인하지 않고도,
다른 어플리케이션에서 인증 절차만 거치면 사용할 수 있게 되었다.
Oauth는 아래와 같은 프로세스를 거치게 되는데,
출처 : http://oauth.net/core/diagram.png)
1) 소비자가 서비스 제공자에게 토큰을 요청
2) 서비스 제공자가 소비자에게 토큰을 발급
3) 소비자는 사용자를 서비스 제공자로 이동시키고, 여기서 인증을 수행
4) 서비스 제공자가 사용자를 소비자로 이동
5) 소비자가 접근 토큰 요청, 서비스 제공자가 발급
6) 이 접근 토큰으로 소비자에서 사용자 정보에 접근
이 때 사용자는 서비스 제공자와 소비자 모두를 사용하고 있는 계정이고,
소비자는 Open API를 통해 개발된 Oauth를 사용하여 서비스 제공자에 접근하는 웹사이트/어플리케이션이다.
서비스 제공자는 Oauth를 통해 접근을 제어하는 웹 어플리케이션이라고 생각하면 된다.
주요 목적이 인증이라곤 하지만, 허가의 느낌이 있다.
보통 서비스를 개발하는 사람 입장에서, 아래와 같은 용도로 사용된다.
사용자가 가입된 서비스의 API에 접근하기 위해 사용자로부터 권한을 위임받아야함. 이 때 사용자의 패스워드 없이도 권한을 위임받아 Oauth를 통해 상호 연동을 지원
* JWT
Json web token의 줄임말로, 서버와 클라이언트 간 인증과정을 별도로 두지 않고, HTTP헤더에 JWT토큰을 포함하여 인증을 대신한다.
Json 파일인데, URL에 담아 전송될 수 있도록, URL-safe하게 구성된다. (URL에 포함되어도 되는 문자들로만 구성된)
서버에서 사용자가 최초 로그인시, 토큰을 발급해주어 이 토큰을 통해 서버에서 토큰의 유효성만 검증하면 된다.
이 덕분에 서버쪽에서 사용자의 세션 정보를 저장하고 있지 않아도 된다.
토큰 기반 인증 메커니즘인 것이다.
아래 Oauth 토큰 인증 방식에서 Access Token으로 JWT를 사용할 수 있다.
출처 :
https://github.com/vaquarkhan/vaquarkhan/wiki/JWT-vs-OAuth
* Bearer Token
Bearer Token은 말 그대로 HTTP통신에서 사용하는 인증 방식에 Bearer Authentication을 사용하는 것이다.
Bearer Authentication이란, "이 토큰을 나르는(bearer) 사람에게 권한을 부여하시오"라는 것인데,
앞서 살펴본 Oauth 역시 사용자가 아닌 소비자가 중간에서 사용자의 권한을 일부 부여받게 된다.
Bearer Token은 JWT나 Oauth에서 사용되는 토큰을 모두 통칭하는 용어이다.
'Tech' 카테고리의 다른 글
HTTP - (10) 국제화 (0) | 2021.06.21 |
---|---|
HTTP - (9) 메시지 엔터티와 인코딩 (0) | 2021.06.21 |
HTTP - (8) HTTPS, 보안 (0) | 2021.06.14 |
HTTP - (7) 다이제스트 인증 (0) | 2021.06.14 |
HTTP - (6) 클라이언트 식별과 쿠키, 인증 (0) | 2021.06.06 |