일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 갓재석
- S3
- DB
- AWS S3
- classproperty
- 우아한 테크코스 2차 합격
- springboot 3.0.0
- depends_on
- python
- OperationalError
- MySQL server on 'db' (115)
- TypeError: 'property' object is not iterable
- EC2
- python all testcode
- github skyline
- 프로그래머스
- 코딩테스트
- Spring
- 우아한테크코스 2차
- docker
- METACLASS
- classmethod
- Django
- javascript
- github
- depends
- 2차 코딩테스트
- AWS
- docker-compose
- 재귀함수가 뭔가요
Archives
hanbin.dev
[Network] OAuth란? 본문
프로그래머스에 들아가서 로그인 버튼을 누르면, 위와 같은 화면이 나온다.
저기서 만약 Github으로 계속하기 버튼을 누른다면, Github 로그인 페이지로 이동하게 된다.
그리고 그곳에서 Github 로그인을 하면 프로그래머스 서비스를 이용할 수 있게 된다.
나는 분명 Github 로그인을 했는데 왜 프로그래머스 서비스를 이용할 수 있는 걸까?
이것에 대해 알려면 OAuth를 알아야 한다.
OAuth란?
로그인을 제공하는 플랫폼(Github)의 계정만 있다면 외부 서비스(프로그래머스) 에서도 인증을 가능하게 하여 API를 사용할 수 있도록 해주는 프로토콜이다. 그렇기 때문에 Github 로그인을 했는데도 프로그래머스의 서비스를 사용할 수 있게 된 것이다.
OAuth가 무엇인지 알았다면 이제 OAuth의 인증 절차에 대해 알아보자
OAuth 인증 방식
용어 정리
Resource Owner | Resource Server의 계정을 소유하고 있는 사용자 ex) User |
Client | OAuth를 이용해 서비스를 제공하는 앱 ex) 프로그래머스, 내가 개발하고 싶은 앱 |
Authorization Server | 토큰을 발급해주는 서비스 ex) Github 로그인 기능 |
Resource Server | Resource Owner의 자원을 관리하는 서버 ex) Github |
인증 절차
- Resource Owner가 Authorization Server에서 보내준 Github 로그인 페이지에 ID/PW 정보를 입력한다.
- Authroization Server가 Authorization Code를 Redirect URL에 결합시켜 헤더에 담아 Resource Owner에게 전달한다.
- ex) { "Location" : "http://my-app.com?code=thisisauthorizationcode" }
- Authorization Code는 짧은 시간 안에 만료된다 (약 10분)
- Resource Owner가 Redirect URL에 리다이렉트하면 Client가 Client ID , Client Secret , code, Redirect URL 정보를 Authroization Server에게 전달해 Access Token 발급 요청을 한다.
- Access Token이 발급되었다면 Resource Owner에게 전달하며 로그인을 성공시킨다
리소스 요청
이후에 Resource Owner가 Client에게 요청할 때마다 Access Token을 요청에 포함시킨다.
'Network' 카테고리의 다른 글
[Network] OSI 7 계층은 대충 이런거다 (0) | 2021.04.19 |
---|---|
[Network] TCP 3 Way Handshake란? (0) | 2021.04.02 |