前面我们讲解了一些列的CAS文章,对CAS有了很多了解。今天我们讲解一个现在服务常用的REST协议来完成CAS的登录、认证,不需要我们手动登录跳转到CAS的登录页面就可以完成CAS的一些列操作。
我们知道CAS认证支持包括多种协议去认证,包括CAS、OAuth、SAML1、SAML2、REST Protocol等协议,这里我们采用REST协议去获取TGT,然后获取到TGT后获取到ST,最后拿到ST后再去访问服务。
一、认证服务
首先我们加入Rest服务依赖:
<!-- Restful support --> <dependency> <groupId>org.apereo.cas</groupId> <artifactId>cas-server-support-rest</artifactId> <version>${cas.version}</version> </dependency>
修改票据默认过期时间
## # Ticket过期设置,默认是10秒 # cas.ticket.st.numberOfUses=1 cas.ticket.st.timeToKillInSeconds=6000
其他操作呢?没了,就是如此简单,启动服务,接下来就是Restful操作。
获取TGT票据
http://localhost:8080/cas/v1/tickets(x-www-form-urlencoded格式) username(账号) password(密码) service(客户端服务地址,如:http://localhost:8090/,地址一定要统一,建议带上斜杠)
使用获取到的TGT票据申请ST票据
http://localhost:8080/cas/v1/tickets/TGTxxxxxxxxxxxxxx(x-www-form-urlencoded格式) service(客户端服务地址,如:http://localhost:8090/,地址一定要统一,建议带上斜杠)
带上票据访问目标客户端
http://localhost:8090?ticket=ST-2-ZvIA49ULFLvNhyLGMzk21iE7gLsat21-PC
再次访问目标客户端,发现不用登录也能访问,需要注意的是,一个ST票据只能使用一次!
验证ST 只获取登录名
(GET) http://localhost:8080/cas/serviceValidate?service=(申请的客户端服务地址)&ticket=(获取到的ST票据)
验证ST 获取多属性
(GET) http://localhost:8080/cas/p3/serviceValidate?service=(申请的客户端服务地址)&ticket=(获取到的ST票据)
验证TGT
http://localhost:8080/cas/v1/tickets/TGTxxxxxxxxxxxcxxx(GET)
销毁TGT
http://localhost:8080/cas/v1/tickets/TGTxxxxxxxxxxxxxxx(DELETE)
再次验证
问题
未能够识别出目标 'ST-1-K5ieqntwqOaxBALpX8KHTw3RTwQat21-PC’票根
加斜杠问题
https://blog.csdn.net/u010588262/article/details/79818494
完结,如果想了解更多cas文章,请看我以往的文章。