/////
Search
💭

자원을 주고 받기 위한 인증 프로세스 세우기

태그
JWT
목차

외부에서 요청이 들어온다면?

이번 과제에는 피드 서비스sns 서비스가 있습니다. 이 둘은 별개의 회사가 운영하는 서비스이며, 피드 서비스는 각종 sns 서비스에 특정 게시글의 통계를 요청해야 합니다sns 서비스의 입장에서는 들어오는 요청을 마구잡이로 받을수 없겠죠. 어떻게 이를 해결하면 좋을까요?

OAuth2.0 프로토콜

이번 프로젝트에서 OAuth2.0 프로토콜을 사용한 적이 있습니다. 구글 로그인때와 비슷하게 인증과정을 세워보면 어떨까? 하는 생각이 들었습니다. OAuth2.0 프로토콜은 다음과 같은 방식으로 동작합니다.
하지만 저희의 기능은 클라이언트 로그인 화면이 필요없습니다. 피드 요청할때마다 특정 sns 에 로그인 할게 아니기 때문이죠. server to server 요청이라 다른 아키텍쳐가 없나 찾아보았습니다. 그리고 찾은 결과물
(그래 바로 이런 느낌이였어…)

내가 구현할 수 있나? 구현 가능성 생각하기

이전에 OAuth2.0 프로토콜을 다뤄보기도 했고, 어느정도 동작과정을 알고 있기에 구현을 해볼수는 있겠다. 라는 생각이 들었습니다. 하지만 임박한 과제 시간안에 문서작성 + 부족한 부분 수정 + 리드미 작성 + 그외 정리 등등을 다 할수 있을지는 의문이였습니다. 그래서 지금은 간소하게 인증절차만 구현하고, 다음에 인증서버(8083 포트 사용)를 하나 더 만들어서 리팩토링을 해봐야겠다는 생각을 했습니다.
프로젝트를 제 시간안에 끝내는 것도 필요한 역량 중 하나니까요! 어쨌든 최종 시퀀스는 아래와 같습니다.

P.S.

처음 그리는 UML 시퀀스 다이어그램이라 개념에 맞지 않을 수 있습니다. 이점 양해 부탁드립니다.

첫번째 dispatch

특정헤더에 알맞은 어세스토큰을 넣어서 요청한 경우입니다. 토큰 검증에 이상이 없는경우 요청한 자원을 응답으로 받게 됩니다.

두번째 dispatch

특정 헤더에 알맞은 어세스토큰이 없거나, 특정헤더가 없는경우 입니다. 토큰 검증에 이상이 있기때문에 응답으로 토큰 요청 callback url 을 보냅니다. 받은 url 로 어세스토큰을 요청하고, 어세스 토큰을 받습니다. 이를 다시 요청에 넣어서 보내고, 토큰 검증을 받은 뒤 요청에 해당하는 응답을 받습니다. 아래는 응답 결과를 캡쳐한 이미지 입니다.

토큰 발급 callback url 응답

토큰 발급