참고 강의입니다!
https://www.youtube.com/watch?v=vo_0PW3V5zU&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-&index=2
삼자간의 복잡한 이해관계로 엮어있었다.
이제부터는 api 를 사용하면
자바스크립트를 통해서 서버쪽 기술 없이 제어할 수 없게 된다.
사용자가 우리 서비를 이용해서 내용을 입력하면 google facebook과 같은 다른 서비스에 접근할 수 있도록 허가를 받는 것이다.
사용자 입장에서 google과 같은 서비스를 믿기가 어렵다.
oAuth를 이용하면 그들이 서비스와 안전하게 사용할 수 있다.
사용자에게 카카오의 accestoken을 획득 후에 accestoken으로 사용자의 카카오 서비스를 사용할 수 있도록한다.
이것저것 만져보면서 연습을 하는 것보다 로그인 구현은 보안과 이어지기 때문에
정확하게 알고 구현하는 것이 중요하다고 생각했다.
덕분에 실제로 client secret은 외부로 유출되면 안되는 것을 알게되면 보안적인 부분도 놓치지 않을 수 있었다.
용어를 먼저 잡고 가자!
user (Resource Owner) : 자원을 가지고 있는 사람 -> 사용자
mine (Clinet) : 사용하고자 하는 사람 -> 개발자
resource sever : 우리가 사용하고자 하는 자원을 가지고 제공하는 사람
clinet ID : application을 식별하는 식별자
client Secret: clinet secret은 외부에 노출되면 보안 사고가 난다.
Authorized redirect URLs : resource server 에게 리소스 전달 받을 주소
resource server은 위 3가지 정보를 알 수 있다.
resource owner에게 화면을 보여준다.
사용자의 동의를 받아야 한다. -> 링크를 걸어주면 된다. (clinet id, scope, redirect url)
authorization code를 Resource server가 resource owner에게 제공한다.
그러면 resourve owner은 authorization code가 포함되어 있는 주소로 이동하게 된다.
그러면 클라이언트는 authorization code를 받급받을 수 있다.
다음, clinet는 resouce server에게 다시 (authorization code와 client secret)을 resource server에게 전송한다.
resource server은 accessToken를 client에게 응답해준다.
access Tokent은 클라이언트가 accessToken으로 접근 가능하게 해준다.
resource server가 client들에게 알려주는 방식대로 진행해주어야 한다.
-> 이를 API라고 한다.