해당 글은 생활코딩 OAuth 2.0 강의를 듣고 필기하듯 작성한 글입니다

 

https://www.youtube.com/watch?v=hm2r6LtUbk8&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q- 

 

1. 수업소개

유저와  내가있고 다른사람들(구글, 페이스북, 카카오) 이 있다고 보자

 

이때 유저가 내가 운영하는 사이트를 들어와서 로그인 하려는데

 

구글이나 카카오 같은 서비스 를 통해 로그인하려고 하면 어떻게 해야할까?

 

가장 쉬운 방법은 유저에게 카카오 아이디 비밀번호를 받아서

 

대신 카카오에 로그인 처리를 해주는것이다

 

이렇게하면 우리사이트도 이용하고 카카오의 모든 서비스도 이용할 수 있게된다

 

하지만 유저 입장에서 무엇을 믿고 우리한테 아이디 비밀번호를 주겠는가 나같아도 주지않을것 같다

 

이때 사용하는것이 OAuth 이다

 

그래서 카카오에게 Access 토큰을 받아서 필수적인 기능만 허용해서 사용할 수 있다

 

 

2. 역할

카카오, 구글, 페이스북 == Resource Server (데이터를 가지고있는 서버)

카카오, 구글, 페이스북 == Authorization Server (인증과 관련된 처리를 전담하는 서버)

유저 == Resource Owner

나 == Client

 

3. 등록

맨처음 카카오를 사용하려면 client가 resource server에 승인을 받아야한다

그것을 register 라고한다

 

서비스마다 등록하는 방법이 다르다

하지만 공통적인 것은 클라이언트 ID, 클라이언트 secret, Authorized redirect URLs를 받는다

 

클라이언트 ID == 우리가 만들고있는 app을 식별하는 식별자 (노출가능)

클라이언트 secret == 그것에 대한 비밀번호 (노출안됨)

Authorized redirect URLs == 코드를 어떤 주소로 전달해달라 지정해주는 것

 

4. Resource Owner의 승인

등록이 완료되면 클라이언트와 리소스 서버 서로 클라이언트 ID와 클라이언트 secret을 알게된다

 

승인처리 과정 을 보자

 

1) 리소스 오너가 클라이언트에 접속하게 될때

2) 클라이언트가 OAuth 인증 버튼을 보여준다

3) 버튼을 누르면 리소스 오너가 리소스 서버에 접속하게되고

4) 리소스 오너가 로그인하면 리소스 서버에서 클라이언트ID, 클라이언트 secret이 같은지 확인한다

5) 같다면 리소스 오너에게 권한을 확인할것인지 메세지를 보내고

6) 허용 버튼을 누르면 리소스 서버에서 리소스 오너의 정보를 수집한다

 

5. Resource Server의 승인

1) 리소스 서버가 승인을 위해 authorization code를 리소스 오너에게 전달한다

2) 이때 url을 받는데 이를 통해 리소스 오너가 클라이언트에게 authorization code를 준다

3) authorization code를 받은 클라이언트는 모든 정보를 합쳐서 리소스 서버에게 넘긴다

4) 정보가 모두 일치하는것을 확인한 리소스 서버가 액세스 토큰을 발급해서 클라이언트에게 준다