Passport OAuth Strategy 개발
Passport는 Javascript로 개발된 범용 OAuth 미들웨어 모듈이다.
요즘 회사에서 MEAN Stack으로 개발을 하고 있는데, 네이버 로그인도 OAuth 2.0을 지원하는 관계로 이것과 연동하는 작업을 하게 되었다. Passport의 한 가지 전략(strategy)으로 구현하면 되는데, 이미 facebook, google, linkedin 등의 전략이 구현되어 있어서 그걸 참고하여 개발했다. passport와 다양한 전략 모듈을 개발한 사람이 Jared Hanson인데 이 개발자 덕분에 큰 비용을 들이지 않고 개발을 할 수 있었다.
그러나 개발 중에 다음과 같은 우여곡절이 좀 있었다.
1) 네이버 로그인을 담당하는 부서에서 만들어준 예제가 express 3.x용이어서 express 4.x에서 제대로 실행되지 않아서 이걸 업그레이드해가면서 동작하도록 수정하는 작업이 고통스러웠다. (그냥 express 3.x에서 실행되도록 환경을 갖출 걸…)
2) 네이버 로그인 사용자의 프로파일 정보가 JSON이 아니라 XML로 나오는데, 이 XML을 JSON으로 변환하는 과정에서 불필요한 배열 구조로 만들어지는 문제점이 있었다. 이를 해결하기 위해 여러가지 XML 변환 모듈을 테스트해봤으나 passport에 들어맞는 구조로 파싱이 안 되는 게 대부분이었고 결국 하드코딩으로 해결할 수 밖에 없었다. 심지어는 배열 생성을 막는 옵션도 있었으나 정상적으로 동작하지 않았다.
3) 사용자 프로파일 정보를 passport와 MEAN Stack의 데이터 모델 양쪽에 맞추는 작업이 필요한데 데이터를 한줄씩 분석하면서 맞추는 작업을 했다.
현재 passport-naver라는 이름의 npm 모듈로 등록을 해놓았다.