90-1.認証手形発行所を複数設定するサンプル(Security3.x系)

概要

Spring Security 3.1系のサンプルです。

Springで用意されているクラスをデフォルトと違う使い方をしたいときにどうすればよいか?

そのサンプルと思っていください。

サンプル全体の説明もお読みください。

目標

まずはゴールを示します。

内容は2.x系の記事と同じです。そちらを参照ください。

また、各クラスの説明も2.x系の記事と同じなので省略しています。

実際のサンプル

Spring設定ファイル(/WEB-INF/spring/applicationContext-security-provs.xml)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:util="http://www.springframework.org/schema/util"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:sec="http://www.springframework.org/schema/security"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util-3.0.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/security

http://www.springframework.org/schema/security/spring-security-3.1.xsd">

<!-- SpringSecurityのメイン設定

-->

<sec:http access-denied-page="/403.jsp" path-type="ant" auto-config="false">

<sec:intercept-url pattern="/error.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>

<sec:intercept-url pattern="/login-provs.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>

<sec:intercept-url pattern="/403.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>

<sec:intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY"/>

<sec:form-login login-page="/login-provs.jsp" default-target-url="/top.jsp"

authentication-failure-url="/login-provs.jsp?error=true"/>

<sec:logout logout-url="/logout" logout-success-url="/login-provs.jsp" invalidate-session="true"/>

<sec:anonymous granted-authority="ROLE_ANONYMOUS"/>

</sec:http>

<!-- 認証処理 -->

<sec:authentication-manager>

<!-- 認証手形発行所1 -->

<sec:authentication-provider>

<sec:user-service id="userService1">

<sec:user name="taro" password="taro" authorities="ROLE_ADMIN"/>

<sec:user name="hanako" password="hanako" authorities="ROLE_READ"/>

</sec:user-service>

</sec:authentication-provider>

<!-- 認証手形発行所2 -->

<sec:authentication-provider>

<sec:user-service id="userService2">

<sec:user name="kanako" password="kanako" authorities="ROLE_ADMIN"/>

</sec:user-service>

</sec:authentication-provider>

</sec:authentication-manager>

</beans>

2.x系と見比べると違いが分かります。

単純に、authentication-managerタグ内に認証手形発行所を複数設定するだけです。

認証手形発行所は複数設定でき、1つ目が失敗すると次の設定へと移っていき、最初にOKだった発行手形を使用することになります。

簡単ですよね。

Created Date: 2013/07/07