mixiアプリからのリクエストを検証するフィルタ
mixiアプリからのリクエストに対して署名検証を行うサーブレットフィルタを作りました。Apache Tomcatなどのサーブレットコンテナで使用できます。
ではサーブレット内で署名検証を行っていますが、このフィルタを使うとサーブレット内の実装が不要になります。
必要なもの
最新のバージョンは0.3です。
バージョン | リリース日 | ダウンロード | コメント |
---|---|---|---|
0.1 | 2010/1/10 | oauth-filter-0.1.jar | 最初のリリース。 |
0.2 | 2010/1/10 | oauth-filter-0.2.jar | ValidationEventListenerの仕様を変更しました。 |
0.3 | 2010/1/16 | oauth-filter-0.3.jar | リバースプロキシ対応のValidationEventListenerを追加しました。 ServletRequestからURLを組み立てる際のバグを修正しました。 |
プロジェクトは opensocial-oauth-filter - Signature validation filter for OpenSocial server-side application - Google Project Hosting に移動しました。
使い方
ビルドパスにjarを追加します。Google App Engineプロジェクトの場合はwar/WEB-INF/libに追加します。
そして、web.xmlに以下を記述します。
<webapp> <filter> <filter-name>oauth-filter</filter-name> <filter-class>org.hidetake.util.oauth.OAuthValidationFilter</filter-class> <init-param> <param-name>net.oauth.OAuthAccessor</param-name> <param-value>org.hidetake.util.oauth.provider.MixiOAuthAccessor</param-value> </init-param> <init-param> <param-name>org.hidetake.util.oauth.ValidationEventListener</param-name> <param-value>org.hidetake.util.oauth.listener.ValidationEventLogger</param-value> </init-param> </filter> <filter-mapping> <filter-name>oauth-filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </webapp>
mixiアプリからフィルタを通してアクセスすると、下記のログが出力されます。
2010/01/10 6:37:23 org.hidetake.util.oauth.listener.ValidationEventLogger manipulateURL 情報: OAuth message URL: http://example.com/test 2010/01/10 6:37:23 org.hidetake.util.oauth.listener.ValidationEventLogger onValidationComplete 情報: Validation complete
署名検証に失敗した場合は下記のログが出力されます。
2010/01/10 6:59:35 org.hidetake.util.oauth.listener.ValidationEventLogger manipulateURL 情報: OAuth message URL: http://example.com/test 2010/01/10 6:59:35 org.hidetake.util.oauth.listener.ValidationEventLogger onOAuthException 警告: Validation failed: parameter_absent
カスタマイズ
org.hidetake.util.oauth.ValidationEventListenerを実装すると、以下のイベントで好きな処理を実行できます。
- manipulateURL: 署名検証に渡すURLを変更したいとき
- onValidationComplete: 署名検証に成功したとき
- onOAuthException: 署名検証に失敗したとき
- onURISyntaxException: 署名検証に失敗したとき
web.xmlのValidationEventListenerはカンマ区切りで複数定義できます。
<init-param> <param-name>org.hidetake.util.oauth.ValidationEventListener</param-name> <param-value>org.hidetake.util.oauth.listener.ValidationEventLogger,org.example.TestListener</param-value> </init-param>
web.xmlのOAuthAccessorを変更することで、mixiアプリ以外のOpenSocialコンテナにも対応できます。