高級(jí)篇cas單點(diǎn)登錄_第1頁(yè)
高級(jí)篇cas單點(diǎn)登錄_第2頁(yè)
高級(jí)篇cas單點(diǎn)登錄_第3頁(yè)
高級(jí)篇cas單點(diǎn)登錄_第4頁(yè)
高級(jí)篇cas單點(diǎn)登錄_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、北京傳智播客教育 單點(diǎn)登錄專題講師:張孝祥北京傳智播客教育 Tip1:用Tomcat配置虛擬主機(jī) 瀏覽器訪問WEB資源的過程分析虛擬主機(jī)及實(shí)現(xiàn)原理 Tomcat體系結(jié)構(gòu)基于主機(jī)名的虛擬主機(jī) 北京傳智播客教育 瀏覽器訪問WEB資源的過程分析URL格式: http:/主機(jī)名(或IP地址):端口號(hào)/目錄名稱/資源名稱舉例: 思考: 中的 是代表一臺(tái)計(jì)算機(jī)的地址,還是代表一個(gè)網(wǎng)站的地址呢?網(wǎng)站的地址與計(jì)算機(jī)的地址有什么關(guān)系和區(qū)別呢?一個(gè)計(jì)算機(jī)地址上對(duì)應(yīng)多個(gè)網(wǎng)站地址,它們是一對(duì)多的關(guān)系!動(dòng)手體驗(yàn):用telnet程序分析瀏覽器訪問WEB資源的過程 多學(xué)兩招:打開telnet程序的本地回顯功能 北京傳智播客

2、教育 虛擬主機(jī)及實(shí)現(xiàn)原理 目的:在一臺(tái)計(jì)算機(jī)上創(chuàng)建多個(gè)WEB站點(diǎn),并為每個(gè)WEB站點(diǎn)設(shè)置不同的主目錄和虛擬子目錄,每個(gè)WEB站點(diǎn)作為各自獨(dú)立的網(wǎng)站分配給不同的公司或部門。 好處:多個(gè)公司或部門的網(wǎng)站就可以共用同一臺(tái)計(jì)算機(jī),而用戶感覺每個(gè)公司和部門都有各自獨(dú)立的網(wǎng)站。多個(gè)沒有實(shí)力在Internet上架設(shè)自己專用服務(wù)器的中小公司可以聯(lián)合租用一臺(tái)WEB服務(wù)器,對(duì)外提供各自的WEB服務(wù)而互不影響。 原理:WEB服務(wù)器上的每個(gè)WEB站點(diǎn)必須設(shè)置有不同的標(biāo)識(shí)信息WEB瀏覽器發(fā)出的連接和請(qǐng)求信息中包含WEB站點(diǎn)的標(biāo)識(shí)信息WEB站點(diǎn)的標(biāo)識(shí)信息:IP地址、端口號(hào)、主機(jī)名北京傳智播客教育 Tomcat體系結(jié)構(gòu) 北

