こんばんは、ritouです。
最近、OpenID Connectのフローを体験できるサンプルOP/RPが出てきています。
OpenID Connect Sample OP
まずはこちら。FbGraph と Rack::OAuth2 と OAuth.jp の中の人です。
http://oauth.jp/openid-connect-rubygem
OpenID Connect の OP & RP 用の RubyGem をリリースしました。
https://github.com/nov/openid_connect
同時にサンプル OP サイトも公開しました。
このサンプルOPはFacebook/GoogleのClient(RP)であり、そこから取得したデータにOpenID Connectの仕様でアクセスできると。
こちらのサンプルRPから動作確認できます。
https://openid-connect-rp.herokuapp.com/
なかなかおもしろそうですね。
OpenID Connect Sandbox
実は、私もこっそり作ってました。
https://openidconnect.info/
facebookやGoogleも良いですが、
日本のサービスでたくさんの属性情報を提供しているmixiさんのmixi Graph APIを利用したサンプルOPです。
とはいえサンプルOPにそこまで大事なProfileデータを簡単にProxyされてばらまかれてはたまらない!
と思われる開発者の方もいらっしゃると思いますので、mixi Graph APIから取得したデータはProfile登録フォームの補完のみに利用しています。
準拠している仕様については、OpenID Connect Lite Draft 8です。
UserInfo EndpointとCheck Session EndpointをJSONP形式にしてあるので、静的なHTML+JavaScriptでデータ取得まで可能です。
サンプルRPはこちら。
https://openidconnect.info/demorp/
UserInfo Endpointで返す項目は以下の通りです。
- name
- given_name
- family_name
- middle_name
- nickname
- profile
- picture
- website
- gender
- birthday
- phone_number
Liteの仕様と比べると微妙に足りないのですが、これから実装予定です。
これらのサンプルOPを使って開発を楽しもう!
では、これらを使ってRP(Client)の開発を行うために読むべき仕様を確認しておきましょう。
そういえば、OpenID Connectの仕様にはいくつかあるとこの前のOpenID Tech Nightとかで言ってました(あ、すみません、行ってません)。
ここを見ればわかりますね。http://www.sakimura.org/specs/
OAuth 2.0絡みの開発をしたことがある方にはシンプルなLiteの仕様は簡単に理解できる内容かと思います。
Spec obsoleted by openid-connect-basic-1_0
OAuth 2.0のImplicit FlowにCheck Session+UserInfo Endpointって感じです。
フルバージョンのStandardあたりは読みごたえも出てきて実装するにも面白そうですね。
Spec obsoleted by openid-connect-core-1_0
上記のOpenID Connect Sample OPの開発者はOAuth 2.0の仕様を熟知してる人ですので、Liteを通り越してStandardの実装に入っているようです。
みなさんもそろそろOpenID Connect対応のサービス開発を始めませんか?
ではまた!