反饋已提交

網絡繁忙

CAS單點登入

一、 概述

  1. CAS版本:3.5.2。

  2. 用戶需要實現通過 CAS 認證登錄數據決策系統,本文將介紹如何將 FineReport 與 CAS 單點登入結合。

二、配置 SSL 證書實現 HTTPS 訪問

1
簡介。
  1. 配置證書是單點登入認證系統中很重要的一項工作,客戶端與伺服器的互動安全靠的就是證書;本教程由於是演示所以就自己用 JDK 自帶的 keytool 工具生成證書;如果以後真正在產品環境中使用,需要透過證書提供商進行購買,證書認證一般都是由 VeriSign、GlobalSign 等國際公認的 CA 機構認證。

  2. 下面介紹在 Windows 系統中一種利用自帶工具生成 SSL 證書及在 Tomcat 伺服器中配置的方法。

2
建立證書。
  1. 首先需要安裝 JRE,然後執行 cmd 或者 Windows Powershell,右鍵以管理員身份執行,按確定啟動命令提示视元。輸入cd D:\java\jdk1.8.0_271\jre\bin進入 JRE 的 bin 目錄下,執行命令:keytool -genkey -alias tomcat-servers -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore

  2. 注:該 JRE 是配置 Tomcat 時所用的 JRE。

  3. 若需要遷移到行業標準格式 PKCS12,執行命令:keytool -importkeystore -srckeystore server.keystore -destkeystore server.keystore -deststoretype pkcs12。

  4. 輸入金鑰庫口令:changeit。

    注:您的名字與姓氏,這裡不能輸入 IP 地址,只能輸入域名。

    注:您的名字與姓氏,本例輸入的是 roxy,其實這個域名是不存在的,但是這裡為了演示所以用了這個虛擬域名,所以需要在 hosts 檔案裡對映一個虛擬域名,設定方式如下圖所示:

  5. 這樣在訪問 roxy 的時候其實是訪問的是 127.0.0.1,也就是本機。

1.png

3
匯出證書。
  1. 匯出證書,執行命令:keytool -export -alias tomcat-servers -storepass changeit -file server.cer -keystore server.keystore。

4
將證書匯入到 JDK 證書信任庫。
  1. 執行命令:keytool -import -trustcacerts -alias servers -file server.cer -keystore cacerts -storepass changeit。

  2. 系統詢問是否信任此證書,回答 y ,如下圖所示。

2.png

5
將證書移動至 Tomcat 安裝目錄下。
  1. 進入%JRE_HOME%\bin目錄下,將新生成的 server.keystore,server.cer,cacerts 複製到 Tomcat 安裝目錄%TOMCAT_HOME%下,如下圖所示。

  2. 把%JRE_HOME%\bin目錄下 cacerts 檔案覆蓋到 JRE 的 security 目錄下%JRE_HOME%\lib\security,如下圖所示。

6
應用證書到Web伺服器。
  1. 配置 server.xml 檔案,以管理員身份執行文字編輯器,打开%TOMCAT_HOME%\conf\server.xml。查詢 SSL 配置新增證書的地址keystoreFile以及密碼keystorePass,如下圖所示:

  2. 注:地址可以填絕對路徑或者在 Tomcat 中的相對路徑。

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"  

     maxThreads="150" SSLEnabled="true" keystoreFile="D:\apache-tomcat-8.5.57\server.keystore" keystorePass="changeit"/>。

  3. 重啟 Tomcat ,訪問https://roxy:8443/,點選【繼續前往roxy】,如下圖所示。

  4. 如果看到圖下面的介面,說明 Tomcat 的 SSL 配置成功。

企业微信截图_16316264944217.png

4.png

7
注意事項。
  1. 如果配置完後啟動不了 Tomcat 服務,則說明將證書應用到Web伺服器的配置未成功,仔細檢查是否按上述步驟配置。

  2. 若訪問連結提示【此網站的安全證書存在問題】,是由於使用 Java 生成的證書使用 https 訪問時會提示證書有風險,可以申請一個阿里云云盾的免費證書。

