OAuth 란
- like 구글 로그인 기능
- 웹 서버에 구글 비밀번호를 제공하지 않고도, 구글 계정의 일부 접근 권한을 부여 할 수 있음.
- SNS 간편 로그인 기능
안전하지 않은 로그인 방식
- 사용자가 서버에 구글 아이디와 패스워드를 보냄
- 서버에서 구글로 로그인 요청
- 구글 에서 서버로 정보 보내줌
- 서버에서 사용자에게 로그인 성공 응답
▶️ 서버에서 사용자의 구글 아이디, 패스워드를 담고 있어 털리면 보안에 위협
Access Token 사용
- 서버에서 구글로 Access Token 보내기
- 구글에서 서버로 정보 보내줌.
▶️ 아이디, 패스워드가 아닌 토큰을 보냄.
OAuth 2.0
구성요소
- ResourceOwner : 사용자
- Client : 서비스 = 서버, 구글의 입장에서는 client 이기 때문에 client라 함.
- AuthorizationServer : 권한 부여 기능을 담당하는 서버 (=google, facebook)
- ResourceServer : 사용자의 개인정보를 가지고 있는 서버 (= google, facebook)
과정
출처 - https://80000coding.oopy.io/79ced3f6-8683-47be-b882-1dc39fcebde7
- ResourceOwner→ Client : SNS 로그인
- Client → ResourceOwner : Client ID, Redirect URI
- ResourceOwner → AuthorizationServer : SNS 로그인 페이지 요청(Client ID, Redirect URI)
- AuthorizationServer→ResourceOwner : SNS 로그인 페이지 제공
- ResourceOwner → AuthorizationServer : SNS 로그인 수행 (ID, Password)
- AuthorizationServer→ ResourceOwner : Authorization Code 전달
- ResourceOwner → Client : Redirect URI 접속 with Authorization Code
- Client → AuthorizationServer : Authorization Code
- AuthorizationServer → Client : Access Token
- Client → ResourceServer : Access Token으로 API 호출
- ResourceServer → Client : 요청된 자원 전달
- Client → ResourceOwner : 서비스 제공
참고 문헌