読書会(JavaによるRESTfulシステム構築)第5回議事録
[ 戻る ]
Java読書会「JavaによるRESTfulシステム構築」を読む回(第5回)議事録
日時: 2011/9/24(土) 10:00-16:30
場所: 高津市民会館 第4会議室
出席者(敬称略): 高橋(智)、小棚木、今井、松永、吉本、村山、高橋(徹)、岩室(記)
------------------------------------------------------------------------------
■12章 JAX-RSのセキュア化
12.1 認証
12.1.1 ベーシック認証
12.1.2 ダイジェスト認証
・nonce(ナンス): パスワードを単にハッシュ化するとなりすましされる可能性
があるため、パスワード等に結合してハッシュ化するためのランダムな文字
列。(参考: http://www.wdic.org/w/WDIC/%E3%83%8A%E3%83%B3%E3%82%B9 )
・今でもベーシック認証を使うか? ダイジェスト認証でよいのではないか?
Apacheなら手間はほとんど変わらない。
→ 慣れてるから使う
→ ぐぐると先に出てくるから使う
→ Realmの管理がちょっと違う
・Webサービスでは何を使う?
→ パブリックなサービスは OAuth を使っていることが多い。
→ この本では OAuth は出てきていない。
12.1.3 クライアント証明書による認証
12.2 認可
12.3 JAX-RSにおける認証と認可
・デプロイメント記述子(web.xml)のサンプルのインデントがよく見るとおかしい。
・「/foo/*」の場合、「/foo」はマッチするか? また、「/hoobar」はマッチするか?
それとも単に「/foo/」の間違い?
・ユーザIDとroleとのマッピングはどこで指定するか?
→ サーブレットコンテナもしくは作成したアプリケーションに依存。
・Webアプリケーションでは、認証は自前でフォーム認証することが多い。
12.3.1 暗号化の実施
12.3.2 認可に関するアノテーション
12.3.3 プログラミングによるセキュリティの強化
・isSecureはどのような意味か? httpsであることか、認証済みであることか?
→ 後でisUserInRoleしているから認証済みなのでは?
→ このサンプル、isSecureが成立しないときはログに残らなくていいのか?
・p.176にFORM認証があるのにp.172にはFORMが書いていない。
とは言え、WebサービスではFORMは使わないのでは?
12.4 まとめ
■13章 RESTful Javaクライアント
13.1 java.net.URL
・何故POSTでリダイレクト追跡をOFFにしているのか?
→ Locationを追跡したいわけではないから。
・何故デフォルトをONなのか?
→ URLクラスはWebサービス用ではないから。
13.1.1 キャッシング
13.1.2 認証
・「"username」は「"username"」の間違いと思われる。
・各操作は何処で行っているのか? (pp.182-183)
→ 以下なのではないか?
1) CA局でgenerate
2) CA局でexport
3) クライアントでimport
(Windowsだからプロンプトのパス名区切りが「\」なのか?)
13.1.3 利点と欠点
13.2 Apache HttpClient
13.2.1 認証
・サンプルコード「new UsernamePasswordCredetials("bill", "geheim");」の
末尾の「;」は不要のはず。
13.2.2 利点と欠点
13.3 RESTEasyクライアントフレームワーク
13.3.1 認証
・13.2.1のサンプルコードと同じ問題あり。
・サンプルコードに誤植やバグが多いように思う。
・例外が適切にハンドリングされていないのは何故か?
→ この例のtryの部分で説明したいことはfinallyでストリームを閉じること
だけであって、例外をどのように処理するかは主題ではないからではないか。
13.3.2 利点と欠点
13.4 RESTRasyクライアントプロキシ
13.4.1 利点と欠点
1.3.5 まとめ
■14章 JAX-RS実装
14.1 Jersey
14.1.1 組み込み可能なJersey
14.1.2 クライアントAPI
・記載のURLは既に使えない。(oracle.comに移ったわけでもなさそう)
14.1.3 WADL
14.1.4 データフォーマット
14.1.5 MVC (モデル、ビュー、コントローラ)
・何故(Scalaの)Liftが(^^;
14.1.6 コンポーネント統合
・参照実装のわりにはいろいろなフレームワークに対応している。
14.2 Apache CXF
14.2.1 リクエストパラメータをbeanに集約する
・動的にするとシンプルになる。
14.2.2 特定の型へのリクエストパラメータ変換
・「public」と「XmlToBean」の間に「class」が抜けている。
14.2.3 サブリソースの静的な解決
14.2.4 クライアントAPI
14.2.5 JAX-RSアノテーションなしでのサービスのサポート
14.2.6 リクエストとレスポンスの横取り
14.2.7 ファーストクラス市民としてのXSLTとXPathの使用を奨励
14.2.8 保留呼び出しのサポート
14.2.9 マルチパートフォーマットのサポート
14.2.10 分散OSGi RIとの統合
14.2.11 WADLのサポート
14.2.12 コンポーネント統合
・各フレームワークともWADLをサポートしているが、出力されたWADLをサポー
トするツールはあるか? (流行ってなさそう)
→ 一般レベルでのWebサービスでは必要だとは思われていないのでは。
14.3 JBoss RESTEasy
14.3.1 組み込みコンテナ
14.3.2 非同期HTTP
・p.208のパッケージ名「rest easy」は「resteasy」の間違い。
14.3.3 インターセプターフレームワーク
14.3.4 クライアント「ブラウザ」キャッシュ
14.3.5 サーバーサイドキャッシング
14.3.6 GZIP圧縮
14.3.7 データフォーマット
・「XOP」「Fastinfoset」は聞いたことがない。
14.3.8 コンポーネント統合
14.4 まとめ
以上
[ 戻る ]