日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

cas java单点登录_java单点登录系统CAS的简单使用

發(fā)布時(shí)間:2025/3/12 windows 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cas java单点登录_java单点登录系统CAS的简单使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://blog.csdn.net/yunye114105/article/details/7997041

參考:

http://blog.csdn.net/diyagea/article/details/50638737

(配置SSL協(xié)議)http://www.cnblogs.com/notDog/p/5264666.html

背景

有幾個(gè)相對(duì)獨(dú)立的java的web應(yīng)用系統(tǒng), 各自有自己的登陸驗(yàn)證功能,用戶在使用不同的系統(tǒng)的時(shí)候,需要登陸不同的系統(tǒng)。現(xiàn)在需要提供一個(gè)統(tǒng)一的登陸/登出界面, 而不修改各個(gè)系統(tǒng)原來的登陸驗(yàn)證機(jī)制。于是采用單點(diǎn)登錄系統(tǒng)CAS。

使用步驟

要使用單點(diǎn)登錄,需要部署CAS系統(tǒng), CAS服務(wù)端可以直接部署在tomcat下運(yùn)行, 對(duì)于CAS服務(wù)端來說,所有要集成單點(diǎn)登錄的web應(yīng)用都是它的一個(gè)客戶端, CAS有客戶端jar包, 客戶端web應(yīng)用需要引入CAS客戶端的jar包,這樣CAS系統(tǒng)的服務(wù)端和客戶端web應(yīng)用程序端才能通信。

客戶端web應(yīng)用程序的通過配置web.xml,添加CAS需要的各種過濾器,來實(shí)現(xiàn)和CAS服務(wù)器通信, 用戶信息驗(yàn)證工作在CAS服務(wù)端統(tǒng)一完成, 驗(yàn)證通過后,客戶端web應(yīng)用程序只需要補(bǔ)全自己的Session信息即可。

各個(gè)客戶端web應(yīng)用程序需要使用一個(gè)公用的用戶表。

第一步 部署CAS系統(tǒng)服務(wù)端

1.從官網(wǎng)http://developer.jasig.org/cas/下載CAS Server, 將cas-server-webapp-3.4.12.war解壓, 可以看到是一個(gè)標(biāo)準(zhǔn)的java的web應(yīng)用, 可以直接部署到tomcat的webapps目錄下的,我這里假設(shè)部署的路徑是{tomcat_home}/webapps/cas。

2. CAS默認(rèn)需要tomcat配置SSL協(xié)議,使用https協(xié)議通信的。 由于項(xiàng)目是企事業(yè)單位內(nèi)部的系統(tǒng),不需要這么高的安全級(jí)別, 可以簡化操作,不走SSL協(xié)議。修改下配置文件\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml, 如下, 將默認(rèn)的true改成false即可。

p:cookieSecure="false"

p:cookieMaxAge="-1"

p:cookieName="CASTGC"

p:cookiePath="/cas"?/>

3.配置登錄的驗(yàn)證邏輯, 修改配置文件cas\WEB-INF\deployerConfigContext.xml。在authenticationHandlers中配置驗(yàn)證方式,我這里配置數(shù)據(jù)庫查詢語句來實(shí)現(xiàn)用戶名和密碼的驗(yàn)證。

p:httpClient-ref="httpClient"?/>

?-->

密碼加密方法我這里使用MD5, 配置passwordEncoder的bean

在配置一個(gè)名稱為dataSource的數(shù)據(jù)源

數(shù)據(jù)源的配置根據(jù)自己的實(shí)際情況來配置, 需要的jar如果lib下面沒有,自己復(fù)制進(jìn)去, 不然數(shù)據(jù)源連不上報(bào)錯(cuò)。

4. 現(xiàn)在服務(wù)端就配置好了, 如果需要定制登錄/登出頁面的話(實(shí)際項(xiàng)目基本上都需要修改), 修改cas\WEB-INF\view\jsp\default\ui\下面的casLoginView.jsp和casLogoutView.jsp就可以了

第二步 客戶端web應(yīng)用程序集成CAS

1. 從官網(wǎng) http://developer.jasig.org/cas-clients/?下載CAS Client, 將客戶端的jar,如cas-client-core-3.2.1.jar引入到web應(yīng)用程序的classpath中

2 .配置web.xml文件, 主要是添加過濾器攔截通信, 下面的實(shí)例代碼, 假設(shè)web應(yīng)用程序的端口是8080

CAS?Single?Sign?Out?Filter

