OAuth는 이전에 몇 번 사용해보았는데, 말로 꺼내어 설명하기가 어려웠다. 이번 기회에 정리를 해보려 한다.
이번 포스팅에서는 간단한 소개로 진행할 것이다.
필요 상황
우선 세 명의 참여자가 있다고 생각해보자. (캠퍼가 만든 서비스, 사용자, 구글)
캠퍼가 만든 서비스가 있고, 거기서 구글에 연동하려고 한다. 구글에 접근하려면 어떻게 해야할까?
가장 쉬운 방법은 구글의 사용자 id와 비번이 있으면 된다.!
문제
1. 사용자 입장에서는 캠퍼의 서비스에 맡겨야 한다 (얘네들 주니어 개발자인데 맡길 수 있나? 이 서비스에서 유출되면 다 털리는데)
2. 캠퍼의 서비스도 구글의 아이디 비번을 관리하는 것은 매우 큰 부담이다. (털리면 책임져야함)
3. 구글도 자신 아이디 비번을 신뢰하지 않는 캠퍼의 서비스가 가지는게 곤란하다. (구글은 믿을만하니깐..)
OAuth의 등장
이런 문제를 해결하기 위해 OAuth 가 등장한다. OAuth의 등장으로 어떻게 변했을까?
결론부터 말하면, OAuth를 통해 구글이 accessToken을 발급하게 된다.
캠퍼의 서비스에서 ID와 비밀번호가 아닌 accessToken을 가지고 구글에 접근할 수 있게 되는 것이다. 이것이 핵심 줄기니 기억해두자.
이제 OAuth 개념에서, 위에서 나온 세 참여자를 아래처럼 대칭시켜볼 수 있다.
사용자 => `Resource Owner`
구글 => `Resource Server`
캠퍼의 서비스 => `Client` (Resource Server에 접속하기 때문에)
+)
여기서 추가로 Resource Server와 함께 Authorization Server가 존재한다.
영단어 그대로 Resource Server는 데이터 전달, Authorization Server는 인증에 특화된 서버이다.
OAuth의 과정
OAuth를 사용하기 위해서는 가장 먼저 구글, 네이버 등의 Resource Server의 개발자 페이지에서 등록 과정을 거쳐야한다. (구글에 들어가서 api 등록 , redirection URL 추가 등등) 해당 부분은 이후 다루어보도록 하겠다.
OAuth 2.0 인증 과정은 크게 네 단계로 이루어진다.
1. 캠퍼 서비스가 사용자에게 인증 요청
2. 사용자가 이 요청을 승인하면, 캠퍼 서비스는 인증 서버에 코드를 요청
3. 캠퍼 서비스는 이 코드를 사용하여 인증 서버로부터 액세스 토큰을 받아옴
4. 캠퍼 서비스는 이 토큰을 사용하여 리소스 서버에 접근.
이 과정을 거쳐 자원에 접근할 수 있다.
참고자료
https://www.youtube.com/watch?v=XpBf7ZiT_do&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-&index=9
https://f-lab.kr/insight/understanding-oauth-2-0
'Backend > 인증, 인가' 카테고리의 다른 글
[삽질 기록과 해결] Cross-Origin WebSocket에서 쿠키 전송 문제 (0) | 2024.11.20 |
---|---|
JWT(JSON Web Token)와 세션 방식을 쉽게 비교해보자 (0) | 2023.05.30 |