在多服務統一賬號的應用集中,單點登陸是必不可少的。CAS就是成熟的單點登陸框架之一。Github地址 https://github.com/apereo/cas。如今咱們就經過一系列快速簡單的構建方式實現一個簡單的單點登陸系統集。
java
apereo提供了一個基於層結構的框架,能夠幫助開發者快速引入cas server的代碼,而後實現自由配置或代碼覆蓋,打包方式也很是簡單。Github地址https://github.com/apereo/cas...。git
mvn install
。執行時間較長,需耐心等待。執行結束後,該項目中會出現overlays目錄,裏面就是cas server的配置文件和class代碼。mvn install
執行後會在項目的target目錄下生成一個cas.war包,將該war包放在apache tomcat的webapps/
目錄下並啓動tomcat後,就能經過瀏覽器訪問,訪問地址 localhost:8080/cas
。修改默認配置的方式:github
- 在項目中添加
src/main/java
和src/main/resources
目錄,並將src/main/java
設置爲代碼文件根目錄,將src/main/resources
設置爲資源文件根目錄。例如要修改默認的登陸用戶名和密碼(默認爲casuser/Mellon),只須要將overlays目錄下的WEB-INF/classes/
目錄中的application.properties
文件複製到src/main/resources
中,並修改最後一行配置cas.authn.accept.users=casuser::Mellon
爲cas.authn.accept.users=test::demo
便可,讓後從新執行mvn install
並從新部署target/cas.war
包便可驗證。- overlays中的
WEB-INF/classes/
目錄下的全部文件都可被覆蓋,只須要將該目錄下的文件複製到src/main/resources
中,而後修改後從新打包部署,便可。
application.properties
中配置的(casuser::Mellon),正式環境下須要經過鏈接數據庫進行校驗,添加數據庫驗證的教程 https://apereo.github.io/2017...。集成CAS客戶端其實是爲應用添加多個Filter。以SpringBoot的應用爲例,能夠採用自動註解的方式添加過濾器。這裏咱們使用了cas-client-autoconfig-support
項目的集成能力,Github地址https://github.com/Unicon/cas...。web
在SpringBoot應用的Maven配置文件(pom.xml
)中添加依賴:數據庫
<dependency> <groupId>net.unicon.cas</groupId> <artifactId>cas-client-autoconfig-support</artifactId> <version>1.5.0-GA</version> </dependency>
在應用啓動入口類上添加配置@EnableCasClient
,示例:apache
@SpringBootApplication @EnableCasClient public class MyApplication { .. }
在應用的配置文件中(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 # 填客戶端的訪問前綴
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 #這一點真是過重要了!!!!!!!!
多應用註銷時會有一個註銷失敗
解決辦法: 配置客戶端的參數:
useSession
爲false
,即不開啓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"); } }