Passport.js는 Node.js 애플리케이션에서 사용되는 인증 미들웨어. 사용자 인증을 구현하기 위한 간단하고 유연한 도구를 제공. 즉, 인증 처리를 대신해주고 개발자는 인증 이후 처리에만 집중할 수 있게 해 준다.
주요 특징:
- 유연성: Passport.js는 "전략"이라는 개념을 도입함으로써 다양한 인증 방법을 지원. 개발자는 애플리케이션에 필요한 전략만 선택하여 사용하면 된다.
- 450가지 이상의 전략: 로컬 인증(이메일/비밀번호)부터 Facebook, Google, Twitter와 같은 OAuth 기반 인증까지 수많은 전략이 커뮤니티에 의해 제공하기에 참고할 자료가 많다.
- 세션 관리: 사용자가 로그인할 때, Passport는 세션에 사용자 정보를 저장하여 이후의 요청에서도 인증 상태를 유지할 수 있다.
작동 원리:
- Strategies: Passport의 핵심은 "전략(Strategies)"이다. 전략은 특정 인증 메커니즘(예: 로컬 유저네임/비밀번호 인증, Facebook 인증, Google 인증 등)을 구현한다. 개발자는 이러한 전략 중 필요한 것을 선택하여 애플리케이션에 적용할 수 있다.
- Middleware: Passport는 Connect/Express 미들웨어와 호환. 요청이 들어오면 Passport는 해당 요청에서 인증 정보를 찾아낸다.
- Session: 사용자가 로그인하면, Passport는 세션에 사용자 정보를 저장할 수 있고, 이후 요청에서는 이 세션 정보를 통해 사용자가 로그인된 상태인지 판별한다.
- 인증 요청: 사용자가 로그인을 시도하면, Passport는 해당 전략의 로직에 따라 인증을 진행.
- 인증 결과: 인증이 성공하면, Passport는 done 콜백을 호출하여 인증된 사용자의 정보를 반환함. 인증이 실패하면, 오류 메시지나 다른 정보와 함께 done 콜백을 호출.
- 라우트 연결: Passport를 사용하여 구현된 인증 로직은 웹 애플리케이션의 특정 라우트와 연결되는데 이 라우트는 사용자가 로그인 페이지를 방문하거나, 소셜 로그인 버튼을 클릭할 때 호출 된다.
- 외부 서비스 연동: OAuth와 같은 전략을 사용할 때, Passport는 사용자를 해당 서비스의 로그인 페이지로 리다이렉트 하고, 로그인 후에는 원래 애플리케이션으로 돌아오게 된다. 이 과정에서 필요한 인증 토큰 및 사용자 정보는 Passport를 통해 처리.
passport.js를 사용하는 이유
- 단순성: Passport.js는 인증의 복잡한 부분을 추상화하여 단순한 API를 제공한다. 이를 통해 개발자는 쉽게 인증 기능을 추가할 수 있다.
- 확장성: 필요에 따라 새로운 인증 전략을 쉽게 추가할 수 있다. 커뮤니티에서 제공하는 전략을 사용하거나 직접 만들어 사용할 수도 있음.
- 통합성: 다양한 웹 프레임워크와 연동하여 사용할 수 있으며, 주로 Express.js와 함께 사용.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
23.08.16 RDBMS와 No SQL (0) | 2023.08.23 |
---|---|
23.08.15 아키텍쳐 설계 (0) | 2023.08.22 |
23.08.13 Access token과 Refresh token (0) | 2023.08.19 |
23.08.12 객체 지향 프로그래밍 (OOP) (0) | 2023.08.16 |
23.08.11 DI와 IoC (0) | 2023.08.15 |