[Express] Passport.js이란?

2023. 9. 17. 23:35공부 중/Node.js

0. 출처

 

 

Passport.js - 생활코딩

수업소개 이 수업은 Node.js Express의 인증 미들웨어인 Passport.js의 사용법을 알려드리는 수업입니다.  수업대상 로그인/로그아웃/접근제한과 같은 인증 기능을 구현하고 싶은 분에게 필요한 수업

opentutorials.org

 


1. Passport.js

 

 

최근에는 간편 로그인, ~로 로그인하기 등 다양한 인증 방식이 사용된다.

 

또한 다양한 서비스 간의 통합이 활발해졌다.

 

개발자들은 기본적인 아이디와 비밀번호부터 OAuth, OpenID, SAML과 같은 복잡한 인증 프로토콜까지 다양한 방식을 통해 인증 기능을 구현해야 했다.

 

또한 인증 기능은 잘못 구현할 시 큰 보안 사고가 발생한다.

 

인증 기능을 구현하는 것은 높은 난이도, 낮은 재사용성, 심각한 보안 이슈 등 부담스러운 작업이었다.

 

사용하기 쉬우면서 재사용성이 높고 안정적인 인증 라이브러리의 필요성이 대두되는 가운데 Express 진형에서 인증 기능을 쉽게 구현하기 위해서 등장한 라이브러리가 Passport.js이다.

 

Passport.js에서는 수많은 인증방법을 Strategy(전략)이라는 이름으로 제공한다.

 

Strategy를 사용할 수 있다면 수많은 인증기능을 손쉽게 구현할 수 있다.

 


2. OpenID

 

OpenID는 비영리기관인 OpenID Foundation에서 추진하는 개방형 표준 및 분산 인증 프로토콜이다.

 

웹 초기에는 많은 서비스가 저마다의 아이디와 비밀번호를 요구했다.

 

사용자 입장에선 번거로울 수 밖에 없다.

 

이에 하나의 아이디, 비밀번호로 다양한 서비스를 사용할 수 있는 방법이 필요했다.

 

OpenID는 이러한 시대적인 배경에서 등장했다.

 

사용자는 IDP(IDentity Provider)를 통해서 한 번 인증하며 다른 서비스도 인증 없이 로그인할 수 있게 되었다. (SSO - Single Sign-On)

 

출처 : https://oauth.net/


3. OAuth

 

Oauth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준이다.

 

웹 발전과 더불어 사용자가 자신의 데이터를 하나의 서비스에서 다른 서비스로 공유, 연동하고 싶어하는 수요가 발생했다.

 

처음에는 ‘A’ 서비스에서 다른 서비스 ‘B’ 상의 데이터에 접근하기 위해서 B의 아이디와 비밀번호를 A에 제공해야 했다.

 

하지만 다른 서비스에 로그인 정보를 제공하는 것은 심각한 보안 문제를 야기했다.

 

그래서 B의 로그인 정보를 A에 제공하지 않고 B의 데이터에 접근할 수 있는 권한만 A에게 부여하면 해결할 수 있었다.

 

이에 구글은 AuthSub, 야후는 BBAuth를 사용하는 등 기업은 각자의 독자적인 방식을 사용했다.

 

OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다.

 

OAuth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증없이 여러 애플리케이션을 통합하여 사용하는 것이 가능하게 된다.

 

출처 : https://ko.wikipedia.org/wiki/OAuth


4. 차이점

 

오늘날에는 OpenID Connect라는 표준이 많이 사용된다.

 

이것은 OAuth 2.0 위에 구축된 OpenID의 확장 버전이다.

 

OAuth 2.0의 권한 부여 메커니즘을 사용하면서도 사용자 인증 기능을 제공하여 두 기술의 장점을 합쳤다.