OpenID Connectを体験できるデモ環境の紹介

こんばんは、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 サイトも公開しました。

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

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

このサンプルOPはFacebook/GoogleのClient(RP)であり、そこから取得したデータにOpenID Connectの仕様でアクセスできると。

こちらのサンプルRPから動作確認できます。
https://openid-connect-rp.herokuapp.com/
なかなかおもしろそうですね。

OpenID Connect Sandbox

実は、私もこっそり作ってました。
https://openidconnect.info/

facebookGoogleも良いですが、
日本のサービスでたくさんの属性情報を提供している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
  • email
  • 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対応のサービス開発を始めませんか?
ではまた!