1. OAuth 란?
OAuth 는 client 가 third party 어플리케이션에 접속할 때 페이스북, 구글, 트위터 등의 계정을 사용하여 접속 권한을 인증하는 오픈 스탠다드 프로토콜이다.
포털, 쇼핑몰 등에 접속할때 우리가 흔히 Google+, twiter 계정을 이용하여 별도의 회원가입 절차 없이 사용할때 이용되는 프로토콜이 OAuth 이다.
2. OAuth 의 등장배경
OAuth 방식이 등장하기 전에는 third party 어플리케이션에서 구글 등의 id / password 를 이용해 직접 로그인하여 사용했기 때문에 보안에 굉장히 취약했다.
구글의 입장에서는 개인정보가 신원이 확실치 않은 third party 에 제공하는 것이 매우 위험한 일이었고, third party 입장에서는 소중한 정보를 완벽하게 저장해야했기에 부담이 있었다.
2006년 트위터 개발자와 Gnolia 의 개발자가 보다 안전한 인증방식을 논의하면서 OAuth 가 등장하였고 2010년 OAuth 1.0 이 발표되었다.
현재는 Oauth1.0 , Oauth 2.0 버전이 사용중이다.
3. OAuth 의 인증방법
4. OAuth1.0? OAuth2.0?
OAuth1.0 과 OAuth2.0 은 거의 다른 방식으로 사용된다.
OAuth1.0 보다 인증절차를 간소화했고, 더 다양한 방식을 도입하였으나 1.0과 2.0 방식이 호환되지는 않는다.
2.0에서 애플리케이션의 인증방식이 강화되어 조금 더 안전해 졌으며 기존의 디지털 서명방식이 아닌 https 을 이용한 방식으로 암호화 하여 개발자에게 복잡한 로직이 요구되지않는다.
5. OAuth2.0 의 인증방식
1. Authorization Code : 인증 코드를 이용하여 access token 을 발급
2. Implicit : 인증코드 없이 즉시 access token 발급
3. Password : Client 가 계정을 받아 id/password 를 이용해 access token 을 발급
4. Client Credentials : client 가 user 외부에서access token 을 발급. 보통은 clinet 본인의 resource 접근을 위해 사용
5. Device Code : 브라우저가 없거나 입력장치가 없는경우 이전 장치에서 받은 code를 이용하여 access token 발급
6. Refresh Token : access token 이 만료되었을 시 새로 발급받을 수 있으며 기존 토큰은 만료됨