3、京傳智播客教育 基于主機(jī)名的虛擬主機(jī)配置 請(qǐng)求消息2:GET / HTTP/1.1Host: server.xml文件設(shè)置請(qǐng)求消息1:GET / HTTP/1.1Host: 北京傳智播客教育 基于主機(jī)名的虛擬主機(jī)網(wǎng)絡(luò)環(huán)境 動(dòng)手體驗(yàn):使用Tomcat建立基于主機(jī)名稱的虛擬主機(jī) WEB瀏覽器要訪問基于主機(jī)名的虛擬主機(jī)時(shí),在訪問URL中必須采用主機(jī)名,而不能采用IP地址。 在整個(gè)網(wǎng)絡(luò)系統(tǒng)中建立主機(jī)名與IP地址的映射關(guān)系,即必須將主機(jī)名添加到名稱解析系統(tǒng)。使用客戶機(jī)本地的Hosts 文件,例如,c:winntSystem32DriversEtcHosts使用DNS(Domain Name System

4、,域名系統(tǒng))服務(wù)器 北京傳智播客教育 Tip2:為站點(diǎn)增加自動(dòng)登錄和單點(diǎn)登錄功能自動(dòng)登錄的實(shí)現(xiàn)原理Cookie技術(shù)回顧與分析自動(dòng)登陸的幾種編碼技術(shù)自動(dòng)登錄處理流程的活動(dòng)圖自動(dòng)登錄的編碼實(shí)現(xiàn)增加自動(dòng)登錄的安全性北京傳智播客教育 自動(dòng)登錄功能與實(shí)現(xiàn)原理需求分析用戶一旦使用瀏覽器登錄某個(gè)站點(diǎn)和關(guān)閉瀏覽器后,在以后兩個(gè)星期內(nèi),只要用戶啟動(dòng)該瀏覽器訪問該站點(diǎn)的任何頁(yè)面時(shí),都將自動(dòng)完成登錄。很顯然,該功能要求瀏覽器一旦登錄以后的兩個(gè)星期內(nèi),瀏覽器所在客戶機(jī)上必須保留有用戶帳號(hào)信息,并且,瀏覽器在以后設(shè)定的時(shí)間期限內(nèi)訪問該站點(diǎn)時(shí),必須自動(dòng)向服務(wù)器提交保留在客戶機(jī)上的用戶帳號(hào)信息。實(shí)現(xiàn)原理想一想:用什么樣的W

5、eb技術(shù)可以實(shí)現(xiàn)這樣的功能呢?北京傳智播客教育 Cookie的傳送過程示意圖 第一次訪問不存在Server1的Cookie寫入Server1的Cookie第一次響應(yīng)Set-Cookie2: name=value第一次訪問請(qǐng)求WEBServer1WEBServer2瀏覽器Server1的CookieServer2的CookieCookie存儲(chǔ)區(qū)后續(xù)訪問存在Server1的Cookie后續(xù)訪問請(qǐng)求Cookie: name=value北京傳智播客教育 Set-Cookie2響應(yīng)頭字段Set-Cookie2頭字段用于指定WEB服務(wù)器向客戶端傳送的Cookie內(nèi)容,但是按照Netscape規(guī)范實(shí)現(xiàn)Coo

6、kie功能的WEB服務(wù)器,使用的是Set-Cookie頭字段,兩者的語(yǔ)法和作用類似。 Set-Cookie2頭字段中設(shè)置的cookie內(nèi)容是具有一定格式的字符串,它必須以Cookie的名稱和設(shè)置值開頭,格式為“名稱=值”,后面可以加上0個(gè)或多個(gè)以分號(hào)(;)和空格分隔的其它可選屬性,屬性格式一般為“屬性名=值”。 舉例:Set-Cookie2: user=it315; Version=1; Path=/除了“名稱=值”對(duì)必須位于最前面外,其它的可選屬性的先后順序可以任意。Cookie的名稱只能由普通的英文ASCII字符組成,瀏覽器不用關(guān)心和理解Cookie的值部分的意義和格式,只要WEB服務(wù)器能

7、理解值部分的意義就行。大多數(shù)現(xiàn)有的WEB服務(wù)器都是采用某種編碼方式將值部分的內(nèi)容編碼成可打印的ASCII字符,RFC 2965規(guī)范中沒有明確限定編碼方式。北京傳智播客教育 Set-Cookie2頭字段中的屬性 Comment=value Discard Domain=value 例如:Set-Cookie2: user=it315; Version=1; Path=/; Max-Age=value Path=value Port=portlist Secure Version=value 北京傳智播客教育 自動(dòng)登錄的幾種編碼技術(shù)模板方法設(shè)計(jì)模式所有的Servlet或者Struts框架的Acti

