open AUthentication2 의 약자로 인증 및 권한 획득을 위한 표준 프로토콜,프레임워크이다.
HTTP 서비스에 대한 접근 권한을 얻기 위해 APP 승인 작용을 조율해서 RESOURCE OWNER를 대신한다.
Resource owner
보호되고 있는 자원에 대한 접근 권한을 부여 할 수 있는 소유자.
ex) 우리앱에서 소셜 로그인을 하고 싶은 사용자.
Resource Server
Client가 제어 하고자 하는 자원을 보유하고 있는 서버.
ex) 구글, 네이버 , 카카오, github
Client
Resource server에 접속해서 정보를 위임받는 app
ex) 내가 만드는 app server
Client ID, secrets ,Authorized redirect Url
github에서 Oauth2.0을 이용하기위해 client app을 등록할 때 발급해준다.
Client ID: CLIENT APP 구별을 위한 노출 가능한 식별자
Client Secret: clientID에 대한 비밀키로 절대 노출이 되면 안된다.
Authorized redirect Url : 인증을 마치고 redirect가 이루어지는데 QueryString으로 넘어오는 Unique한 code
===> 해당 code와 Client Id, Secret을 가지고 accessToken을 발급 받는다.
Client app에 관련된 Github의 흐름.
GET https://github.com/login/oauth/authorize
-> 이를 통해 USER에게 로그인 및 앱 승인을 사용할 수 있는 계정으로 사용할 것인지 묻는다.
post https://github.com/login/oauth/access_token 정보를 요청
+@ OpenID CONNECT SERVER를 지원하는 RESOURCE SERVER를 이용하면 더 손쉬운 구현이 가능하다.