OAuth 2.0 & OpenID Connect @ Mashup Caravan & Meetup in Kyoto #MA7

Author: Nov Matake
Date:

OpenID Foundation Japan の Evangelist としての初仕事で、Mashup Award #7 の Mashup Caravan & Meetup in Kyoto というイベントで話してきました。

Mashup Award に参加する方々に向けて、20分で OAuth 2.0 と OpenID Connect の概要を話すということで、OAuth 2.0 は draft 10 に絞って、OpenID Connect は技術的な話を一切割愛してます。

このスライドの最後のページにあるリンク集は、翻訳版の仕様とか僕のいままでのスライド一覧とかサンプルコードとかいろいろあるので、Mashup Award で OAuth 使う人は OAuth 1.0 / 2.0 関わらず参考にしていただければうれしいです。

View more presentations from Nov Matake

あと、当日宣伝するの忘れてましたが、Identity 界の重鎮の皆様が虎視眈々と京都でイベントやる機会を狙っておられますんで、ぜひ京都在住の OpenID / OAuth あたりに興味ある方は、OpenID/OAuth in Kyoto の Facebook Page を Like していただければと思います。Fan が100人超える頃には、きっと Identity 界の重鎮が京都に勢揃いするはず!

ps. Mashup Award のオフィシャルブログで、当日の様子をご覧いただけます。

#MA7 Mashup Caravan & Meetup in Kyoto の報告! - Mashup Awards 7 お知らせブログ

Facebook の OAuth Migration で大混乱が起こる前に。

Author: Nov Matake
Date:

2011/10/01、Facebook が認証まわりの API 仕様を変更します。結構大きな変更点の為、Developer としても、FB Canvas アプリもしくは Facebook Connect サイトの1ユーザーとしても、いろいろ混乱を経験する可能性もあるでしょう。 この記事では、大混乱が起こる前に、実際の変更点とDeveloper としてできることをまとめます。

変更点1

Graph API 以前に使われていた “fb_sig” や “fb_sig_session_key” といったパラメーターを使った認証方式が、一切使えなくなります。これにより、古い認証方式を使っている Facebook Canvas アプリおよび「Facebook ID でログイン」対応サイトで、ユーザーの認証ができなくなります。

これらのアプリは Graph API 以降に登場した OAuth 2.0 ベースの認証方式に切り替える必要があります。Canvas アプリなら Signed Request、Facebook Connect サイトであれば Facebook JS SDK の最新版を使うようにしてください。

変更点2

Graph API 以後のOAuth 2.0ベースでの「Facebook ID でログイン」に対応していたサイトでも、JS SDK がセットする Cookie に含まれる Access Token を利用しているサイトでは、Cookie に Access Token が含まれなくなるため、不具合がでる可能性があります。

<fb:login-button> もしくは Facebook JS SDK の FB.login() を使っているサイトはこれに該当するため、サーバーサイドでのライブラリアップデートやコード変更などが必要になるでしょう。

Developer としてできること

日本国内では Graph API 以前の Facebook API を利用していた方は多くないと思いますが、もしいた場合は、お使いのライブラリが既にメンテナンスされていない可能性が高いです。Ruby でも Facebooker というライブラリが古い Facebook API 用に存在しますが、既に1年以上アップデートがありません。そのようなライブラリを使っている場合は、違うライブラリに移行するべきでしょう。DEADLINE が 2011/10/01 なので、いますぐ対応を開始することをお勧めします。

Graph API 以降の認証方式を使っていた場合は、コードの変更が必要かどうかは実装依存のため、ひとまず Facebook Developer Apps から該当アプリ(もちろんテスト環境用のやつね)を選択し、Advanced タブの Migrations の(たぶん)一番下にある「OAuth Migration」を Enabled にしてみてください(スクリーンショット参考)。すると該当アプリでは 2011/10/01 以降と同様の動作を確認できるので、不具合の有無を調べましょう。不具合があれば、ライブラリのアップデートなどが必要になるでしょう。

Developer じゃなかったら?

例えば僕は Ustream にログインするのには Facebook アカウントを使っています。Slideshare もそうです。さすがにこれらのサイトは混乱無く OAuth Migration を終えてくれると信じたいですが、万が一のこともありますよね。

そういう場合、もしそのサイトが「Twitter ID でログイン」とか「OpenID でログイン」に対応していれば、Facebook ID 以外でもログインできるようにしておくことをおすすめします。

まぁ古くから Facebook と連携していて、最近アップデートされてなさそうなサービスの場合は … 人生あきらめも重要です。

OpenID Connect RubyGem リリース

Author: Nov Matake
Date:

OpenID Connect の OP & RP 用の RubyGem をリリースしました。

https://github.com/nov/openid_connect

同時にサンプル OP サイトも公開しました。

サイト: https://openid-connect.herokuapp.com/

ソース: https://github.com/nov/openid_connect_sample

サンプルサイトに Facebook / Google ID でログインすると、まず OAuth Client の登録を要求されます。 OAuth Client を登録すると、以下の様に各 response_type ごとの Authorization Flow を開始するボタンが表示されます。

とりあえず OpenID Connect の UserInfo Endpoint にアクセスしたい場合は、token を選ぶのが一番手っ取り早いでしょう。 Access Token を取得したら、以下のように UserInfo Endpoint にアクセスしてみてください。

https://openid-connect.herokuapp.com/user_info?access_token=YOUR_TOKEN

こんな感じで JSON レスポンスが返ってくるはずです。

仕様の詳細はまだ把握しきれてないけど、とりあえず OpenID TechNight in Kansai にサンプル間に合った! 今後も 12/1 の OpenID Summit in Tokyo に向けて、徐々に機能追加していきます。 pull request 大歓迎♪

Rack::OAuth2 で Token_type=mac をサポート

Author: Nov Matake
Date:

@nov です。

先日 @ritou が「OAuth 2.0 MAC Tokenを使った署名付きリクエストの作り方」という記事を書いてたので、それを参考に Rack::OAuth2 でも MAC サポートを追加しました。

Sample Server はこちらです。

http://rack-oauth2-sample-mac.heroku.com/

https://github.com/nov/rack-oauth2

そして早速 @ritou が Sample Client を作ってくれました。(おかげで Bug が一つ見つかりました。Thanks!)

http://www8322u.sakura.ne.jp/oauth2sample/

ついでに Rack::OAuth2 にも AccessToken モデルを用意しました。

Bearer、MAC ともに使い方はこんな感じです。

https://gist.github.com/933962

そして密かに Legacy なアクセストークン (Facebook および mixi を想定) もサポートしだしました。 Bearer とか MAC とか言っても、誰もそんなの使ってないですからね。。

Legacy の方も、こんな感じで使えるんでは無いでしょうか?(適当w)

https://gist.github.com/933954

これで OAuth2 gem から Rack::OAuth2 に、いつでも乗り換えられますね ;)

Rack::OAuth2 Sample Server

Author: Nov Matake
Date:

@novです。

OAuth 2.0 draft v.13準拠のRack::OAuth2 version 0.3.0のリリースにあわせて、Rails3でSample Appを作りました。

http://rack-oauth2-sample.heroku.com

Facebookアカウントでログインしたら、なんとなくで使い方分かると思います。

Access Token or Authorization Codeを取得した後は、こちらのClient Sampleみたいなのでアクセスしてください。

https://gist.github.com/857277

このアプリはOAuth2 Serverを作る人向けなので、ソースの読み方も。

Authorization Server => app/controllers/authorizations_controller.rb

Token Endpoint => config/routes.rb (Rack App)

Resource Server => config/application.rb (Rack App) & lib/authentication.rb