8、on采用模板方法設(shè)計(jì)模式進(jìn)行設(shè)計(jì),且要求所有的請(qǐng)求只能指向Servlet或者Struts框架的Action自定義標(biāo)簽在所有的JSP頁(yè)面中都要加入自動(dòng)登錄的標(biāo)簽,且要求客戶端的所有請(qǐng)求都只能指向JSP頁(yè)面。過濾器(Filter)可以對(duì)指向各種資源的訪問請(qǐng)求進(jìn)行攔截,并附加實(shí)現(xiàn)自動(dòng)登錄功能,不要求對(duì)現(xiàn)有的Servlet和JSP進(jìn)行任何改造,對(duì)以后編寫的任何Servlet和JSP也沒有特殊要求。過濾器(Filter)應(yīng)該成為自動(dòng)登錄功能的首選編程技術(shù)。北京傳智播客教育 自動(dòng)登錄處理流程的數(shù)據(jù)狀態(tài)與協(xié)作圖北京傳智播客教育 自動(dòng)登錄處理流程的活動(dòng)圖北京傳智播客教育 增加自動(dòng)登錄的安全性保存在瀏覽器所在客

9、戶機(jī)上的信息必須盡可能的安全,即使被人竊取,也無(wú)法識(shí)別其中的信息。Cookie值采用如下算法來(lái)生成:username + : + expiryTime + : + Md5Hex(username + : + expiryTime + : + password + : + key)生成和解析Cookie值的算法是配對(duì)的,最好是放在同一個(gè)類中編寫。北京傳智播客教育 Tip3:?jiǎn)吸c(diǎn)登錄單點(diǎn)登錄的概念與功能單點(diǎn)登錄的兩種解決方案將自動(dòng)登錄程序擴(kuò)展成同域內(nèi)的單點(diǎn)登錄系統(tǒng)CAS服務(wù)器的工作原理使用CAS服務(wù)器配置單點(diǎn)登錄系統(tǒng)北京傳智播客教育 單點(diǎn)登錄的概念與解決方案單點(diǎn)登錄的概念與功能單點(diǎn)登錄的英文簡(jiǎn)稱為

10、SSO(single sign on),單點(diǎn)登錄功能使得用戶只要登錄了其中一個(gè)系統(tǒng),就可以訪問其他相關(guān)系統(tǒng),而不用進(jìn)行身份驗(yàn)證登錄。即用戶只要登陸系統(tǒng)一次,該用戶的身份信息就可以被系統(tǒng)中的多個(gè)主機(jī)上的應(yīng)用所識(shí)別,不需要在訪問每個(gè)應(yīng)用時(shí)再分別進(jìn)行登陸。單點(diǎn)登錄的兩種解決方案在某個(gè)域范圍內(nèi)的全局Cookie例如:Set-Cookie2: user=it315; Version=1; Path=/; 通過專用的代理服務(wù)器進(jìn)行登錄,如CAS和OpenSSO。北京傳智播客教育 將自動(dòng)登錄程序擴(kuò)展成單點(diǎn)登錄系統(tǒng)建立兩個(gè)具有相同域名的主機(jī)名和配置相應(yīng)的虛擬主機(jī)。設(shè)置自動(dòng)登錄程序的Cookie的domain屬

11、性:Set-Cookie2:name=xxxxx; path=/; 將Web應(yīng)用發(fā)布到兩個(gè)虛擬主機(jī)下,進(jìn)行測(cè)試訪問。注銷Cookie時(shí),也必須按照生成該Cookie時(shí)的情況設(shè)置domain屬性,瀏覽器才會(huì)真正注銷這個(gè)Cookie。問題:一個(gè)站點(diǎn)注銷或重新登陸后,另外一個(gè)站點(diǎn)的信息不能隨之改變。browserServer1Server2Server3 北京傳智播客教育 通過代理服務(wù)器實(shí)現(xiàn)的SSOSSO ServerWeb Server1Browser HTTPSHTTPSAuthenticationFilterTicketValidationFilter第(8)和第(9)步操作全部由其完成。We