org.jasig.cas.client.session.SingleSignOutFilter

CAS?Single?Sign?Out?Filter

/*

org.jasig.cas.client.session.SingleSignOutHttpSessionListener

CASFilter

org.jasig.cas.client.authentication.AuthenticationFilter

casServerLoginUrl

http://CAS服務(wù)端所在服務(wù)器IP:8080/cas/login

serverName

http://具體web應(yīng)用程序所在服務(wù)器IP:8080

CASFilter

/*

CAS?Validation?Filter

org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter

casServerUrlPrefix

http://CAS服務(wù)端所在服務(wù)器IP:8080/cas

serverName

http://具體web應(yīng)用程序所在服務(wù)器IP:8080

renew

false

gateway

false

CAS?Validation?Filter

/*

CAS?HttpServletRequest?Wrapper?Filter

org.jasig.cas.client.util.HttpServletRequestWrapperFilter

CAS?HttpServletRequest?Wrapper?Filter

/*

CAS?Assertion?Thread?Local?Filter

org.jasig.cas.client.util.AssertionThreadLocalFilter

CAS?Assertion?Thread?Local?Filter

/*

CasForInvokeContextFilter

com.cm.demo.filter.CasForInvokeContextFilter

appId

a5ea611bbff7474a81753697a1714fb0

CasForInvokeContextFilter

/*

4. 注意上步配置文件中,過濾器CasForInvokeContextFilter的實(shí)現(xiàn)是需要在具體的應(yīng)用中實(shí)現(xiàn)的,他的目的是, CAS服務(wù)端登錄驗(yàn)證成功后,會(huì)將登錄用戶的用戶名攜帶回來, 這時(shí)客戶端web應(yīng)用程序需要根據(jù)用戶名從數(shù)據(jù)庫用戶表中查詢到用戶的Id等信息, 并填充到Session中, 這樣,客戶端應(yīng)用程序原來的驗(yàn)證邏輯就不會(huì)出問題了, 因?yàn)槲覀円话愣际峭ㄟ^驗(yàn)證session中是否含有當(dāng)前登錄的用戶的ID來進(jìn)行登錄驗(yàn)證的。

下面是CasForInvokeContextFilter的一個(gè)簡單實(shí)現(xiàn)。

/**

*?該過濾器用戶從CAS認(rèn)證服務(wù)器中獲取登錄用戶用戶名,并填充必要的Session.

*?@author?jiarong_cheng

*?@created?2012-7-12

*/

public?class?CasForInvokeContextFilter?implements?Filter?{

@Override

public?void?destroy()?{

}

@Override

public?void?doFilter(ServletRequest?request,?ServletResponse?response,

FilterChain?chain)?throws?IOException,?ServletException?{

HttpSession?session?=?((HttpServletRequest)?request).getSession();

//如果session中沒有用戶信息,則填充用戶信息

if?(session.getAttribute("j_userId")?==?null)?{

//從Cas服務(wù)器獲取登錄賬戶的用戶名

Assertion?assertion?=?AssertionHolder.getAssertion();

String?userName?=?assertion.getPrincipal().getName();

try?{

//根據(jù)單點(diǎn)登錄的賬戶的用戶名,從數(shù)據(jù)庫用戶表查找用戶信息,?填充到session中

User?user?=?UserDao.getUserByName(userName);

session.setAttribute("username",?userName);

session.setAttribute("userId",?user.getId());

}?catch?(Exception?e)?{

e.printStackTrace();

}

}

chain.doFilter(request,?response);

}

@Override

public?void?init(FilterConfig?config)?throws?ServletException?{

}

}

到此,就完成了, 當(dāng)你訪問具體應(yīng)用的網(wǎng)址, 如http://具體應(yīng)用IP: 8080/ ,就會(huì)跳轉(zhuǎn)到CAS服務(wù)器的登陸頁面:?http://CAS服務(wù)器IP: 8080/ ?進(jìn)行登錄驗(yàn)證, 驗(yàn)證通過后, 又會(huì)跳轉(zhuǎn)回應(yīng)用的網(wǎng)址。

第三步 單點(diǎn)登出

這個(gè)比較簡單, 只要在系統(tǒng)的登出事件中, 將URL訪問地址指向CAS服務(wù)登出的servlet, 就可以了。

http://CAS服務(wù)器IP:8080/cas/logout

總結(jié)

以上是生活随笔為你收集整理的cas java单点登录_java单点登录系统CAS的简单使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。