CAS5.3.x單點登陸(一)CAS服務器搭建

一、創建證書

證書是單點登錄認證系統中很重要的一把鑰匙,客戶端於服務器的交互安全靠的就是證書;由於是個人學習測試所以就直接用JDK自帶的keytool工具生成證書;如果以後真正在產品環境中使用肯定要去證書提供商去購買,證書認證一般都是由VeriSign認證,中文官方網站:http://www.verisign.com/cn/

  1. 打開命令行,進入${JAVA_HOME}\bin目錄,輸入keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -keystore server.keystore
  2. 根據提示輸入口令changeit並確認
  3. 輸入名字與姓氏localhost(服務器域名,一般輸入localhost或ip地址)
  4. 其他可不填,最後輸入y確認。結束後${JAVA_HOME}\bin下會有一個server.keystore文件
    在這裏插入圖片描述

二、導出證書

  1. 輸入keytool -export -alias tomcat -keypass changeit -file server.crt -keystore server.keystore
  2. 輸入口令changeit;結束後${JAVA_HOME}\bin下會有一個server.crt文件
    在這裏插入圖片描述

三、將證書導入jre可信任區

  • 由於空格問題,我這裏先將jre目錄'C:\Program Files\Java\jre1.8.0_152\lib\security\'下的cacerts文件複製出來放到了C盤根目錄
  • 輸入keytool -import -alias tomcat -file server.crt -keypass changeit -keystore C:/cacerts
  • 輸入口令changeit
  • 輸入y確認
  • C:/cacerts文件重新放到'C:\Program Files\Java\jre1.8.0_152\lib\security\'目錄下
    在這裏插入圖片描述

四、cas服務器搭建

  • 什麼是Overlay

overlay可以將多個項目war合併成爲一個項目,並且如果項目存在同名文件,那麼主項目中的文件將覆蓋掉其他項目的同名文件。下面使用maven 的Overlay配置實現無侵入的改造cas.

  1. 打開全球最大的同性交友網站下載cas-overlay-template-5.3.zip

  2. 解壓cas-overlay-template-5.3.zip並重命名爲sso-cas-server(隨意,也可以不用重命名)

  3. idea導入項目sso-cas-server

  4. 鼠標右鍵點擊項目pom.xml,單擊'Add as Maven Project'

  5. 打開idea中的Terminal,輸入build.cmd debug,由於沒有配置ssl證書的key-store所以運行中是會有錯誤提示的,運行完成後會在項目中生成target目錄。

  6. 打開/target/cas/WEB-INF/classes文件夾,會發現裏面有一個熟悉的application.properties文件,下面我們要覆蓋這個文件
    在這裏插入圖片描述

  7. 分別新建文件夾/src/main/java/src/main/resources。右鍵/src/main/java,並Mark Directory as 選擇Sources Root;右鍵/src/main/resources,並Mark Directory as 選擇Resources Root。新建包org.apereo.cas(後面改造cas要求文件名一致);複製/target/cas/WEB-INF/classes/application.properties/src/main/resources,將上面生成的server.keystore複製到/src/main/resources
    在這裏插入圖片描述

  8. 編輯/src/main/resources/application.properties,將server.ssl.key-store設置爲classpath:server.keystore

  9. /src/main/resources/application.properties中追加如下配置開啓http協議支持

    cas.server.http.port=8080
    cas.server.http.protocol=org.apache.coyote.http11.Http11NioProtocol
    cas.server.http.enabled=true
    cas.server.http.attributes.attributeName=attributeValue
    
  10. 編輯pom.xml,找到overlays節點,改爲如下配置使我們的application.properties生效

    <overlays>
        <overlay>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-webapp${app.server}</artifactId>
            <!-- 排除被覆蓋的文件 -->
            <excludes>
                <exclude>WEB-INF/class/application.properties</exclude>
            </excludes>
        </overlay>
    </overlays>
    
  11. 重新輸入輸入build.cmd debug,啓動完成後輸入https://localhost:8443/cas/loginhttp://localhost:8080/cas/login均能訪問到統一認證中心.
    在這裏插入圖片描述
    在這裏插入圖片描述

五、在外部tomcat中部署cas服務

上一步中搭建cas服務是以springboot內置tomcat服務器啓動的,若要在外部tomcat中部署cas服務則又有不同.

  1. 將第四步中target文件夾下的cas.war複製到tomcat的webapps文件夾下

  2. 下面有兩種訪問方式

    http訪問

    1. 雙擊tomcat的bin目錄下的startup.bat文件
    2. 瀏覽器輸入http://localhost:8080/cas/login可進入統一認證中心

    https訪問

    1. 修改tomcat的conf目錄下的server.xml文件

      將下列兩項註釋掉

      <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
      <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
      

      添加下面代碼片段(keystoreFiletruststoreFilekeystorePass對應修改)

      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
      		   sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
                    maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
      		   keystoreFile="C:/Program Files/Java/jdk1.8.0_152/bin/server.keystore" truststoreFile="C:/Program Files/Java/jre1.8.0_152/lib/security/cacerts" keystorePass="changeit"
                    clientAuth="false" sslProtocol="TLS" />
      
    2. 保存server.xml後回到tomcat的bin目錄下,雙擊startup.bat文件

    3. 瀏覽器輸入https://localhost:8443/cas/login可進入統一認證中心

-----參考https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html#http-web-requests

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章