12、b Server2北京傳智播客教育 配置簡(jiǎn)單的CAS服務(wù)器配置三個(gè)站點(diǎn) 、 、 將下載的casclient demo分別發(fā)布成 、 的根目錄,將cas server中的webapp.war包發(fā)布成 的根目錄。需要將cas-client-3.1.10-release.zip中的cas-client-core-3.1.10.jar和commons-logging-1.1.jar加到casclient demo的lib目錄中。修改casclient demo的web.xml文件,根據(jù)當(dāng)前的配置環(huán)境設(shè)置那些Filter的參數(shù)屬性。注意:cas客戶端請(qǐng)求cas服務(wù)器驗(yàn)證票據(jù)的地址暫時(shí)不要采用https協(xié)

13、議。測(cè)試訪問,先看兩個(gè)站點(diǎn)都需要登錄,在第一個(gè)站點(diǎn)登錄后,再次訪問第二個(gè)站點(diǎn),不用登錄了。剛開始CAS沒有起作用,因?yàn)閏as 服務(wù)器校驗(yàn)用戶名后送出的TGC(Ticket Granting Cookie)標(biāo)記了secure,所以,必須用https協(xié)議訪問cas服務(wù)器時(shí),才能回送cookie,這就要求casServerLoginUrl的地址必須是https協(xié)議。這個(gè)TGC的作用:當(dāng)瀏覽器訪問第二個(gè)站點(diǎn)時(shí),第二個(gè)站點(diǎn)要求瀏覽器去找CAS服務(wù)器,此時(shí)瀏覽器就會(huì)回送先前收到的TGC,CAS服務(wù)器收到這個(gè)TGC后就不需要瀏覽器再登陸了。只要修改spring-configurationticketGran

14、tingTicketCookieGenerator.xml文件,將其中p:cookieSecure=true屬性值改為false,這樣casServerLoginUrl就可以不用https協(xié)議了。北京傳智播客教育 Single Sign out 即可完成CAS Server的注銷,但這只是注銷了CAS Server,原來(lái)登錄進(jìn)的站點(diǎn)信息存入到了Cookie,所以,仍然可以用。參看cas client幫助文檔,其中有一個(gè)sing sing out的說(shuō)明,配置一個(gè)Filter和一個(gè)Listener就可以了,建議讀下其中的源碼。在demo webapp中已經(jīng)配置好了上面的filter和Listene

15、r,只是暫時(shí)注釋掉了。打開注釋,注銷掉cas服務(wù)器,可以看到Cas Client也隨之注銷了??碈as服務(wù)器幫助文檔中的關(guān)于single sign out部分,進(jìn)而知道要看ArgumentExtractor類的代碼,再看到具體注銷通知由org.jasig.cas.authentication.principal.AbstractWebApplicationService的logOutOfService方法生成發(fā)送,在eclipse中按Ctrl+H搜索但是誰(shuí)來(lái)調(diào)用的這個(gè)方法,發(fā)現(xiàn)是TicketGrantingTicketImpl的expire方法。北京傳智播客教育 必須了解的Assertion類

16、查看Assertion及AssertionImpl的源碼,了解其中的方法。查看AttributePrincipal及AttributePrincipalImpl的源碼,了解其中的方法。通過eclipse查找AssertionImpl類的構(gòu)造方法被引用的地方,從而了解Assertion對(duì)象是如何被組裝的。CAS服務(wù)器驗(yàn)證完票據(jù)后,給CAS客戶端返回的用戶信息就是由 CredentialsToPrincipalResolver轉(zhuǎn)換后的結(jié)果。如果自己要定制客戶端獲得的Assertion對(duì)象的AttributePrincipal屬性對(duì)象返回的信息,例如,修改principalId的內(nèi)容和在attrit

