본문 바로가기

study/이거저거

OAuth 2.0 - 생활코딩 강의 정리(2)

생활코딩님의 강의를 듣고 정리하는 글입니다. 제가 임의로 다시 정리한 것이기 때문에 실제 강의와는 조금 다릅니다.

 

리소스 오너의 승인.

 

클라이언트를 리소스 서버에 등록하게 되면 리소스 서버는 해당 클라이언트 id, secret, redirect uri을 갖게 된다.

등록 과정을 마치면 리소스 오너가 리소스 서버에게 클라이언트의 접근을 승인한다는 것을 알려야 한다.

 

만약 리소스 서버가 A, B, C, D 의 기능을 갖고 있고 클라이언트가 B, C를 사용할 것이라면, 그것에 대한 인증만 받는 것이 좋다.

 

리소스 오너(유저, 사용자)가 {클라이언트의 기능}을 사용하기 위해 {리소스 서버의 기능}을 사용해야 한다면, 클라이언트는 리소스 오너에게 링크를 건네준다.

이 링크에는 클라이언트 id, 사용할 리소스 서버의 기능들(이것을 scope라고 한다), redirect uri가 있다.

 

리소스 오너가 클라이언트에게 제공 받은 링크에 접속하면 리소스 서버에 접속하게 되고, 리소스 서버에 로그인이 되어있지 않았다면, 로그인 페이지로 넘겨 로그인을 하게 한다.

 

그 후, 리소스 서버는 전달 받은 클라이언트 Id를 확인하고, redirect uri를 확인한다. 다르다면 거기서 서비스를 멈추고, 갖고 있는 정보와 같다면 전달 받은 scope에 해당되는 권한을 클라이언트에게 부여할 것인지 확인하는 메시지를 리소스 오너에게 전달하고 승인(허용)을 받는다.

 

그러면 리소스 서버는 해당 리소스 오너가 해당 scope에 대한 클라이언트의 작업을 승인했다는 것을 저장한다.

 

이렇게 리소스 서버가 리소스 오너의 동의를 구한다.

 

리소스 오너의 승인


리소스 서버의 승인.

 

리소스 오너가 승인을 하면, 리소스 서버가 승인해야 한다.

 

리소스 서버는 Authorization code을 발급해 리소스 오너에게 전달한다. 전달할 때는 redirect하는 링크를 리소스 오너에게 줘서 클라이언트에게 바로 접속하도록 한다. 해당 링크에는 Authorization code이 들어있다.

 

그러면 클라이언트는 Authorization code을 받게 된다. 그리고 클라이언트는 리소스 오너에게 받은 Authorization code값, redirect_uri, 클라이언트 id, 클라이언트 secret 값을 리소스 서버에게 전송한다.

 

클라이언트에게 정보를 받은 리소스 서버는 받은 Authorization code, 클라이언트 id, 클라이언트 secret, redirect_uri값을 자신이 갖고 있는 정보와 비교해 확인하고 정보가 일치한다면 액세스 토큰을 발급한다.

 

리소스 서버의 승인


Access token 발급.

 

OAuth의 목적은 Access token을 발급하는 것이다.

 

클라이언트가 인증을 받기 위해 갖고 있던 Authorization Code는 리소스 서버에게 정보를 전송 후 클라이언트, 리소스 서버에서 지운다.

 

그리고 리소스 서버는 액세스 토큰을 발급한다. 그리고 그것을 클라이언트에게 응답한다. 그러면 같은 액세스 토큰을 리소스 서버와 클라이언트가 저장하게 된다.

 

클라이언트가 해당 액세스 토큰을 갖고 리소스 서버에게 접근하면, 리소스 서버는 액세스 토큰과 맞는 사용자(리소스 오너), 권한을 승인한 scope에 대해 작동을 허용한다.

 

액세스 토큰 발급

 

'study > 이거저거' 카테고리의 다른 글

엉터리 정리 - IIS, 레드마인  (0) 2021.06.02
OAuth 2.0 - 생활코딩 강의 정리(3)  (0) 2021.05.02
OAuth 2.0 - 생활코딩 강의 정리(1)  (0) 2021.05.01
엉터리 정리 - yaml  (0) 2021.03.23
엉터리 정리 - 쿼리 스트링  (0) 2021.03.20