OAuth

OAuth

인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준

쉽게 말해서 카카오, 네이버, 구글 등의 아이디로 나의 서비스를 이용할 수 있게 하는 서비스인데 이는 편리함을 위해 만들었다. 

상기 서비스의 계정정보가 처음 보는 서비스에 넘어가지 않을까 하는 우려도 있지만 이는 꽤 복잡한 과정을 통해서 보호되어 전달된다. 비밀번호입력으로는 안전하지 않으니 액세스 토큰을 발급 하여 해당 계정의 정보를 사용하게 하는데 일단 용어를 정리하고 가야한다.

OAuth 에서는 용어를 아래와 같이 정의한다.

client  -  개발자의 서버 

resource owner - 사용자 

resource server - 계정 정보 서버 (구글, 네이버, 카카오 등)

authorize server - 계정 인증을 위한 서버 


클라이언트는 resource server 에 사전 등록을 해야한다. 

client ID, client secret, authorized redirect URIs 데이터가 일반적으로 필요하고 서비스에 따라 요구하는게 조금씩은 다르다고 한다.

resuorce owner 가 server 로그인을 하면 해당 범위에 대한 확인이 다시 들어오면서 client 가 해당 범위에 토큰을 부여받는 형식으로 먼저 client id와 함께 넘어간다.



이후 authorization code 를 resource server가 resource owner 에게 전송되고 

owner는 이것을 client에게 넘긴다. (이는 물론 사용자는 모르는 빠른 시간내로 이루어진다.)

client는 이제 code와 client sercet을 resource server에 넘기고 이로서 최종적으로 token을 발급 받게 되는것이다. 

이 token안에는 해당 사용자에 대한 고유 번호와 허용 범위가 담겨 있고 이를 통해 우리는 회원을 식별할 수 있을뿐만 아니라 해당 서비스의 api (ex: google calendar)들을 사용할 수 있다.

처음에는 이를 파이어베이스를 통해서 ssafy 2학기 특화 프로젝트에 적용시키려 했지만 이는 백엔드가 있는 서비스에서 굳이 추천할만한 일은 아니라고 한다. 그래서 일단 한글로 문서화가 잘돼 있는 카카오의 OAuth를 도입해보려고 한다. 


참고: 생활코딩 

댓글

이 블로그의 인기 게시물

git-receive-pack not permitted on 깃 허브 로그인 관련 문제