国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
CAS單點登錄應用

CAS單點登錄應用

一. 基礎(chǔ)知識點
1.CAS Server 是一套基于 Java 實現(xiàn)的服務(wù),該服務(wù)以一個 Java Web Application 單獨部署
在與 servlet2.3 兼容的 Web 服務(wù)器上,另外,由于 Client 與 CAS Server 之間的交互采用
Https 協(xié)議,因此部署 CAS Server 的服務(wù)器還需要支持 SSL 協(xié)議。

2.HTTPS的全稱是Secure Hypertext Transfer Protocol(安全超文本傳輸協(xié)議),
是在http協(xié)議基礎(chǔ)上增加了使用SSL加密傳送信息的協(xié)議。它是一個安全通信通道,它基于HTTP開發(fā),
用于在客戶計算機和服務(wù)器之間交換信息。它使用安全套接字層(SSL)進行信息交換。
HTTPS和HTTP的區(qū)別:
https協(xié)議需要到ca申請證書,一般免費證書很少,需要交費。
http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議
http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443。
http的連接很簡單,是無狀態(tài)的.
HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸、身份認證的網(wǎng)絡(luò)協(xié)議 要比http協(xié)議安全.

3.如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 協(xié)議,其配置過程和配置方法可以
參考 Tomcat 的相關(guān)文檔。不過在生成證書的過程中,會有需要用到主機名的地方,CAS 建議
不要使用 IP 地址,而要使用機器名或域名。
配置本地虛擬域名:修改C:\Windows\System32\drivers\etc\hosts,
添加內(nèi)容如下:127.0.0.1 sso.wsria.com
這樣在訪問sso.wsria.com的時候其實是訪問的127.0.0.1也就是本機.

4.證書是單點登錄認證系統(tǒng)中很重要的一把鑰匙,客戶端于服務(wù)器的交互安全靠的就是證書;
以下演示是用JDK自帶的keytool工具生成證書;如果以后真正在產(chǎn)品環(huán)境中使用肯定要去
證書提供商去購買,證書認證一般都是由VeriSign認證,
中文官方網(wǎng)站:http://www.verisign.com/cn/

二.證書應用

1.用JDK自帶的keytool工具生成證書:
命令:keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakey

Keytool使用舉例:
命令:keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore
-dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"
-keypass changeit -storepass -validity 180
參數(shù)說明:
-genkey表示要創(chuàng)建一個新的密鑰
-dname表示密鑰的Distinguished Names,
CN=commonName (域名:建議使用配置的域名,也可使用localhost)
OU=organizationUnit
O=organizationName
L=localityName
S=stateName
C=country
Distinguished Names表明了密鑰的發(fā)行者身份
-keyalg使用加密的算法,這里是RSA
-alias密鑰的別名
-keypass私有密鑰的密碼,這里設(shè)置為changeit
-keystore 密鑰保存在D:盤目錄下的mykeystore文件中
-storepass 存取密碼,這里設(shè)置為changeit,這個密碼提供系統(tǒng)從mykeystore文件中將信息取出
-validity該密鑰的有效期為 180天 (默認為90天)

2.導出證書
命令:D:\keys>keytool -export -file d:/keys/wsria.crt -alias wsria -keystore d:/keys/wsriakey
輸入密碼為上面生成證書時輸入的密碼(keystore)

3.為客戶端的JVM導入證書
命令:keytool -import -keystore "%JAVA_HOME%/jre/lib/security/cacerts"
-file D:/keys/wsria.crt -alias wsria

導入證書時出現(xiàn)java.io.IOException: Keystore was tampered with, or password was incorrect
異常的解決辦法:
輸入保護密碼,默認的就是changeit。

4.應用證書到Web服務(wù)器-Tomcat
啟用Web服務(wù)器(Tomcat)的SSL,也就是HTTPS加密協(xié)議,
打開tomcat目錄的conf/server.xml文件,開啟83和87行的注釋代碼,
并設(shè)置keystoreFile、keystorePass修改結(jié)果如下:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"               maxThreads="150" scheme="https" secure="true"               clientAuth="false" sslProtocol="TLS"                keystoreFile="D:/keys/wsriakey"              keystorePass="keystore"/>

參數(shù)說明:
keystoreFile:在第一步創(chuàng)建的key存放位置.
keystorePass:創(chuàng)建證書時的密碼.

Tomcat的SSL啟用完成后,輸入地址:https://sso.wsria.com:8443/訪問。