三、安裝配置 CAS

1
下載CAS。
  1. 下載 CAS :CAS 。

2
安裝 CAS。
  1. 解壓下載的 cas-server-3.5.2-release.zip,在 %CAS%\modules資料夾中找到cas-server-webapp-3.5.2.war ,將其重新命名為 cas.war,如下圖所示。

  2. 將 cas.war 複製到%TOMCAT_HOME%\webapps資料夾下,啟動 Tomcat,就會看到Tomcat 自動將cas.war 解壓到 cas 資料夾中。如下圖所示。

4
測試CAS。
  1. 在預設配置下,CAS 認為只要使用者名稱密碼相同即登入成功。

    注:可以透過修改配置以實現基於資料庫的身份驗證,目前先以預設配置進行測試。

  2. 在瀏覽器中輸入網址https://localhost:8443/cas/login,也可以使用上一節設定的虛擬域名:https://roxy:8443/cas/login,如果 IE 有證書警告資訊,直接點選【繼續瀏覽此網站(不推薦)】,访问界面如下圖所示。

  3. 此處隨便輸一個使用者名稱和密碼,如果使用者名稱與密碼相同,則系統顯示登入成功,如下圖所示。

  4. 使用者可以在瀏覽器中輸入網址https://localhost:8443/cas/logout,也可以使用上一節設定的虛擬域名:https://roxy:8443/cas/logout,則系統自動完成登出操作。如下圖所示。

  5. 至此,伺服器端配置全部完成。

5.png

6.png

7.png

四、實現基於資料庫的身份驗證

1
概述。
  1. 進行基於資料庫的身份驗證,允許不同使用者都能夠實現登入。

  2. 本文以 MySQL 資料庫為例進行操作。

  3. 如果使用 mysql 8.0 版本,需要下載 mysql-connector-java-5.1.46.jar(Feb. 2018版本)。如果使用其他資料庫,把對應的資料庫 JDBC 驅動包放到該目錄下即可。

2
新增依賴。
  1. 複製 JAR 包 cas-server-support-jdbc-3.5.2.jarmysql-connector-java-5.1.6-bin.jar至%TOMCAT_HOME%\webapps\cas\WEB-INF\lib目錄下,如下圖所示。

13.png

3
建立資料庫、表。
  1. 表名 【userinfo】,使用者名稱 【username】,密碼【userpass】,如下图所示。

8.png

4
配置 CAS 實現基於資料庫的身份驗證-新增資料庫配置資訊。
  1. 以管理員身份啟動文字編輯工具,開啟%TOMCAT_HOME%\webapps\cas\WEB-INF\deployerConfigContext.xml,找到下面的程式碼:

       <bean id="authenticationManager"

        class="org.jasig.cas.authentication.AuthenticationManagerImpl">。

  2. 在該段程式碼前面插入 mysql JDBC 資料來源配置資訊,如下所示:

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <property name="driverClassName"><value>驅動器</value></property>

        <property name="url"><value>url</value></property>

        <property name="username"><value>資料庫使用者名稱</value></property>

        <property name="password"><value>資料庫密碼</value></property>

        </bean>。

15.png

5
配置 CAS 實現基於資料庫的身份驗證-新增使用者驗證資訊。
  1. 以管理員身份啟動文字編輯工具,開啟%TOMCAT_HOME%\webapps\cas\WEB-INF\deployerConfigContext.xml,找到下面的程式碼並將其註釋掉,如下圖所示。:

    <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />。

    註:該配置資訊使用 SimpleTestUsernamePasswordAuthenticationHandler 驗證使用者,即預設使用者名稱和密碼相同則驗證透過,使用者名稱密碼不同則登入失敗。我們需要將其替換成基於資料庫驗證的配置資訊。

  2. 其下面插入如下程式碼:

    <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

                    <property name="dataSource" ref="dataSource" />

                    <property name="sql" value="select userpass from userinfo where username=?" />

                    </bean>。

  3. 插入配置資訊如下圖所示。

參數

解釋

QueryDatabaseAuthenticationHandler

