石橋 稔章(いしばし としあき)
 株式会社DTS ネットワーク事業本部所属。Struts/Springをベースとしたフレームワークの開発・保守,プロジェクト支援に携わる。2008年,社内認定制度によりITアーキテクトに認定される。

 前回に引き続き,Spring Securityを取り上げます。

 Spring Securityの守備範囲である認証・認可という機能は,お客様の環境やセキュリティ要件などに影響を受けることが多く,システム全体を考慮する必要があります。そのため,うまくプロジェクトに適応するには,事前検討や設計が重要になってきます。

 本稿では,Spring Securityを業務アプリに適応するに当たって,検討すべき内容を挙げて,その結果を基にサンプルアプリケーションを実装します。業務アプリ構築において,中規模以上(約10人以上)のプロジェクトでは,認証や認可に関する検討や実装は(呼び名は企業によってさまざまだと思いますが)「共通チーム」もしくは「AP基盤チーム」と呼ばれるチーム(以下,共通チーム)が中心となって作業することが多いようです。ここでは,共通チームが行う作業を中心にSpring Securityについて解説していきます。

Spring Securityを適応する際に必要となる検討

 まずは前回のポイントをまとめておきましょう。

  • Spring Securityは,主にbean定義ファイルに設定する
  • 権限が必要な画面を表示しようとすると自動的にログイン画面を表示させることができる
  • JSP内においてカスタムタグで括った部分に対して権限を設定できる

 Spring Securityを適応するに当たって,以下の内容などを検討する必要があります。

検討1. ユーザー情報の管理を何で行うか?
検討2. どのような権限が必要か?
検討3. どの権限のユーザーに対して,どの画面や機能を認可するか?
検討4. URL設計をどうするか?
検討5. セキュリティレベルをどうするか?(SSLを利用するかなど)
検討6. 同一ユーザー(同一ブラウザ)からのアクセスによる自動ログイン機能を提供するか?
検討7. ログイン時にユーザーの情報などを保持しておく必要はあるか?

 それぞれについて以下に説明していきます。

検討1. ユーザー情報の管理を何で行うか?

 お客様の要件により,ユーザー情報の管理をDBやLDAPなどから選択します。一般的にはDBを利用することが多いようです。お客様がすでにLDAPなどを利用している場合は,LDAPを選択する場合もあります。筆者の感覚では,LDAPを利用するのは,比較的大規模な金融系システムで多いように感じます。

検討2. どのような権限が必要か?

 共通チームではどこの機能や画面を誰が利用するのかなどわからない部分が多いので,業務チームと連携しながらどのような権限が必要かを決定します。