passport-yj 1.0.5 released

Yahoo!JAPANのOAuth認証(YConnect)を簡単に行うためのnpm packageである passport-yj に pull request が来ていた。 依存モジュールである oauth2 のソースコードの中身が変わっていたのか、install後に実行されるパッチが期待通りに適用されていなかった。 動作確認も問題なかったのでマージ。

あと動作確認したときに、同梱しているサンプルで正常にユーザ情報を表示できていなかったので、それも合わせて修正。 どうやらYConnect の userinfo API のレスポンス仕様が変わっていることに気づいた。

作ってから1年も経つと、ライブラリのバージョンが上がったりして思わぬところで問題が起こるのだな。

passport-yj 1.0.5

Open Hack Day でnode.jsのPassportを使ってYahoo!JAPANと楽天のOAuth認証モジュールを作った

概要

今週の土日に開催された Open Hack Day Japan という Hackathon イベントに参加して来ました。主催は Yahoo! JAPAN です。会社の同期と二人で参加しました。

紹介(Passport)

私たちがつくったものは node.js で OAuth 認証を超簡単に実装できるモジュールです。このモジュールは Passport という OAuth 認証モジュールのラッパーのような形で提供しています。

現在、Facebook, Twitter 等の数多くのウェブサービスのラッパーが提供されており、今回新たに Yahoo!JAPAN と楽天のラッパーを作成したという位置付けです。

成果物

使い方

yconnect を例に使い方を説明したいと思います。 リポジトリの examples/login/app.js で簡単に試せます。

1.アプリケーション登録

Yahoo!デベロッパーネットワーク からアプリケーション登録します。

  • アプリケーションID
  • シークレット

を取得します。ちゃんとコールバックURIも登録します。

2. インストール

リポジトリを git clone して、config.js というファイルを編集します。 先ほど取得したアプリケーションID、シークレット、コールバックURIを書いてください。 そして、npm install で依存モジュールをインストールします。

3. 起動

あとは express を起動するだけです。

これで http://localhost:3000 にアクセスすれば試すことができます。

今後

ただひとつ問題があります。yconnect でアクセストークンを取得するときに、client ID と client secret を Authorization ヘッダに付与して Basic 認証を行なうという仕様になっています。しかしながら、この認証方法は他の OAuth2.0 の実装と比較して特殊で、node の oauth モジュールがこの認証方式に対応していません。

そのため、passport-yj では npm の postinstall の時に oauth モジュールの oauth2.js にパッチを当てるという処置を暫定的に行なっています。

もちろん、このような処置はあまりイケていないので、oauth モジュールの作者に Pull Request を送って、エレガントにこの問題を解決したいと思います(続く…かも)。

2013/02/21 1:17
Pull Request 送りました!
Client Authentication via Basic Authorization, not body by gologo13 · Pull Request #126 · ciaranj/node-oauth


まとめ

  • Yahoo!JAPANと楽天向けの Passport を使った OAuth 認証モジュールの開発
  • GitHub で OSS として公開!
  • npm モジュールとして公開!