是 cas-server-support-jdbc 提供的查詢API其中的一個。

QueryDatabaseAuthenticationHandler 是透過配置一個 SQL 語句查出密碼,與所給密碼匹配。

dataSource

是使用 JDBC 查詢時的資料源。

SQL

語句就是查詢哪一張表,本例根據 userinfo 表的 username 欄位查詢密碼,CAS 會匹配使用者輸入的密碼,如果匹配則透過。

6
配置 CAS 實現基於資料庫的身份驗證-保存更改。
  1. 保存对%TOMCAT_HOME%\webapps\cas\WEB-INF\deployerConfigContext.xml所做的修改。

7
配置 CAS 實現基於資料庫的身份驗證-重啟。
  1. 重新啟動 Tomcat 服務。

8
測試基於資料庫的身份驗證。
  1. 在瀏覽器中輸入網址https://roxy:8443/cas/login,如果 IE 有證書警告資訊,直接點選【繼續瀏覽此網站(不推薦)】,CAS 會匹配使用者輸入的使用者名稱密碼,和userinfo 表的使用者名稱密碼,如下圖所示。

  2. CAS 會匹配使用者輸入的使用者名稱密碼,和 userinfo 表的使用者名稱密碼,如果匹配則透過則系統顯示【登入成功】,如下圖所示。

9.png

100.png

五、配置 FineReport 作為 CAS 客戶端

1
概述。
  1. 下面將介紹如何將 FineReport 與 CAS 單點登入結合。

2
複製 JAR 包。
  1. 將 CAS 的casclient.jarcas-client-core-3.2.1.jarJAR 包以及%Java_HOME%\jdk\lib\tools.jar都複製到%TOMCAT_HOME%\webapps\webroot\WEB-INF\lib下,如下圖所示。

20.png

3
添加 web.xml。
  1. 在%TOMCAT_HOME%\webapps\webroot\WEB-INF目錄下新建web.xml 文件,插入程式碼。

  2. 其中 roxy 為配置的虛擬域名,請按照實際情況進行修改,如下圖所示。

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
   xmlns="http://java.sun.com/xml/ns/j2ee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
   version="2.4"> 
  <display-name>Template WebApp</display-name>
    <mime-mapping>
  <extension>msi</extension>
  <mime-type>application/x-msi</mime-type>
  </mime-mapping>     
  <filter>  
        <filter-name>CASFilter</filter-name>  
        <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>  
        <init-param>  
            <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>  
            <param-value>https://alex:8443/cas/login</param-value>  
            <!--cas提供登錄頁面的url-->  
        </init-param>  
        <init-param>  
            <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>  
            <param-value>https://alex:8443/cas/proxyValidate</param-value>  
            <!--cas提供service ticker或者proxy ticket驗證服務的url-->  
        </init-param>  
        <init-param>  
            <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>  
            <param-value>alex:8443</param-value>  
                        <!--客戶端應用的域名和端口-->  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>CASFilter</filter-name>  
        <url-pattern>/decision/*</url-pattern>  
    </filter-mapping> 
 <filter>    
    <filter-name>FrFilter</filter-name>    
    <filter-class>com.fr.FrFilter</filter-class>    
</filter>    
<filter-mapping>    
    <filter-name>FrFilter</filter-name>    
    <url-pattern>/decision/*</url-pattern>    
</filter-mapping>  
</web-app>

3.png

4
新增過濾資訊。
  1. Java 程式碼見超連結:FrFilter.java

  2. 將 FrFilter.java 編譯成 class 檔案:FrFilter.class 并放在%TOMCAT_HOME%\webroot\WEB-INF\classes\com\fr目錄下,如下圖所示。

5
效果查看。
  1. 啟動 Tomcat 伺服器,在瀏覽器中輸入:https://localhost:8443/webroot/decision即進入了 CAS 登入介面,輸入使用者名稱和密碼即可跳轉到決策平臺對應的使用者介面下,如下圖所示。

  2. 視頻中的域名為之前配置的 SSL 證書時所設置的。

cyxfc-w4nyt.gif

附件列表


主題: 部署集成
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