Resource(자원) Server (Their), Resource Owner(user), Client (mine)
Authorization Server (인증과 관련된 처리를 전담하는 서버) = Resource Server
OAuth를 도입할 때 필요한 데이터는 Client ID
, Client Secret key
, Authorized redirect URLs
ID는 외부에 노출되어도 되지만, Secret key는 절대 지켜!
OAuth 버튼을 만드는 방법은 간단하다 버튼에 URL을
https://resource.server/?client_id=1&scope=B,C&redirect_url=https://client/callback
형식으로
만들면 된다
그래서 Resource Server에서 인증 절차가 끝나면 userID: 1, scope: b, c 라는 인증 정보를 갖게 된다
(* 여기서 scope는 리소스 서버에서 허용하는 기능들 ex. 프로필, 닉네임 등을 의미한다)
이 때, 제 3자간의 인증을 도와주는 임시 비밀번호는 authorization code입니다
유저가 resource server에서 코드를 받아서 클라이언트에게 전달하면 클라이언트 쪽에서 우리가 가진 정보를 토대로 리소스 서버로 다시 정보를 전송합니다 이 때 넘겨야 하는 url은
https://resource.server/token?
grant_type=authorization_code&
// 우리가 보내는 토큰의 타입
code=3&
// 리소스 서버에서 전달받은 코드
redirect_url=https://client/callbak&
client_id=1&
client_screct=2
// 시크릿 값 중요!! 🌟
이것을 리소스 서버에 전달하면 리소스 오너에게 전달했던 값들이 맞는지 확인하여 모두 일치하면 access token을 발급해준다
그리고 클라이언트에게 을 전달해주고, 이 토큰은 리소스 서버에 접근할 때 userID 1번에 해당하는 유효한 기능에 대해 권한이 열려있다는 열쇠가 된다
리소스 서버 api 문서를 기반으로 인증 정보를 붙여서 리소스 서버에 접근 가능하다 (get, post 등)
get 방식을 더 선호하는데 header에 Bearer <access_token>
을 같이 요청해주어야 합니다