PerlのOpenID Connect用ライブラリOIDC::Liteをざっくり紹介

こんばんは, ritouです.

YAPC::Asia Tokyo 2013でOpenID Connectについて話す予定です.
エンジニャー中心のイベントっぽい感じなので, OpenID Connectの概要は前に書いた記事をサマったぐらいにして, 実装よりの話としてOIDC::Liteというライブラリを紹介する予定です.

(前に書いた記事 : 「OpenID Connect」を理解する (1/2):デジタル・アイデンティティ技術最新動向(4) - @IT)

OIDC::Liteとは

OpenID ConnectはOAuth 2.0に認証周りの定義を加えた仕様です.
OIDC::LiteはOAuth 2.0のServer/Client用ライブラリであるOAuth::Lite2を拡張したもので次のような機能を提供します.

RP(Client)向けモジュール
  • ブラウザのリダイレクトでユーザーをOPに送るときの認可用URLを生成
  • Access Token取得/更新を行う際のHTTPリクエスト送信&レスポンスのパース

手でURL組み立てたり, LWP使ってリクエスト送ってレスポンスをパースするよりは便利です.

OP(Server)向けモジュール

OP(Server)側はエンドポイントがいくつかあり特性も異なるため, 下記のような機能を実装/提供しています.
@ITの記事"「OpenID Connect」を理解する"中のシーケンス図

  • Authorization Endpoint : リクエストの検証, 同意/拒否時の認可情報保存とレスポンス生成などのメソッドを提供するので, それをよしなに組み込んでもらう
  • Token Endpoint : 各Grant Typeごとの一連の処理をpsgiアプリケーションとして提供
  • Proteced Resource : Access Tokenを検証して環境変数にユーザーID, Scopeなどをセットする機能をPlackのMiddlewareとして提供

OAuth::Lite2ではToken Endpoint/Protected Resourceのみでしたが, OpenID ConnectではAuthorization Endpointへのリクエスト/レスポンスもわりと重要なので新規作成したという感じです.

利用者がやることは,

  • Access Token, 認可情報などあらかじめ用意されているクラスに対してキャッシュ/DBへの保存や呼び出し機能を実装
  • DataHandlerとして, リクエストパラメータの検証や, 上記のクラスの生成/更新など各エンドポイントで共通して使われる処理を実装

という感じです.

githubリポジトリはこちらです.
GitHub - ritou/p5-oidc-lite: OIDC::Lite - Perl Library of OpenID Connect
Pull Requestをお待ちしています!

...

って文章で長々と説明したところで, 実際に動いてるのを見れないと「Perl OpenID あとで読む」タグつけられて終わりだと思うので, 手元で動作確認できるサンプルOP/RPを作りました.

次回はそのサンプルOP/RPについて説明します.
ではまた!