使用cas-overlay-template搭建cas服務器

背景

在多服務統一賬號的應用集中,單點登陸是必不可少的。CAS就是成熟的單點登陸框架之一。Github地址 https://github.com/apereo/cas。如今咱們就經過一系列快速簡單的構建方式實現一個簡單的單點登陸系統集。
CAS架構java

第一步:快速構建本身的CAS Server

apereo提供了一個基於層結構的框架,能夠幫助開發者快速引入cas server的代碼,而後實現自由配置或代碼覆蓋,打包方式也很是簡單。Github地址https://github.com/apereo/cas...git

  1. 下載或者克隆cas-overlay-template項目到本地,用Intellji Idea打開項目,而後添加當前項目爲maven項目。執行Maven命令mvn install。執行時間較長,需耐心等待。執行結束後,該項目中會出現overlays目錄,裏面就是cas server的配置文件和class代碼。
  2. mvn install執行後會在項目的target目錄下生成一個cas.war包,將該war包放在apache tomcat的webapps/目錄下並啓動tomcat後,就能經過瀏覽器訪問,訪問地址 localhost:8080/cas
  3. 修改默認配置的方式:github

    • 在項目中添加src/main/javasrc/main/resources目錄,並將src/main/java設置爲代碼文件根目錄,將src/main/resources設置爲資源文件根目錄。例如要修改默認的登陸用戶名和密碼(默認爲casuser/Mellon),只須要將overlays目錄下的WEB-INF/classes/目錄中的application.properties文件複製到src/main/resources中,並修改最後一行配置cas.authn.accept.users=casuser::Melloncas.authn.accept.users=test::demo便可,讓後從新執行mvn install並從新部署target/cas.war包便可驗證。
    • overlays中的WEB-INF/classes/目錄下的全部文件都可被覆蓋,只須要將該目錄下的文件複製到src/main/resources中,而後修改後從新打包部署,便可。
  4. CAS5.X默認的登陸賬號是在application.properties中配置的(casuser::Mellon),正式環境下須要經過鏈接數據庫進行校驗,添加數據庫驗證的教程 https://apereo.github.io/2017...

第二步:客戶端集成CAS

集成CAS客戶端其實是爲應用添加多個Filter。以SpringBoot的應用爲例,能夠採用自動註解的方式添加過濾器。這裏咱們使用了cas-client-autoconfig-support項目的集成能力,Github地址https://github.com/Unicon/cas...web

  1. 在SpringBoot應用的Maven配置文件(pom.xml)中添加依賴:數據庫

    <dependency>
      <groupId>net.unicon.cas</groupId>
      <artifactId>cas-client-autoconfig-support</artifactId>
      <version>1.5.0-GA</version>
    </dependency>
  2. 在應用啓動入口類上添加配置@EnableCasClient,示例:apache

    @SpringBootApplication
    @EnableCasClient
    public class MyApplication { .. }
  3. 在應用的配置文件中(application.properties)添加以下配置:json

    cas.server-url-prefix=https://casserver.com/cas # 填CAS服務器的前綴
    cas.server-login-url=https://casserver.com/cas/login # 填CAS服務器的登陸地址
    cas.client-host-url=https://casclient.com # 填客戶端的訪問前綴
  4. 訪問應用時就會首先跳轉到cas服務器的登陸地址。

FQA

HTTP服務對接CAS時登陸後報未認證受權的服務
未受權瀏覽器

解決辦法: 服務端開啓http,默認只開始https和imaps。參考 http://blog.csdn.net/leftfist...tomcat

操做步驟(1): 修改services\HTTPSandIMAPS-10000001.json文件服務器

"serviceId" : "^(https|imaps)://.*" 
改成==>
"serviceId" : "^(https|http|imaps)://.*",

操做步驟(2): 在application.properties文件中添加:

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true #這一點真是過重要了!!!!!!!!

多應用註銷時會有一個註銷失敗

解決辦法: 配置客戶端的參數:useSessionfalse,即不開啓session持久。參數配置參考https://github.com/apereo/jav...。示例:

@EnableCasClient
   public class Application extends CasClientConfigurerAdapter {
   
     public static void main(String[] args) throws Exception {
       SpringApplication.run(Application.class, args);
     }
   
     @Override
     public void configureValidationFilter(FilterRegistrationBean validationFilter) {
       validationFilter.getInitParameters().put("useSession", "false");
     }
   }
相關文章
相關標籤/搜索