나의 서비스를 그들(구글,트위터)의 서비스와 상호작용 하게 해준다.
oauth를 통하여 accessToken 획득
accessToken 을 통해 데이터를 CRUD 할 수 있다.
accessToken ⇒ 내가 그들의 서비스를 가져다 쓸 때 쓸 것만 부분적으로 허용하는 비밀번호
유저의 id,pw를 보관 하지 않고 식별 가능 하다.
OAuth 2.0에서의 4가지 역할
resource owner = user
resource server = 그들의 서비스(데이터를 가지고 있는 서버)
authorization server = 인증 관련 처리 전담 서버
client = 내 서비스
동작방식
REGISTER
client가 resource server를 이용하기 위해서는 승인을 받아야 한다(register).
id: 나의 서비스를 식별하는 고유번호
secret: 위에 대한 비밀번호(외부 노출XXX)
authorized redirect uris: resource server가 나에게 권한 부여 과정에서 authorized code전달 시에
이 주소로 주세요 라고 알려주는 것
google cloud platform 에서 create app가능
참고 영상
https://www.youtube.com/watch?v=_mm5ks5aWQ4&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-&index=3
AUTHORIZATION(resource owner의)
사용자로부터 resource server에 접속하는 것에 대한 동의를 구하는 과정
유저가 로그인 시, id와 url이 같은 것을 확인한 후에, scope에 해당하는 권한 허용을 resource server가 resource owner에게 물어봄
허용하면 그 정보가 resource server에 가서 user id 1은 scope에 대한 작업을 client id 1에게 허용했다.
resource server의 승인
이제는 resource server가 승인 해줘야 한다. 이 전에 하나 더 남음.
authorization code(3자간 인증 위한 임시 비번)를 resource server에서 owner에게 전달
resource owner는 Location 헤더 값에 의해서 저 주소로 이동
client는 authorization code를 갖게됨
이때 client는 server에게 code를 전송해서 access token발급하기 전 단계
client는 server에 직접 접속
authorization code 일치하는지 확인 (client가 전송한 정보가 전부 일치하는지 확인)
access token 발급
authorization code 지우고 access token 발급
client는 access token값 저장
앞으로 server는 access token을 보고 user id 1의 권한 판단
API(Application Programming Interface)호출
resource server를 호출하는 조작 장치 ⇒ API
access token발급 받아서 uri에 넣고 보내면 호출 가능 (다른 방법 많음)
curl을 사용하여 헤더에 넣어 보내기 가능. 저 “ ”사이를 헤더에 넣음
그 뒤에 접속하려는 api주소
refresh token
access token은 수명이 있다.
access token을 다시 발급 받는 법 ⇒ refresh token
A)권한 획득
B)access token과 함께 refresh token 발급 (아닌 경우도 있다)
C D) access token을 제출하여 resource 가지고옴
F) access token 수명 끝남
G H) refresh token을 제출하여 access token 다시 발급(refresh token도 다시 발급 될 수 있다.)