三. 部署CAS服務(wù)器
1.CAS服務(wù)端下載:http://www.jasig.org/cas/download


2.下載完成后將cas-server-3.4.3.1.zip解壓,
解壓cas-server-3.4.3/modules/cas-server-webapp-3.4.3.1.war,改名為cas,
然后復制cas目錄到你的tomcat/webapp目錄下.


3.現(xiàn)在可以訪問CAS應用了,當然要使用HTTPS加密協(xié)議訪問,
https://sso.wsria.com:8443/cas/login,打開了CAS服務(wù)器的頁面輸入admin/admin點擊登錄。

4. 后臺數(shù)據(jù)庫身份驗證
以上只是簡單的身份驗證,下面介紹CAS服務(wù)器如何配置數(shù)據(jù)庫信息進行身份驗證。
(1)首先打開tomcat/webapp/cas/WEB-INF/deployerConfigContext.xml文件,配置的地方如下:
注釋掉:SimpleTestUsernamePasswordAuthenticationHandler這個驗證Handler類,配置如下代碼:

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="dataSource" /> <property name="sql" value="select password from t_admin_user where login_name=?"/> <property name="passwordEncoder" ref="MD5PasswordEncoder"/></bean>

在文件的末尾之前加入如下代碼:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">   <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>   <property name="url"><value>jdbc:mysql:///wsriademo</value></property>   <property name="username"><value>root</value></property>   <property name="password"><value>root</value></property></bean> <bean id="MD5PasswordEncoder"    class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">    <constructor-arg index="0">   <value>MD5</value>  </constructor-arg></bean>

(2)復制cas-server-3.4.3.1\modules\cas-server-support-jdbc-3.4.3.1.jar
和mysql驅(qū)動jar包到tomcat/webapp/cas/WEB-INF/lib目錄。

配置解釋:
sql語句就是查詢哪一張表,本例根據(jù)t_admin_user表的login_name字段查詢密碼,
CAS會匹配用戶輸入的密碼,如果匹配則通過;下面是t_admin_user的表結(jié)構(gòu):
CREATE TABLE t_admin_user (
id BIGINT NOT NULL AUTO_INCREMENT,
email VARCHAR(255),
login_name VARCHAR(255) NOT NULL UNIQUE,
name VARCHAR(255),
password VARCHAR(255),
PRIMARY KEY (id)
) ENGINE=InnoDB;
passwordEncoder:處理密碼的加密,根據(jù)數(shù)據(jù)庫保存的是明碼還是加密過的進行選擇配置。
cas內(nèi)置了MD5的 功能所以只需要配置一下就可以了.實際應用中可使用自定義的加密算法,
實現(xiàn)方式也比較簡單,創(chuàng)建 一個類繼承org.jasig.cas.authentication.handler.PasswordEncoder,
然后在encode方法中加密用戶輸入的密碼然后返回即可。


四. 配置CAS客戶端
1. 下載cas-client,地址:http://www.ja-sig.org/downloads/cas-clients/,
在modules文件夾中有需要的jar包,將cas-client-core-3.2.1.jar包拷貝到客戶端應用中。
或使用以下maven配置:

<dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core</artifactId> <version>3.1.12</version></dependency>

2.在web.xml文件中進行如下配置:

