読書会(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 まとめ

                                                                  以上


[ 戻る ]