꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

JAVASCRIPT/자바스크립트 이론

oAuth란

gold_dragon 2021. 2. 2. 13:11

세 개의 참여자가 있습니다. 먼저, 제가 개발한 서비스(Client)가 있습니다. 그리고 그 서비스를 사용하는 사용자(Resource Owner)가 있습니다. 마지막으로 제 서비스가 연동하려는 다른 서비스(Resource Server, Authorization Server)가 있습니다.(구글, 페이스북 등)

 

예를 들어서 사용자가 제 서비스에서 글을 쓰면, 사용자의 구글 캘린더에 자동으로 저장되도록 하거나 페이스북에도 같은 글이 올라가면서 공유할 수 있도록 개발할 수 있습니다. 제 서비스는 사용자의 구글 혹은 페이스북 계정에 접근을 해야됩니다. 이때 사용되는 기술이 oAuth입니다.

 

oAuth를 이용하면 안전하게 제 서비스가 구글 혹은 페이스북과 안전하게 상호작용할 수 있습니다. 구글 혹은 페이스북에서 사용자의 아이디와 비밀번호를 제공할 필요없이 accessToken을 제공합니다. 그리고 제 서비스는 이 accessToken을 사용해서 구글 혹은 페이스북과 상호작용할 수 있습니다.

 

로그인할 때 oAuth를 사용하면 사용자의 비밀번호 아이디를 갖지 않고 있어도 사용자를 구별할 수 있게 됩니다. 사용자는 자신의 아이디와 비밀번호가 유출될까 걱정할 필요가 없어진거죠.

과정

Client가 Resource Server를 이용하기 위해서는 사전에 승인을 받아놔야 됩니다. Resource Server는 Client로 부터 Client ID, Client Secret, Authorized redirect URIs를 받습니다.

 

Resource Server와 Client 둘 다 Client ID, Client Secret 정보를 갖고 있는 상태에서 Resource Owner가 접근 권한에 접속하면 Resource Server에서 로그인 상태를 확인 후 로그인이 안돼 있으면 로그인 하라는 알림을 주고, 로그인이 돼 있다면 요청온 Client id와 자신이 가지고 있는 Client id를 비교하고 일치하는 id가 있다면 redirect url이 같은지 아닌지 확인을 합니다. 같다면 권한을 허용할 것인지 확인을 합니다. Resource Owner가 권한을 허락하면 Resource Server는 해당 데이터(000 권한을 허락)를 저장합니다.

 

Resource Owner가 허락을 했으면, 다음에는 Resource Server가 허락을 해야됩니다. 바로 accessToken을 발급하지 않고 한 가지 절차를 더 거칩니다. authorization code를 Resource Server가 Resource Owner에게 전송합니다. 이때 Client로 authorization code를 전달하면서 Client는 autorization code를 저장합니다. 그 후 Client에서 Resource Server로 인증 정보를 보내면서 인증하게 됩니다.

 

Resource Server는 인증이 끝났기 때문에 authorization code를 지웁니다. 그리고 accessToken을 발급하고 Client에게 accessToken으로 응답합니다. accessToken으로 Client와 Resource Server가 상호작용하게 됩니다.

 

'JAVASCRIPT > 자바스크립트 이론' 카테고리의 다른 글

currying이란  (0) 2021.02.05
REST API란  (2) 2021.02.03
쿠키 / 세션 / 로컬스토리지 / 세션스토리지  (0) 2021.02.01
브라우저 렌더링 과정  (0) 2021.01.31
클로저란  (0) 2021.01.29