<!-- 用于單點退出,該過濾器用于實現(xiàn)單點登出功能,可選配置-->	<listener>	<listener-class>		org.jasig.cas.client.session.SingleSignOutHttpSessionListener	</listener-class></listener><!-- 該過濾器用于實現(xiàn)單點登出功能,可選配置。 --><filter>	<filter-name>CAS Single Sign Out Filter</filter-name>	<filter-class>		org.jasig.cas.client.session.SingleSignOutFilter	</filter-class></filter><filter-mapping>	<filter-name>CAS Single Sign Out Filter</filter-name>	<url-pattern>/*</url-pattern></filter-mapping><!-- 該過濾器負責用戶的認證工作,必須啟用它 --><filter>	<filter-name>CASFilter</filter-name>	<filter-class>		org.jasig.cas.client.authentication.AuthenticationFilter	</filter-class>	<init-param>		<param-name>casServerLoginUrl</param-name>		<param-value>			https://localhost:8443/cas/login		</param-value>		<!--這里的server是服務(wù)端的IP-->	</init-param>	<init-param>		<param-name>serverName</param-name>		<param-value>http://localhost:8080</param-value>	</init-param></filter><filter-mapping>	<filter-name>CASFilter</filter-name>	<url-pattern>/*</url-pattern></filter-mapping><!-- 該過濾器負責對Ticket的校驗工作,必須啟用它 --><filter>	<filter-name>CAS Validation Filter</filter-name>	<filter-class>		org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter	</filter-class>	<init-param>		<param-name>casServerUrlPrefix</param-name>		<param-value>https://localhost:8443/cas</param-value>	</init-param>	<init-param>		<param-name>serverName</param-name>		<param-value>http://localhost:8080</param-value>	</init-param></filter>	<filter-mapping>	<filter-name>CAS Validation Filter</filter-name>	<url-pattern>/*</url-pattern></filter-mapping><!--	該過濾器負責實現(xiàn)HttpServletRequest請求的包裹,比如允許開發(fā)者	通過HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置。--><filter>	<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>	<filter-class>		org.jasig.cas.client.util.HttpServletRequestWrapperFilter	</filter-class></filter><filter-mapping>	<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>	<url-pattern>/*</url-pattern></filter-mapping><!--	該過濾器使得開發(fā)者可以通過org.jasig.cas.client.util.AssertionHolder	來獲取用戶的登錄名,	比如AssertionHolder.getAssertion().getPrincipal().getName()。--><filter>	<filter-name>CAS Assertion Thread Local Filter</filter-name>	<filter-class>		org.jasig.cas.client.util.AssertionThreadLocalFilter	</filter-class></filter><filter-mapping>	<filter-name>CAS Assertion Thread Local Filter</filter-name>	<url-pattern>/*</url-pattern></filter-mapping><!-- 自動根據(jù)單點登錄的結(jié)果設(shè)置本系統(tǒng)的用戶信息 --><filter>	<display-name>AutoSetUserAdapterFilter</display-name>	<filter-name>AutoSetUserAdapterFilter</filter-name>	<filter-class>		com.cas.client.filter.AutoSetUserAdapterFilter	</filter-class></filter><filter-mapping>	<filter-name>AutoSetUserAdapterFilter</filter-name>	<url-pattern>/*</url-pattern></filter-mapping>

需注意二點:
(1)服務(wù)端攔截地址:https://localhost:8443/cas/,如果證書中指定的域名為sso.wsria.com,
則為https://sso.wsria.com:8443/cas/,本事例的域名地址指定為localhost。
(2)客戶端應用地址:http://localhost:8080,該地址為客戶端應用訪問的地址。
過濾器認證和Ticket認證類似。

3.AutoSetUserAdapterFilter類設(shè)置登錄用戶session信息代碼如下:

public class AutoSetUserAdapterFilter implements Filter{	public void destroy() {	}	/**	 * 過濾邏輯:首先判斷單點登錄的賬戶是否已經(jīng)存在本系統(tǒng)中,        	 * 如果不存在使用用戶查詢接口查詢出用戶對象并設(shè)置在Session中   	 */	public void doFilter(ServletRequest request, ServletResponse response,			FilterChain chain) throws IOException, ServletException {		   HttpServletRequest httpRequest = (HttpServletRequest) request;   	       // _const_cas_assertion_是CAS中存放登錄用戶名的session標志                     Object object = httpRequest.getSession().getAttribute("_const_cas_assertion_");            if (object != null) {                     	          Assertion assertion = (Assertion) object;   	          String loginName = assertion.getPrincipal().getName();   	          System.out.println("登錄名為:"+loginName);	          // 接下來在本業(yè)務(wù)系統(tǒng)中根據(jù)用戶名獲取用戶對象,判斷session中是否存在,	          // 如果不存在,則獲取用戶對象保存到session中,否則直接獲取用戶對象。	                    }           chain.doFilter(request, response); 	}	public void init(FilterConfig filterConfig) throws ServletException {	}}

五. 美化CAS服務(wù)器界面


可定制開發(fā)自己CAS服務(wù)端頁面,復制 cas\WEB-INF\view\jsp\default\ui的一些JSP文件,進行修改替換就行了。
例如:
登錄界面:casLoginView.jsp
登錄成功:casGenericSuccess.jsp
登出界面:casLogoutView.jsp

  • 查看圖片附件
http://www.linuxso.com/architecture/19446.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
CAS 與 Spring Security 3.1整合配置詳解
sso單點登錄
cas 配置與自定義開發(fā)
CAS干單點登陸(SSO)
CAS單點登錄文檔
用Yale CAS Server 來實現(xiàn)單點登陸(SSO)
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服