JASIG CAS学习(二): 使用SpringBoot搭建客户端完成单点登录

        从上一篇中,CAS 服务端已经搭建完成,并且实现了自定义的页面,现在来开发客户端。其实对于客户端的开发比较简单,只需要简单添加一个依赖即可,这里可以使用传统的Spring的方式开发,而我这里图方便直接使用SpringBoot的方式。

      首先明确本次的目的 : 两个客户端接入CAS,达到只需要登录其中一个另外一个就可以直接访问。

      首先做好准备工作 , 先在hosts文件中加入以下配置 , 之后对localhost的访问将直接使用域名 , cas服务端的域名为server.cas.com , 两个客户端分别是app1.cas.com , app2.cas.com

127.0.0.1server.cas.com
127.0.0.1app1.cas.com
127.0.0.1app2.cas.com


       

 

 

      然后新建一个SpringBoot工程(java版本尽量选1.8及以上),starter只需依赖一个web即可,然后添加 cas客户端的依赖

    <dependency>
		  <groupId>net.unicon.cas</groupId>
		  <artifactId>cas-client-autoconfig-support</artifactId>
		  <version>1.5.0-GA</version>
		</dependency>

     待依赖下载完成之后,在SpringBoot启动类上添加  @EnableCasClient 注解,然后再application.properties( /.yml )中修改cas客户端的配置,配置的意思看英文就一目了然 。

cas.server-url-prefix=http://server.cas.com:8080/cas
cas.server-login-url=http://server.cas.com:8080/cas/login
cas.client-host-url=http://app1.cas.com
cas.validation-type=CAS
server.servlet.context-path=/app1
server.port=8081

   再添加一个REST接口

@RestController
public class TestController {

	@GetMapping("/")
	public String index() {
		return "app1 client index";
	}

}

 

   使用同样的方式再新建一个SpringBoot工程 , 只需稍微修改一下配置文件和Rest接口即可

cas.server-url-prefix=http://server.cas.com:8080/cas
cas.server-login-url=http://server.cas.com:8080/cas/login
cas.client-host-url=http://app2.cas.com
cas.validation-type=CAS
server.servlet.context-path=/app2
server.port=8082
@RestController
public class TestController {

	@GetMapping("/")
	public String index() {
		return "app2 client index";
	}

}

 到此,客户端就已经搭建完成。下一步要做的就是让服务端认识这两个客户端,我这里采用的是 json 文件的形式注册服务。切回到服务端工程,这个依赖的war中有个services目录,这个就是所需要配置的文件格式,我这里直接copy到src/main/resources目录下,删掉任一个,将剩下的改名为app-10000001.json。

{
  "@class" : "org.jasig.cas.services.RegexRegisteredService",
  "serviceId" : "^(http://).*(\\.cas\\.com).*",
  "name" : "app",
  "id" : 10000001,
  "description" : "This service definition authorized all cas application",
  "evaluationOrder" : 10000,
  "logoutType" : "BACK_CHANNEL"
}

    注意,这个文件的命名要使用 {name}-{id}.json的格式,详细的配置可以参考官方文档。简单解释一下就是说注册所有 http://*.cas.com* 的服务, 所以两个客户端 http://app1.cas.com:8081/app1 ,  http://app2.cas.com:8082/app2 可以成功注册。

     那么还有一个问题就是,CAS服务默认使用的HTTPS的,但是我不管服务端和客户端一律选择的是HTTP,如果此时直接测试可能是会出现无法单点登录的情况,所以需要修改服务端的配置使其支持HTTP。服务端的很多配置都是在cas.properties文件中,所以只需要将该文件的配置改下即可,但是无法直接修改 war 中的文件 , 所以需要将其copy出来,扔到 src/main/webapp/WEB-INF文件夹下 , 扔到其他地方可能配置不会生效,修改以下两项改为 false。

tgc.secure=false

warn.cookie.secure=false

    修改完成之后,启动 CAS服务端和两个客户端。开两个标签页分别访问http://app1.cas.com:8081/app1和http://app2.cas.com:8082/app2。注意service参数,就是访问的连接,登录之后会直接跳回去

     在app1跳转的标签,使用casuser/Mellon登录,成功进入index。切换到app2标签,直接输入 http://app2.cas.com:8082/app2 , 同样也可以直接进入 index。

   到此,单点登录完成,下一篇记录单点登出。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值