17、ues集合中添加條目,這需要對(duì)服務(wù)器端的deployerConfigContext.xml文件進(jìn)行配置,使用自己寫的CredentialsToPrincipalResolver Bean。北京傳智播客教育 利用CAS整合多個(gè)系統(tǒng)的問題與方案問題與需求:A和B兩個(gè)完全獨(dú)立的系統(tǒng)分別有各自完全獨(dú)立的用戶管理,現(xiàn)在需要將這兩個(gè)系統(tǒng)整合,不管是A系統(tǒng)中的帳戶,還是B系統(tǒng)中的帳戶,都只需要登錄一次,就可以訪問A和B系統(tǒng)的服務(wù)了。如果一個(gè)人同時(shí)具有A和B系統(tǒng)的帳戶,當(dāng)他以A系統(tǒng)的帳戶登錄后,訪問B系統(tǒng)時(shí),B系統(tǒng)自動(dòng)將它轉(zhuǎn)換成本系統(tǒng)帳戶再進(jìn)行訪問操作,反之亦然。A和B系統(tǒng)整合后,不再單獨(dú)提供新用戶注冊(cè)功能。

18、新用戶注冊(cè)統(tǒng)一到中央認(rèn)證管理系統(tǒng)中,新注冊(cè)的用戶可以同時(shí)訪問A和B系統(tǒng),例如,sina和sohu等網(wǎng)站的通行證注冊(cè)就是這么回事。解決步驟:利用CAS提供統(tǒng)一的登錄入口,還需要定制登錄界面,讓用戶可以選擇使用那個(gè)系統(tǒng)的帳戶進(jìn)行登錄。由于登錄界面發(fā)生改變,請(qǐng)求參數(shù)增加了賬號(hào)所在的系統(tǒng)名稱,所以,登錄憑據(jù)也不能繼續(xù)使用UsernamePasswordCredentials,而是要自定義一個(gè)包含了系統(tǒng)名稱的Credentials,并進(jìn)行配置讓CAS服務(wù)器啟用這個(gè)自定義的Credentials。編寫對(duì)用戶Credenticals憑據(jù)進(jìn)行驗(yàn)證的AuthenticationHandler,這就需要在CAS中

19、央數(shù)據(jù)庫(kù)增加一個(gè)表,記錄各個(gè)systemCode和原系統(tǒng)的名稱、數(shù)據(jù)庫(kù)地址,數(shù)據(jù)庫(kù)接賬號(hào)等信息的映射關(guān)系,以便AuthenticationHandler能夠連接原來(lái)的數(shù)據(jù)庫(kù)查詢用戶的賬號(hào)信息。編寫自己定義的CredentialsToPrincipalResolver(修改前面講解過的那個(gè)的即可),它通過Attribute方式向CAS客戶端傳遞賬號(hào)所在的系統(tǒng)和賬號(hào)Id。對(duì)原來(lái)的A系統(tǒng)和B系統(tǒng)進(jìn)行改造,讓系統(tǒng)可以跟蹤是哪個(gè)系統(tǒng)的哪個(gè)用戶進(jìn)行的操作。實(shí)現(xiàn)A和B系統(tǒng)帳戶自動(dòng)關(guān)聯(lián)的功能。實(shí)現(xiàn)系統(tǒng)整合后的通行證帳戶功能。北京傳智播客教育 CAS服務(wù)器在Portal系統(tǒng)中的代理應(yīng)用Cas20ProxyRec

20、eivingTicketValidationFilter可以用于代理,這時(shí)候要設(shè)置proxyCallbackUrl和proxyReceptorUrl參數(shù)。proxyReceptorUrl必須滿足requestUri.endsWith(),所以,不能包含webapp path部分。 proxyCallbackUrl為proxyReceptorUrl的絕對(duì)地址,CAS服務(wù)將調(diào)用這個(gè)地址,攔截此調(diào)用的Filter-Mapping應(yīng)排在其他Filter之前。Cas20ProxyReceivingTicketValidationFilter還可以用于被代理的應(yīng)用,這時(shí)候要設(shè)置acceptAnyProxy

