Table Of Contents

Previous topic

6. TERASOLUNA Global Frameworkによるセキュリティ対策

Next topic

6.2. Spring Securtityチュートリアル

This Page

Caution

本バージョンの内容は既に古くなっています。最新のガイドラインはこちらからご参照ください。

6.1. Spring Security概要

6.1.1. Overview

Spring Securityとは、アプリケーションのセキュリティを担う「認証」、「認可」の2つを
主な機能として提供している。
認証機能とは、なりすましによる不正アクセスに対抗するため、ユーザを識別する機能である。
認可機能とは、認証された(ログイン中の)ユーザの権限に応じて、
システムのリソースに対するアクセス制御を行う機能である。
Spring Securityの概要図を、以下に示す。
Spring Security Overview

Picture - Spring Security Overview

Spring Securityは、認証、認可のプロセスを何層にも連なる
ServletFilter の集まりで実現している。
また、パスワードハッシュ機能や、JSPの認可タグライブラリなども提供している。

6.1.1.1. 認証

認証とは、正当性を確認する行為であり、ネットワークやサーバへ接続する際に
ユーザ名とパスワードの組み合わせを使って、利用ユーザにその権利があるかどうかや、
その人が利用ユーザ本人であるかどうかを確認することである。
Spring Securityでの使用方法は、認証を参照されたい。

6.1.1.2. パスワードハッシュ

平文のパスワードから、ハッシュ関数を用いて計算されたハッシュ値を、元のパスワードと置き換えることである。
Spring Securityでの使用方法は、パスワードハッシュ化を参照されたい。

6.1.1.3. 認可

認可とは、認証された利用者がリソースにアクセスしようとしたとき、
アクセス制御処理でその利用者がそのリソースの使用を許可されていることを調べることである。
Spring Securityでの使用方法は、認可を参照されたい。

6.1.2. How to use

Spring Securityを使用するために、以下の設定を定義する必要がある。

6.1.2.1. pom.xmlの設定

Spring Securityを使用する場合、以下のdependencyを、pom.xmlに追加する必要がある。
<dependency>
    <groupId>org.terasoluna.gfw</groupId>
    <artifactId>terasoluna-gfw-security-core</artifactId>  <!-- (1) -->
</dependency>

<dependency>
    <groupId>org.terasoluna.gfw</groupId>
    <artifactId>terasoluna-gfw-security-web</artifactId>  <!-- (2) -->
</dependency>
項番 説明
(1)
terasoluna-gfw-security-coreは、webに依存しないため、ドメイン層のプロジェクトから使用する場合は、
terasoluna-gfw-security-coreのみをdependencyに追加すること。
(2)
terasoluan-gfw-webはwebに関連する機能を提供する。terasoluna-gfw-security-coreにも依存しているため、
Webプロジェクトは、terasoluna-gfw-security-webのみをdependencyに追加すること。

6.1.2.2. Web.xmlの設定

 <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>  <!-- (1) -->
       classpath*:META-INF/spring/applicationContext.xml
       classpath*:META-INF/spring/spring-security.xml
   </param-value>
 </context-param>
 <listener>
   <listener-class>
     org.springframework.web.context.ContextLoaderListener
   </listener-class>
 </listener>
 <filter>
   <filter-name>springSecurityFilterChain</filter-name>  <!-- (2) -->
   <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>  <!-- (3) -->
 </filter>
 <filter-mapping>
   <filter-name>springSecurityFilterChain</filter-name>
   <url-pattern>/*</url-pattern>  <!-- (4) -->
 </filter-mapping>
項番 説明
(1)
contextConfigLocationには、applicationContext.xmlに加えて、
クラスパスにSpring Security設定ファイルを追加する。本ガイドラインでは、「spring-security.xml」とする。
(2)
filter-nameには、Spring Securityの内部で使用されるBean名、「springSecurityFilterChain」 で定義すること。
(3)
各種機能を有効にするための、Spring Securityのフィルタ設定。
(4)
全てのリクエストに対して設定を有効にする。

6.1.2.3. spring-security.xmlの設定

web.xmlにおいて指定したパスに、spring-security.xmlを配置する。
通常はsrc/main/resources/META-INF/spring/spring-security.xmlに設定する。
以下の例は、雛形のみであるため、詳細な説明は、次章以降を参照されたい。
  • spring-mvc.xml

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:sec="http://www.springframework.org/schema/security"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/security
            http://www.springframework.org/schema/security/spring-security.xsd
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
        <sec:http  use-expressions="true">  <!-- (1) -->
          <!-- omitted -->
        </sec:http>
    </beans>
    

    項番

    説明

    (1)
    use-expressions=”true”と記載することで、アクセス属性のSpring EL式を有効することができる。

    Note

    use-expressions=”true” で有効になるSpring EL式は、以下を参照されたい。

    Expression-Based Access Control