원문 링크 - http://www.catonmat.net/blog/nodejs-modules-everyauth/

본 게시글은 원저자의 허락을 얻어 번역한 것입니다.

1회 연재 - dnode (RPC 라이브러리)

2회 연재 - optimist (옵션 파서)

3회 연재 - lazy (lazy 리스트 처리)

4회 연재 - request (HTTP 스트림 처리)

5회 연재 - hashish (해시 처리)

6회 연재 - read (쉬운 표준 입력 처리)

7회 연재 - ntwitter (트위터 API)

8회 연재 - socket.io (웹소켓 통신)

9회 연재 - redis (redis 클라이언트 라이브러리)

10회 연재 - express (경량의 고속 웹 프레임워크)

11회 연재 - semvar (버전 넘버링 처리)

12회 연재 - cradle (고수준 CouchDB 클라이언트)

13회 연재 - JSONStream (스트리밍 JSON 파서)

오늘 소개할 모듈은 Brian Noguchi가 만든 everyauth다. everyauth는 connect 모듈의 미들웨어로 사용되며 페이스북, 트위터, 구글 등과 같은 서비스의 인증을 처리하기 위하 사용된다.

다음은 이 모듈을 통해 로그인 처리를 할 수 있는 사이트 목록이다.


Everyauth supports a plenty of sites.

모듈을 사용하기 위해서는 다음과 같이 connect에서의 미들웨어 설정을 한다.

var everyauth = require('everyauth');
var connect = require('connect');

var app = connect(everyauth.middleware());

그리고 인증 처리를 할 서비스들의 비밀키를 다음과 같이 config.json에 구성한다.

module.exports = {
    fb: {
        appId: '111565172259433'
      , appSecret: '85f7e0a0cc804886180b887c1f04a3c1'
    },
    twit: {
        consumerKey: 'JLCGyLzuOK1BjnKPKGyQ'
      , consumerSecret: 'GNqKfPqtzOcsCtFbGTMqinoATHvBcy1nzCTimeA9M0'
    },
    github: {
        appId: '11932f2b6d05d2a5fa18'
      , appSecret: '2603d1bc663b74d6732500c1e9ad05b0f4013593'
    },
    // ...
};

그런 다음 여러분이 사용하려는 서비스의 로그인을 수행하는 코드를 작성한다. (아래 코드는 페이스북 로그인 예제다)

var conf = require('./config.json');

var usersByFbId = {};

everyauth
  .facebook
    .appId(conf.fb.appId)
    .appSecret(conf.fb.appSecret)
    .findOrCreateUser(function (session, accessToken, accessTokenExtra, fbUserMetadata) {
      return usersByFbId[fbUserMetadata.id] ||
        (usersByFbId[fbUserMetadata.id] = addUser('facebook', fbUserMetadata));
    })
    .redirectPath('/');

everyauth 모듈은 npm을 통해 설치할 수 있다.

npm install everyauth

EveryAuth의 GitHub 사이트: https://github.com/bnoguchi/everyauth.