[구글 소셜 로그인 구현] OAuth의 개념과 동작 원리
2024. 4. 5. 10:51ㆍ프로젝트/인증
728x90
더보기
개요
모니터링 웹 개발을 하면서 로그인 구현 작업을 할 차례가 왔다.
로그인에 대한 아무 기획도 정해지지 않아 어떻게 처리할까 고민하던 중 어차피 우리 회사 사람들만 이용하고
나의 경우 비밀번호를 잘 잊어버리는 탓에 한가지 비밀번호로만 쭉 사용하는데, 아무리 암호화를 한다 한들 우리 회사 개발자라면 복호화로 다 알아낼 수 있는 비밀번호를 회사 DB에 관리하기 싫어 소셜 로그인을 이용하기로 했다.
우리 회사 계정은 구글을 이용하기에 계정 정보 관리를 구글에 위임하는 방법을 선택을 한 것이다.
먼저 소셜 로그인 구현을 하기 전 소셜 로그인 동작에 대해 짚고 넘어가고자 한다.
1. OAuth의 개념
나무위키
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트를 접속할 때 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 제3자 클라이언트가 사용자의 접근 권한 위임을 위한 개방형 표준 프로토콜이다.
이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, Apple, 페이스북, 마이크로소프트, 트위터 등이 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.
2. 구성 요소
구성요소 | 설명 |
Resource Owner | 서비스를 이용하는 사용자로 ID와 Password를 가지고 로그인 하는 주체이다. |
Client | 서비스 애플리케이션 서버. 즉, 내가 만들 모니터링 웹 페이지 서버가 이에 해당한다. |
Authorization Server | 사용자 정보를 인증해주고 권한을 부여해주는 서버 |
Resource Server | 사용자 개인정보를 가지고 있는 서버로 카카오, 구글, 네이버 등이 이에 해당한다. |
Access Token | Resource Server에서 제공하는 API를 호출할 때 필요한 토큰으로 클라이언트가 Authrozation Code를 Authorization서버에 요청해서 이 코드를 Client에게 전달하면 Client는 Authorization Server에 Access Token을 발급받아 사용자에게 제공해준다. Access Token으로 Resource Server에 API를 호출할 수 있게 해준다. |
Refresh Token | Access Token은 보안 상 유효 시간이 짧은데에 비해 Refresh Token은 긴 유효시간을 가지고 있다. 이 Refresh Token으로 Access Token을 갱신하여 사용자가 빈번한 로그인을 하지 않도록 해준다. |
3. OAuth 동작 원리
설명
- 사용자 [ Resource Owner ]는 서비스를 이용하기 위해 서버 접근 [ Client ] 을 요청한다.
- [ Client ] 는 사용자에 대한 로그인 정보가 없으면 [ Resource Owner ] 에게 redirect_uri 과 client_id 가 담긴 로그인 URL을 제공해준다.
- 사용자 [ Resource Owner ] 는 로그인 URL을 이용하여 [ Authorization Server ]가 제공해준 로그인 페이지를 요청한다.
- [ Authorization Server ] 는 사용자에게 로그인 페이지를 제공해준다.
- 사용자 [ Resource Owner ] 가 아이디와 비밀번호를 입력함으로서 로그인을 요청한다.
- 인증서버 [ Authorization Server ]는 Authorization Code를 사용자에게 제공해주면
- 용자 [ Resource Owner ] 는 Authorization Code와 redirect_uri로 [Client] 서버에 접근함으로써 access token을 요청한다.
- [ Client ] 서버는 Authorization Code로 [ Authorization Server ] 에서 Access Token을 발급해달라고 요청을 한다.
- [ Client ] 서버가 [ Authorization Server ] 로 부터 발급받은 Access Token을 사용자에게 제공함으로써 사용자는 로그인에 성공한다.
- 사용자 [ Resource Owner ] 가 Access Token으로 [ Client ] 에게 서비스를 요청하게 되면
- [ Client ] 는 [ Resource Server ]로부터 해당 Access Token으로 리소스 접근 요청을하고
- [ Resource Server ] 는 Authorization Code를 검증하고 검증이 성공하면 자신의 리소스 즉, 서비스를 제공한다.
- [ Client ] 는 [ Resource Server ] 에서 제공받은 서비스를 사용자가 이용할 수 있게 해준다.
'프로젝트 > 인증' 카테고리의 다른 글
[구글 소셜 로그인 구현] 구글 소셜 로그인 키 발급 받기 (0) | 2024.04.05 |
---|