【Node.js】OAuth認証でPassportが最強に使いやすい
まず何が最強なのかは対応しているSNSがズラッと!
- Local (username and password)
- BrowserID
- OpenID
- OAuth (OAuth 1.0 and 2.0)
- SAML by Henri Bergius
- WS-Federation + SAML 2.0 by Auth10
- WebID by Baptiste Lafontaine
- 37signals
- 500px by Jeremy Benaim
- AngelList
- AOL
- App.net by Michael Owens
- Bitbucket
- DailyCred by Hank Stoever
- Digg
- Dropbox
- Dwolla
- Evernote
- FamilySearch
- Fitbit
- Flattr by Johan Uhle
- Flickr by Johnny Halife
- Force.com (Salesforce, Database.com) by Joshua Birk
- Foursquare
- FreedomWorks by Carlos Rodriguez
- Geoloqi
- GitHub
- Goodreads
- Google (OpenID)
- Google (OAuth 1.0 and 2.0)
- Gowalla
- HackID by Hackers @ Berkeley
- Intuit (OpenID)
- Intuit (OAuth 1.0)
- Justin.tv
- me2day by JeongHoon Byun
- Meetup
- Netflix
- Odnoklassniki by Alexey Kozlov
- Ohloh
- OpenStreetMap
- PayPal (OpenID)
- PayPal (OAuth 2.0)
- picplz
- Rdio
- Readability
- RunKeeper
- SmugMug
- SoundCloud
- StatusNet by ZooWar
- Steam by Liam Curry
- SUPINFO by Vincent PEYROUSE
- TripIt
- Tumblr
- TxSSC by Texas School Safety Center
- Urlship by Urlship
- Vimeo
- VKontakte by Stepan Stolyarov
- Windows Live
- Withings by Michael Owens
- Yahoo! (OpenID)
- Yahoo! (OAuth 1.0)
- Yammer
- Yandex by Sergey Sergeev
- OpenSSO by Róbert Oroszi
- OpenAM by Alesium
- Drupal by Victor Kareh (for Drupal-powered sites using OAuth Login Provider module)
- HTTP (HTTP Basic and Digest schemes)
- HTTP-Bearer (HTTP Bearer scheme)
- HTTP-OAuth (HTTP OAuth scheme)
- OAuth2-Client-Password (OAuth 2.0 client password)
- Hash (hash parameter) by Yuri Karadzhov
- Anonymous
- Dummy by Development Seed
Node.jsで使えるOAuth認証のmoduleを何個か試した結果、Passportというmoduleが一番わかりやすくて使いやすかったです。今回はそのPassportの紹介をします。
Passport
http://passportjs.org(公式サイト)
https://github.com/jaredhanson/passport(github)
なぜPassportを選んだのか
passportを見つけるまでは下記のOAuthモジュールでOAuth認証を試してました。
- node-oauth => https://github.com/ciaranj/node-oauth
- connect-oauth => https://github.com/ciaranj/connect-auth
ところが何が使いにくいって、サンプルが少ない、わかりにくい、ググっても使い方が出てこない、抑えておきたい、TwitterとFacebookの書き方がそれぞれ違う、ドキュメント見てもそもそも英語苦手σ(゚∀゚;)などなど、http://tech-sketch.jp/2012/03/nodejs-oauth.htmlこのページを見つけるまで諦めてました。また、Passportの公式サイトもちゃんと作ってるのが印象よく取り組んでいる感じがします。
Passportのイントロダクション
passportは、「passsport-なんとか」のモジュールと合わせて使うみたいです。例えば、FacebookのOAuth認証をしたい場合は、passpoertとpassport-facebookを使ってOAuth認証するみたいです。この「passport-なんとか」に相当するのをStrategyと言い、passportに対応しているSNSのStrategyがあれば、Node.jsでOAuth認証を実装できると言えます。
PassportがサポートしているSNS
対応しているStrategy、日本でも有名なSNSはほとんどサポートしています。
Passport / Strategies
https://github.com/jaredhanson/passport#strategies-1
Passportのインストール
$ npm install passport
FacebookのOAuth認証する場合は、
$ npm install passport-facebook
TwitterのOAuth認証する場合は、
$ npm install passport-twitter
それぞれ、passportと、OAuth認証したいSNSのmoduleをインストールして準備完了です。続きは次回にします。
まとめ
以前、node-oauthを使ってTwitterのOAuth認証する方法を紹介しました。このnode-oauthを使って、今度はFacebookの認証にチャレンジしたんですが、僕のスキルがまだまだなので、すぐに作ることができませんでした。SNS毎にApplicationを登録して、callbackのURLが指定されてあったり入力したり、仕様がバラバラなのがnode-oauthで挫折した理由の一つでした。このPassportは、Strategiesを組み合わせてOAuth認証ができ、それぞれのSNSごとにmoduleも分かれてサンプルもあるので、僕にとっては最強のOAuthモジュールだと思います。