spring+shiro+jasig-cas+cxf 單點登入多點登出簡單統一許可權管理平臺一
本文簡單實現在spring框架下對apache shiro與jasig-cas 整合 實現單點登入多點登出統一許可權管理平臺,功能簡單,主要大致講講入門配置。
一、環境:
1、後臺框架:spring3.2+struts2+hibernate4+apache-shiro1.2.1+jasig-cas3.4.1(具體相關依賴包請自行上官網下載);
2、資料庫:mysql5.x;
3、servlet容器:tomcat6;
二、首先CAS伺服器搭建
1、官網下載cassever包,解壓後將modules資料夾裡的 cas-server-webapp-*.war 複製到 tomcat webapps資料夾下;
2、啟動tomcat,輸入相同的使用者名稱和密碼登入,將提示登入成功,這個cas預設的認證方式,重新整理頁面將回到登入頁面;
3、修改cas預設的認證方式: 做web開發,我們一般用資料庫使用者密碼方式認證:
a、修改web-inf下的deployerConfigContext.xml,註釋掉預設的驗證:
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
b、新增獲取認證資訊的資料來源:c、在註釋掉的預設驗證後增加bean,以下表示從該資料來源的t_user表中獲取認證資訊,需要使用加密的自行google<bean id="casdataSource" name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" > <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value><![CDATA[jdbc:mysql://localhost:3306/cas?useUnicode=true&characterEncoding=UTF-8]]></value> </property> <property name="username" > <value>root</value> </property> <property name="password" > <value>root</value> </property> </bean>
4、cas協議,cas預設使用https協議,如果對安全要求不高,可使用http協議,我這裡使用http協議<bean id="QueryDatabaseAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="casdataSource"></property> <property name="sql" value="select USER_PWD from T_USER where USER_NAME=?"></property> </bean>
a、修改deployerConfigContext.xml,
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" p:requireSecure="false"/><!-- require 屬性為true 開啟ssl -->
b、修改spring-configuration下的ticketGrantingTicketCookieGenerator.xml<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />
<!-- 使用http協議: cookieSecure 為false -->
</beans>
以上,完成使用jdb資料來源http協議的簡單cas server端配置,可以啟動tomcat 輸入地址檢視,這時候認證將需要與資料庫裡的使用者資訊匹配還能認證成功!
三、客戶端client1配置
client1 相關其他配置就不詳講了,主要講述spring與shiro與cas的相關配置
1、首先引入客戶端所需jar包:spring相關jar包,shiro jar包,cas client jar包(下載cas client modules 下會有cas-client-core-.jar)
2、web.xml 相關配置
載入相關配置檔案與監聽
<context-param>
<description>相關配置檔案載入</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring*.xml</param-value>
</context-param>
<!-- 相關監聽載入 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>com.areo.kongtan.listener.SessionListenerHandler</listener-class>
</listener>
shiro filter配置,shiro在1.2後開始支援的cas
<filter>
<description>
shrio許可權過濾,DelegatingFilterProxy 作用是自動到 spring 容器查詢名字為 shiroFilter(filter-name)的 bean並把所有 Filter 的操作委託給它
</description>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上完成client端的web配置 下一篇講client端spring整合相關配置