본문 바로가기
엘리스 AI 트랙 4기/elice AI track

[6주차] OAuth와 Nginx

by _sweep 2022. 2. 25.

2월 25일 자 학습 내용 정리입니다.

 

 

OAuth

OAuth(Open Authorization)는 서비스 제공자가 다른 서비스에게 데이터를 제공하기 위해 서비스 사용자에게 제공하는 사용자 인증방식의 표준을 의미한다.

 

OAuth 동작 방식은 아래와 같다.

  1. 서비스 제공자에게 인증 요청
  2. 인증 완료 후 사용자 정보를 요청한 서비스로 전달
  3. 인증 정보를 이용해 서비스 제공자의 데이터 사용

 

✏️ 예제 - 구글 로그인 구현

passport가 제공하는 구글 로그인 구현체인 passport-google-oauth20을 사용하면 구글 로그인을 구현할 수 있다.

 

const GoogleStrategy = require('passport-google-oauth20').Strategy;

const config = {
    clientID: 'clientID',
    clientSecret: 'clientSecret',
    callbackURL: 'callbackUrl',
};

...

new GoogleStrategy(config, (accessToken, refreshToken, profile, done) => {
    const { email, name } = profile._json;
    ...
    // create or update user
}

 

구글 로그인을 구현하기 위해서는 구글 클라우드 플랫폼에 프로젝트를 등록해야 한다.

구글 클라우드 플랫폼에서 프로젝트에 필요한 클라이언트ID, 클라이언트 비밀번호 등을 발급받고 이를 config로 설정한다.

config에는 OAuth 클라이언트 설정값과 결과를 전달받을 callbackURL이 들어있다.

 

passport.use(google);

---
router.get('/google', passport.authenticate('google', {
    scope: ['profile', 'email']
}));

router.get('/google/callback', 
    passport.authenticate('google', {failureRedirect: '/login'}),
    (req, res, next) => {
        res.redirect('/');
});

 

구글 클라우드 플랫폼에서 설정한 URL로 접근하면 자동으로 구글 로그인 페이지로 넘어가게 되며 로그인 완료 후 로그인 정보를 config에 설정한 callbackURL로 전달해 준다.

전달받은 데이터는 strategy에서 처리하며 처리가 완료되면 request handler를 실행한다.

 

 

Nginx

엔진엑스(Nginx)는 최근 신규 프로젝트에서 가장 많이 채택되고 있는 웹 서버 소프트웨어이다.
기존에 많이 쓰이던 Apache보다 가볍고 빠르다.

웹 서버 소프트웨어란 HTTP 요청을 받아 파일이나 프로그램 실행 결과를 HTTP 응답으로 보내주는 소프트웨어이다.
그러나 이는 이미 Node.js에서 자체적으로 지원하는 기능이라 Node.js는 웹 서버 소프트웨어 없이도 스스로 동작할 수 있다.

하지만 Node.js 단독으로 production-level의 서비스를 구축할 수는 없기 때문에 Nignx와 같은 웹 서버 소프트웨어를 통해 HTTPS, 도메인 연결, static file caching 등의 기능을 사용할 수 있도록 한다.

 

✔️ Nginx + Node.js

Nginx의 reverse-proxy 기능을 사용해 Node.js와 Nginx를 연결할 수 있다.
reverse-proxy는 HTTP 요청을 다른 서버에 전달하는 기능을 담당한다.
따라서 Nginx가 HTTP 요청을 받고 설정된 내용에 해당하는 요청만 Node.js로 전달한다.

 

댓글