들어가기 전에
웹 또는 애플리케이션을 사용하다 보면 우리는 SNS 로그인이라는 것을 많이 접하게 된다. 너무나 당연하게도 SNS 로그인을 하면, 내가 따로 정보를 기입할 필요 없이 해당 웹 또는 애플리케이션을 사용할 수 있다. 이렇게 아주 당연하게 동작하는 이 흐름은 어떻게 이루어지는걸까? 내 이메일과 비밀번호를 해당 사이트에 공유 해야하는걸까? 만약 그렇게 내 정보가 악용 당하면 어쩌지?
이러한 궁금증에 찾아본 오늘의 주제는 OAuth다.
오늘은 SNS 로그인할 때, 그리고 연동된 내 정보를 안전하게 이용할 수 있게 해주는 OAuth에 대해 알아보고자 한다.
OAuth (Open Authorization)
- 접근 위임을 위한 개방형 표준(open standard)
- 흔히 인터넷 사용자가 비밀번호를 전달하지 않고, 다른 사이트 또는 애플리케이션에 그들의 정보를 위임하는 방법
- 흔히 쓰이는 버전은 2가지로, OAuth 1.0a와 OAuth 2.0이 있음
- 간단하면서도 애플리케이션 지원이 강화된 OAuth 2.0은 최종안이 아님
동작 방법
우리가 하나의 사이트 또는 애플리케이션을 개발하고 있다고 가정하자. 우리 사이트에 SNS 로그인으로 가입하려는 사용자의 정보를 알고 싶다.
이때 OAuth를 이용하면 다음의 순서로 동작한다.
- 권한 요청
- 우리 사이트(Client)는 정보를 알고 싶은 회원(Resource Owner)를 데리고 정보를 제공하는 사이트(Resource Server)로 이동한다.
- 권한 허락
- 회원(Resource Owner)은 이동한 사이트(Resource Server)에서 로그인을 한다.
- 로그인한 회원(Resource Owner)은 해당 사이트(Resource Server)에서 우리 사이트(Client)에 정보 제공하는 것을 허락한다.
- 권한 허락 인증
- 해당 사이트(Resource Server)는 회원(Resource Owner)을 우리 사이트(Client)로 리다이렉트 시켜준다.
- 접근 토큰(Access Token) 발급
- 정보 제공 사이트(Resource Server)가 회원(Resource Owner)을 우리 사이트(Client)로 리다이렉트 시, access token을 발급한다.
- 접근 토큰(Access Token)
- 우리(Client)는 회원 정보(Resource Owner)를 얻는 API(Resource Server)에 접근 토큰(Access Token)을 포함시킨다
- Resource Owner의 정보
- 올바른 Access Token이라는게 확인이 되면, 회원 정보(Resource Owner)가 반환된다.
🔗 참고자료