liferay+cas實現(xiàn)單點登錄步驟課件_第1頁
liferay+cas實現(xiàn)單點登錄步驟課件_第2頁
liferay+cas實現(xiàn)單點登錄步驟課件_第3頁
liferay+cas實現(xiàn)單點登錄步驟課件_第4頁
liferay+cas實現(xiàn)單點登錄步驟課件_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Liferay版本:SDK:liferay-plugins-sdk-6.1.1-ce-ga2-20120731132656558綁定tomcat版本:liferay-portal-tomcat-6.1.1-ce-ga2-20120731132656558CAS版本:cas-server-3.5.0-release數(shù)據(jù)庫:MySql 5.1實現(xiàn)步驟:1.部署cas服務器將cas-server解壓,將modules目錄下的cas-server-webapp-3.5.0.war拷貝到liferay綁定的tomcat的webapps目錄下,并改名為cas.war。此時在地址欄輸入http:/local

2、host:8080/cas/login,就進入到CAS的登錄界面,只要用戶名和密碼相同就進入驗證通過界面。如下圖:此時,CAS 還不能作為有效的單點登錄服務器。紅色部分的提示當前登錄的 CAS 鏈接是不安全的,建議使用 https 協(xié)議,這里將使用 http 協(xié)議對 CAS server 進行配置。2.取消 CAS 服務器 HTTPS 認證方式 2.1 在liferay綁定的tomcatwebapps目錄下直接用壓縮軟件打開cas.war,修改casWEB-INFspring-configuration ticketGrantingTicketCookieGenerator.xml 配置文件,

3、將 p:cookieSecure="true” 改為 p:cookieSecure="false" ,改完后如下:2.2 修改 casWEB-INFspring-configurationwarnCookieGenerator.xml 配置文件,將 p:cookieSecure="true” 改為 p:cookieSecure="false" ,改完后如下:2.3 修改 casWEB-INFdeployerConfigContext.xml: 找到"HttpBasedServiceCrede ntialsAuthentica

4、tionHandler" bean (117行左右)添加:p:requireSecure="false", 改完后如下:這樣,在 cas 服務器運行的時候,就可以只使用 http 請求了。3.集成方式說明CAS 作為單點登錄的認證服務器,在收到頁面?zhèn)鬟f的登錄請求以后,將請求轉(zhuǎn)發(fā)到 CAS 服務器后端進行驗證,在未經(jīng)配置的時候, 只要輸入的密碼和用戶名稱一致,則驗證通過。在實際的使用中當然這樣是不可行的。在此我們要對用戶輸入的用戶名稱和密碼做校驗。 如果存在該用戶,并且密碼正確則說明驗證通過。這里就有了兩個問題:第一,CAS 需要連接到存儲用戶信息的數(shù)據(jù)庫才能讀取到

5、用戶信息。 第二,驗證密碼的加密算法必須和數(shù)據(jù)庫存儲密碼的加密方式一致。基于此文采用的方式,對于第一個問題, 我們將直接使用 CAS 服務器連接到 Liferay 安裝的數(shù)據(jù)庫,直接讀取 Liferay 門戶的用戶信息。 對于第二個問題,我們將直接調(diào)用 Liferay 中的加密算法對用戶輸入的密碼進行加密,然后與數(shù)據(jù)庫中的加密密碼進行比對。 這樣就可以保證 CAS 服務器在進行用戶認證時,可以和 Liferay 服務器使用的用戶保持一致。4. CAS 配置4.1 配置 dataSource在casWEB-INFdeployerConfigContext.xml中添加dataSource bea

6、n:<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql:/localhost:3306/portaldb? useUni

7、code=true&amp;characterEncoding=UTF-8&amp;useFastDateParsing=false" /> <property name="username" value="username" /> <property name="password" value="password" /> </bean>如下圖:修改時注意:數(shù)據(jù)庫選liferay的數(shù)據(jù)庫,dataSource bean要在<beans>

8、</beans>標簽中間4.2 配置=cas server.prefix=http:/localhost:8080/cas database.hibernate.dialect=org.hibernate.dialect.MySQLDialect5. 加密方式修改5.1說明CAS 默認使用了一套簡單的密碼驗證,在 deployerConfigContext.xml 配置文件中,為認證管理接口 authenticationManager 配置了屬性 authenticationHandlers 處理器, 其中:<bean />

