2012年11月10日土曜日

OpenID4Java付属のサンプルアプリを使用し、Yahoo!JapanとOpenID認証する

OpenID4Javaでは、OpenID2.0認証用のJavaライブラリを提供する。
このライブラリに付属するRPサンプリアプリケーションを使用し、Yahoo!Japan(OP)と認証してみる。

おおざっぱなシステム構成およびシーケンスは以下になる。
■前提条件
・以下のURLにアクセスし、OpenIDを予め発行しておく。
http://openid.yahoo.com/

・RPの構築環境に、JavaおよびApache marvenをインストールしていること。


■設定手順
①以下のサイトからOpenID4Java媒体をダウンロードする(openid4java-full-0.9.5.593.tar.gzを使用)。ダウンロードした媒体を任意のディレクトリに解凍する。

http://code.google.com/p/openid4java/

②コマンドプロンプトを起動し、以下のmavernコマンドを実行して、RPサンプリアプリケーションのwarファイルを作成する。

--------------------------------------------------------------------------------

d:\>cd d:\openid4java-full-0.9.6.662\samples\simple-openid
d:\openid4java-full-0.9.5.593\samples\simple-openid>d:\apache-maven-3.0.4\bin\mvn war:war
--------------------------------------------------------------------------------

③RPサンプリアプリケーションはJetty上で動かす。mavernコマンドを実行してJettyを起動する。

--------------------------------------------------------------------------------
d:\openid4java-full-0.9.5.593\samples\simple-openid>d:\apache-maven-3.0.4\bin\mvn jetty:run
--------------------------------------------------------------------------------

以下にアクセスし、正常にアクセスできることを確認する。
http://localhost:8080/simple-openid/


④RP画面のOpenID欄に、Yahooで発行したOpenIDを入力し、「送信」ボタンを押下する。押下後、Yahoo(OP)に対して、OPのディスカバリとアソシエーションのプロトコルが実行される。

--------------------------------------------------------------------------------

[INFO] Discovery - Starting discovery on URL identifier: https://me.yahoo.co.jp/a/*********
[INFO] YadisResolver - Yadis discovered 1 endpoints from: https://me.yahoo.co.jp/a/********
[INFO] Discovery - Discovered 1 OpenID endpoints.  ★OP検索完了!
[INFO] ConsumerManager - Trying to associate with https://open.login.yahooapis.jp/openid/op/auth attempts left: 4
[WARN] HttpMethodBase - Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
[INFO] ConsumerManager - Associated with https://open.login.yahooapis.jp/openid/op/auth handle: *******  ★アソシエーション完了!
[INFO] ConsumerManager - Creating authentication request for OP-endpoint: https://open.login.yahooap is.jp/openid/op/auth claimedID: https://me.yahoo.co.jp/a/****    OP-specific ID: https://me.yahoo.co.jp/a/******* ★認証要求の作成完了!
--------------------------------------------------------------------------------


⑤RPからOPに認証要求をPOSTするタイミングで、画面に「Continue」ボタンが表示される。「continue」ボタンを押下する。


⑥Yahoo!Japan側のログイン画面が表示されるため、ID/PWを入力する。

⑦認証に成功すれば、OpenIDをRPに通知してよいかを求める同意画面が表示される。「同意する」ボタンを押下する。


⑧OPからRPへ認証応答が通知され、RP側でレスポンスの内容を検証する。検証OKであれば、以下のように画面が表示される。



--------------------------------------------------------------------------------

[INFO] ConsumerManager - Verifying authentication response...
[INFO] ConsumerManager - Received positive auth response.
[INFO] ConsumerManager - Found association: ****-- verifying signature locally...
[INFO] ConsumerManager - Verification succeeded for: https://me.yahoo.co.jp/a/*********
--------------------------------------------------------------------------------

感想:Yahoo!Japanとすごく簡単につながった!!!

0 件のコメント: