読書会(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 まとめ
                                                                  以上
[ 戻る ]