9、 就是默認的認證處理邏輯,我們可以在下載到的壓縮包找到他的源代碼:cas-server-coresrcmainjavaorgjasigcasauthenticationhandlersupportSimpleTestUsernamePasswordAuthenticationHandler.java, public boolean authenticateUsernamePasswordInternal (final UsernamePasswordCredentials credentials) final String username = credentials.getUsername(

10、); final String password = credentials.getPassword(); if (StringUtils.hasText(username) && StringUtils.hasText(password) && username.equals(getPasswordEncoder().encode(password) log.debug("User " + username + " was successfully authenticated."); return true; log.d

11、ebug("User " + username + " failed authentication"); return false; 默認的用戶名和密碼認證方式是只要校驗用戶名和密碼相同,則認證通過。因此我們要對這種認證方式進行修改, 改為用戶名和密碼都采用 Liferay 中用戶的校驗方式。將默認的認證類注釋掉,配置提供的 jdbc 認證。5.2 配置自定義 JDBC 認證方式<!- <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUserna

12、mePasswordAuthenticationHandler"/> -> <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="sql" value="select password_ from user_ where screenName=?"/> <property name="dataSource" ref="da

13、taSource"/> <property name="passwordEncoder" ref="mypasswordEncoder"/> </bean>屬性 sql 配置為查詢 Liferay 數(shù)據(jù)庫表 user_,字段 password_ 和 screenName 其中 passwordEncoder 是對清單 7 中設(shè)置的實際加密器類的引用。 為了使用 Liferay 的密碼加密方式,我們需要配置一個我們自己開發(fā)的密碼加密類。5.3 指定具體加密類和加密算法<bean id="mypassw

14、ordEncoder" class="com.test.portal.cas.MyPasswordEncoder"> <constructor-arg value="SHA"/> </bean>在此我們采用和 Liferay 一致的默認加密算法“SHA”,在調(diào)用 Liferay 提供的加密算法時, 我們需要將 Liferay 的幾個 jar 包引入到我們的 cas 工程中,自定義的加密算法也很簡單, 只需要調(diào)用 jar 包中的加密工具類提供的加密算法即可,同時自定義的類需要繼承 PasswordEncoder 接口

15、。5.4 自定義加密算法類package com.test.portal.cas;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import javax.validation.constraints.NotNull; import org.jasig.cas.authentication.handler.PasswordEncoder; import org.springframework.u

16、til.StringUtils;import sun.misc.BASE64Encoder;public final class MyPasswordEncoder implements PasswordEncoder private static final char HEX_DIGITS = '0','1','2','3','4','5','6','7','8','9','a','b','c&

17、#39;,'d','e','f'NotNullprivate final String encodingAlgorithm;private String characterEncoding;public MyPasswordEncoder(final String encodingAlgorithm) this.encodingAlgorithm = encodingAlgorithm;public String encode(final String password) if (password = null) return null;try

18、MessageDigest messageDigest = MessageDigest.getInstance(this.encodingAlgorithm);if (StringUtils.hasText(this.characterEncoding) messageDigest.update(password.getBytes(this.characterEncoding); else messageDigest.update(password.getBytes();final byte digest = messageDigest.digest();return getFormatted

19、Text(digest); catch (final NoSuchAlgorithmException e) throw new SecurityException(e); catch (final UnsupportedEncodingException e) throw new RuntimeException(e);/* * Takes the raw bytes from the digest and formats them correct. * * param bytes the raw bytes from the digest. * return the formatted b

20、ytes. */private String getFormattedText(byte bytes) final StringBuilder buf = new StringBuilder(bytes.length * 2);sun.misc.BASE64Encoder e = new BASE64Encoder();final String buf2 = e.encode(bytes);for (int j = 0; j < bytes.length; j+) buf.append(HEX_DIGITS(bytesj >> 4) & 0x0f);buf.appen

21、d(HEX_DIGITSbytesj & 0x0f);System.out.println("Final: " + buf2);System.out.println(encodingAlgorithm + ": " + buf);return buf2.toString();public final void setCharacterEncoding(final String characterEncoding) this.characterEncoding = characterEncoding;將自定義的加密算法打成jar包,添加到cas.war/WEB-INF/lib目錄下,另外還需要將cas-server-3.5.0modules下的cas-server-support-jdbc-3.5.0.jar和liferay-portal-6.1.1-ce-ga2tomc

溫馨提示

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

評論

0/150

提交評論