AHRIBORI.COMv0.9
HomeAbout (2)Javascript (7)CSS (12)React (3)Webpack (1)Java (0)Node.js (4)ElasticSearch (1)자료구조 (8)알고리즘 (6)Selenium (1)Linux (2)Docker (1)Git (1)Tip (4)Issue (1)Memo (3)

[oAuth/JWT] Ahribori.com의 인증시스템과 서버 흐름

아리보리 | 2017.03.22 03:08 | 조회 1393 | 추천 0 | 댓글 0

 

처음 접해보는 React로 블로그를 만들 계획을 세우다가, 서버사이드도 트랜디한 기술을 도입해보자는 생각으로 JWT(Json Web Token)(rfc7519)을 이용한 oAuth(RFC6749와 완전히 동일하지는 않기 때문에 oAuth라는 표현을 써도 될런지는 모르겠지만) 구현까지 해보았다.

전체 서버 흐름도는 다음과 같다.

 

 

React를 100% 사용해서 클라이언트 사이드 코드와 서버 사이드 코드를 완전히 분리했으며, 게시물이나 이미지, 댓글 등을 저장, 제공하는 RESTful API 서버를 무상태(Stateless)로 만들기 위해 인증 서버(Authorizaion Server)를 별도로 구성했다.

이렇게 해서 얻을 수 있는 것은,

  • 써드파티 어플리케이션에서 API를 제공할 때 사용자의 계정정보를 노출하지 않고 인증할 수 있음.
  • 인증과 인가(권한 부여)를 동시에 할 수 있음.
  • API서버가 클라이언트의 세션정보를 가지고 있지 않기 때문에, 스케일 아웃을 고려할 때 세션 클러스터링 등을 염두에 두지 않아도 됨.

 

사실 인증 서버를 따로 분리한 것은 커다란 시스템에서 사용하는 방식이지만 연습삼아 분리해 보았다.

 

나중에 다른 서비스들을 개발할때 회원 기능을 빨리 만들기 위해, 아리보리닷컴으로 로그인을 쉽게 붙힐 수 있는 개발도구도 만들었다.

 

AHRIBORI_AUTH_SDK: https://auth.ahribori.com/docs/