21、參數(shù),校驗(yàn)器就不是Cas20ServiceTicketValidator,而是Cas20ProxyTicketValidator,校驗(yàn)地址的后綴就不是serviceValidate,而是“proxyValidate”。代理程序經(jīng)上面第一個(gè)的Filter攔截后,得到的Assertion中已經(jīng)有了PGT,它接著調(diào)用assertion.getPrincipal.getProxyTicketFor(目標(biāo)服務(wù)的路徑)獲得要調(diào)用的目標(biāo)服務(wù)的一個(gè)PT,再將這個(gè)PT附加在要訪問的目標(biāo)服務(wù)路徑后對(duì)目標(biāo)進(jìn)行訪問;目標(biāo)服務(wù)程序經(jīng)上面第二個(gè)Filter攔截并驗(yàn)證ticket后也將得到一個(gè)Assertion。Brows

22、erSSO ServerWeb Server2Web Server1(Portal)(Proxy)Web Server3北京傳智播客教育 Tip4:為Tomcat配置Https協(xié)議功能一些基本的安全知識(shí)Keytool工具的使用SSL/TLS的工作原理Tomcat的體系結(jié)構(gòu)北京傳智播客教育 一些基本的安全知識(shí)數(shù)字摘要與MD5/SHA算法作用:數(shù)據(jù)的完整性校驗(yàn)對(duì)稱加密與非對(duì)稱加密對(duì)稱加密速度快,但加密和解密的鑰匙必須相同,只有通信雙方才能知道鑰匙非對(duì)稱加密速度慢,加密和解密的鑰匙不相同,某一個(gè)人持有私鑰,任何人都可以知道公鑰問題:想讓任何陌生人都可以與你進(jìn)行加密數(shù)據(jù)的交換,且加密速度要快,如何實(shí)現(xiàn)

23、呢?數(shù)字簽名功能:必須能夠驗(yàn)證內(nèi)容沒有修改,必須能夠驗(yàn)證內(nèi)容確實(shí)是被發(fā)送方簽署方案:發(fā)送方的公鑰可以驗(yàn)證發(fā)送方簽名的真實(shí)性,數(shù)字摘要可以驗(yàn)證內(nèi)容沒有修改數(shù)字證書問題:如何確認(rèn)對(duì)方提供的公鑰的真實(shí)性。方案:每個(gè)人或機(jī)構(gòu)的公鑰和私鑰由一些權(quán)威的機(jī)構(gòu)產(chǎn)生!北京傳智播客教育 數(shù)字摘要的基本應(yīng)用:數(shù)據(jù)的完整性校驗(yàn)北京傳智播客教育 Keytool工具的使用KeyStore的介紹存儲(chǔ)多個(gè)私鑰和其附帶的數(shù)字證書存儲(chǔ)信任的第三方數(shù)字證書KeyStore中的每一個(gè)私鑰和信任的第三方數(shù)字證書用一個(gè)alias進(jìn)行標(biāo)識(shí)Keytool的應(yīng)用產(chǎn)生私鑰與導(dǎo)入第三方證書導(dǎo)出證書與生成CSR(Certificate Signing Request)文件 修改KeyStore與其中存儲(chǔ)項(xiàng)的密碼打印KeyStore與其中的存儲(chǔ)項(xiàng)信息刪除KeyStore中的存儲(chǔ)項(xiàng)北京傳智播客教育 SSL/TLS的工作原理基本概念SSL(Secure Socket Layer)是netscape公司設(shè)計(jì)的主要用于web的安全傳輸協(xié)議。這種協(xié)議在WEB上獲得了廣泛的應(yīng)用。IETF( )將SSL作了標(biāo)準(zhǔn)化,即RFC2246,并將其稱為TLS(Transport Layer Security),從技術(shù)上講,TLS1.0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論