史上最详细的 Apereo CAS 5.3开发教程:三、CAS Client客户端的配置

Apereo CAS Client 项目源码地址:https://github.com/cas-projects/cas-sample-java-webapp
CAS 系列详解:https://blog.csdn.net/makyan/column/info/36060
上一节内容:https://blog.csdn.net/makyan/article/details/88878667
本节继上一节内容讲解

2.1. 项目配置

先从CAS源码库中下载CAS Client客户端的示例项目,我们在此项目基础上进行修改。

2.1.1. 配置host

127.0.0.1 www.futurecloud-client1.com
127.0.0.1 www.futurecloud-client2.com

2.1.2. 导入项目,改名

官方demo导入idea,并将项目名修改为cas-client1

cas-client1

2.1.3. 修改项目web文件

修改web.xml,主要是cas服务端的地址和客户端的地址 ,
完整内容如下:




    
    
    
        org.jasig.cas.client.session.SingleSignOutHttpSessionListener
    
    

    
        CAS Single Sign Out Filter
        org.jasig.cas.client.session.SingleSignOutFilter
        
            casServerUrlPrefix
            
            https://www.futurecloud.com:8443/cas
        
    
    
        CAS Single Sign Out Filter
        /*
    

    
    
        CAS Authentication Filter
        org.jasig.cas.client.authentication.AuthenticationFilter
        
            casServerLoginUrl
            
            https://www.futurecloud.com:8443/cas/login
        
        
            serverName
            
            http://www.futurecloud-client1.com:8051/
        
    
    
        CAS Authentication Filter
        /*
    
    
    
        CAS Validation Filter
        org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter
        
            casServerUrlPrefix
            https://www.futurecloud.com:8443/cas
            
        
        
            serverName
            http://www.futurecloud-client1.com:8051/
        
        
            redirectAfterValidation
            true
        
        
            useSession
            true
        
        
            authn_method
            mfa-duo
        
    
    
        CAS Validation Filter
        /*
    

    
    
        CAS HttpServletRequest Wrapper Filter
        org.jasig.cas.client.util.HttpServletRequestWrapperFilter
    
    
        CAS HttpServletRequest Wrapper Filter
        /*
    

    
    
        CAS Assertion Thread Local Filter
        org.jasig.cas.client.util.AssertionThreadLocalFilter
    
    
        CAS Assertion Thread Local Filter
        /*
    
    

    
        
            index.jsp
        
    

2.1.4. idea中配置发布

史上最详细的 Apereo CAS 5.3开发教程:三、CAS Client客户端的配置_第1张图片
注意:须保证客户端证书和服务端证书是同一个证书,不然就会报错。
由于我的服务端和客户端使用的jdk是同一个,所以,就不需要再为客户端导入证书了。
如果不使用同一个jdk,必须要在另一个jdk中导入相同的安全证书。

这里写图片描述

2.2. 客户端注册

2.2.1. 启动客户端测试

此时,启动客户端,我们可以访问,但是,cas的服务端为对此客户端授权,所以访问会报“未认证授权的服务”
访问: http:www.futurecloud-client1.com:8051
史上最详细的 Apereo CAS 5.3开发教程:三、CAS Client客户端的配置_第2张图片

服务端日志出现警告,可以根据警告判断应该注册的域名是什么

根据警告,我们知道是因为没有注册域名 :http://www.futurecloud-client1.com:8051/

2.3. 在cas服务端注册客户端地址

以上错误是因为客户端的域名没有在服务端进行注册,那么怎么注册呢?
在服务端的项目cas-overlay中,从overlays或者cas_war中把services目录拷贝到项目的资源目录resources里:

2.3.1. 新增一个json文件

文件名按照规范用name-serviceId.json吧,里面的内容也很好理解:

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^http://www.futurecloud.*",
  "name" : "futurecloud",
  "theme" : "apereo",
  "id" : 10000003,
  "description" : "futurecloud项目相关服务,授权 www.futurecloud 开头的服务",
  "evaluationOrder" : 1
}

注意:services目录中可包含多个 JSON 文件,其命名必须满足以下规则:
n a m e − {name}- name{id}.json,id必须为json文件中内容id一致。
对其中属性的说明如下,更多详细内容见官方文档-Service-Management。
● @class:必须为org.apereo.cas.services.RegisteredService的实现类
● serviceId:对服务进行描述的表达式,可用于匹配一个或多个 URL 地址
● name: 服务名称
● id:全局唯一标志
● description:服务描述,会显示在默认登录页
● evaluationOrder:定义多个服务的执行顺序

同时在application.properties里添加如下内容,开启服务端对json配置的读取:

2.3.2. 添加cas 读取json服务配置的依赖



    org.apereo.cas
    cas-server-support-json-service-registry
    ${cas.version}

2.3.3. 修改application.properties

配置好service之后,根据官方文档-service-registry,还需修改 application.properties 文件告知 CAS 服务端从本地加载服务定义文件

#开启识别json文件,默认false
cas.serviceRegistry.initFromJson=true
#自动扫描服务配置,默认开启
#cas.serviceRegistry.watcherEnabled=true
##120秒扫描一遍
#cas.serviceRegistry.repeatInterval=120000
##延迟15秒开启
##cas.serviceRegistry.startDelay=15000
#cas.serviceRegistry.managementType=DEFAULT
##资源加载路径
cas.serviceRegistry.json.location=classpath:/services
#cas.logout.followServiceRedirects=true

重启cas 服务端,打印如下日志,就证明services服务配置成功

2019-03-28 16:52:16,381 INFO [org.apereo.cas.services.AbstractServicesManager] - 
2019-03-28 16:52:17,157 INFO [org.apereo.cas.authentication.PolicyBasedAuthenticationManager] - 
2019-03-28 16:52:17,157 INFO [org.apereo.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - 

客户端注册到cas服务端的配置完成,访问客户端:http://www.futurecloud-client1.com:8051
成功跳转到cas 服务端的登录页面,输入用户名/密码登录后的界面如下:
史上最详细的 Apereo CAS 5.3开发教程:三、CAS Client客户端的配置_第3张图片

测试多个客户端单点登录,配置跟上文一样,以此,我们配置了另一个客户端,域名为: www.futurecloud-client2

你可能感兴趣的:(CAS详解,Apereo,CAS,详解)