Skip to content

Passport 공식문서 정리

JiEun Lee edited this page Nov 8, 2020 · 3 revisions

Passport 공식문서 정리

Passport 공식

  • Custom Callback

  • 내장 옵션이 인증 요청을 처리하기에 충분하지 않은 경우 Custom Callback(사용자 정의 콜백)을 통해 처리 할 수 있다.
  • Passport는 세션을 지원하는데 우리 프로젝트에서는 토큰을 사용하기 때문에 세션을 비활성화 해야 한다. Custom Callback에서는 req.login()을 호출하지 않으면 된다.
app.get('/login', function(req, res, next) {
  passport.authenticate('local', function(err, user, info) {
    if (err) { return next(err); }
    if (!user) { return res.redirect('/login'); }
		
    // 세션을 사용하지 않으므로 이 부분을 지우고 
    // 토큰 처리
    req.logIn(user, function(err) {
      if (err) { return next(err); }
      return res.redirect('/users/' + user.username);
    });

  })(req, res, next);
});
  • Verify Callback

  • 사용자 인증 성공 여부에 따라 확인 콜백 인자가 달라진다.
// 1. 인증에 성공한 경우
return done(null, user); 

// 2. 인증에 실패한 경우(ex. 비밀번호 틀림)
return done(null, false); 

// 3. 실패 이유를 메세지로 전달 가능
return done(null, false, { message: 'Incorrect password.' });

// 4. 예외 발생(ex. 데이터베이스를 사용할 수 없는 경우)
return done(err); 
  • 3번의 인증 실패의 경우 서버가 정상적으로 작동하는 자연스러운 조건이고, 4번은 서버의 예외 처리로 동작하기 때문에 두 개를 구별해서 사용하는 것은 중요하다.

passport-local

  • ID와 Password를 사용한 사용자 인증 처리 모듈

passport-jwt

  • JSON 웹 토큰을 사용한 사용자 인증 처리 모듈
  • Request에서 토큰을 추출하는 방법은 jwtFromRequest 옵션을 통해 설정할 수 있다.
  • 쿠키에서 토큰을 추출할 경우 Custom Extractor function(사용자 지정 추출기 함수)을 작성해야 한다.
var cookieExtractor = function(req) {
    var token = null;
    if (req && req.cookies)
    {
        token = req.cookies['jwt'];
    }
    return token;
};
Clone this wiki locally