前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用CAS的RESTFUL接口使CS系统单点登录BS系统

使用CAS的RESTFUL接口使CS系统单点登录BS系统

作者头像
Java学习123
发布2018-05-16 13:28:27
1.6K0
发布2018-05-16 13:28:27
举报
文章被收录于专栏:Java学习123

准备

首先参考前面文章来配置好CAS,并且配置好RESTFUL,参考:

http://blog.csdn.net/happyteafriends/article/details/7450120

场景如下,

CAS地址为:http://10.1.81.223:8080/cas-server-webapp

两个WEB应用地址:http://10.1.81.223:8080/webapp2

http://10.1.81.223:8080/webapp1

目标:CS架构的程序调用REST最终获取到ST,并登录webapp1

步骤如下

获取ticket

代码语言:javascript
复制
curl -i -X POST -d "username=admin&password=admin&service=http://10.1.81.223:8080/webapp1" http://10.1.81.223:8080/cas-server-webapp/v1/tickets/  

结果:

代码语言:javascript
复制
HTTP/1.1 201 Created  
Server: Apache-Coyote/1.1  
Date: Tue, 07 Jan 2014 01:24:30 GMT  
Location: http://10.1.81.223:8080/cas-server-webapp/v1/tickets/TGT-1-sof0YkUAyxSBOWcIFI6lZRmpBmOBgmmNlwL7xvKWbfir4J7hMH-cas  
Accept-Ranges: bytes  
Server: Noelios-Restlet-Engine/1.1..1  
Content-Type: text/html;charset=ISO-8859-1  
Content-Length: 444  
  
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>201 The request has been fulfilled and resulted in a new resource being created</title></head><body><h1>TGT Created</h1><form action="http://10.1.81.223:8080/cas-server-webapp/v1/tickets/TGT-1-sof0YkUAyxSBOWcIFI6lZRmpBmOBgmmNlwL7xvKWbfir4J7hMH-cas" method="POST">Service:<input type="text" name="service" value=""><br><input type="submit" value="Submit"></form></body></html>  

可见这里已经已经生成了TGT

第二步,通过TGT + SERVICE 生成ST

代码语言:javascript
复制
curl -i -X POST -d "service=http%3A%2F%2F10.1.81.223%3A8080%2Fwebapp1%2F" http://10.1.81.223:8080/cas-server-webapp/v1/tickets/TGT-1-sof0YkUAyxSBOWcIFI6lZRmpBmOBgmmNlwL7xvKWbfir4J7hMH-cas  

注意这里的service必须所编码后的,否则到后面会报错:

票根XXX 不符合目标服务  结果:

代码语言:javascript
复制
HTTP/1.1 200 OK  
Server: Apache-Coyote/1.1  
Date: Tue, 07 Jan 2014 02:05:53 GMT  
Accept-Ranges: bytes  
Server: Noelios-Restlet-Engine/1.1..1  
Content-Type: text/plain;charset=ISO-8859-1  
Content-Length: 29  
  
ST-1-iTyUm4scimR6UlaVFGbM-cas  

可见这里得到里ST,直接打开浏览器用这个ST去登录WEBAPP1既可

第三步,登录

打开浏览器输入

代码语言:javascript
复制
http://10.1.81.223:8080/webapp1/?ticket=ST-1-iTyUm4scimR6UlaVFGbM-cas 

发现可以登录。这个ST用一次就失效了。

退出

退出主要是使TGT失效,方法如下:

代码语言:javascript
复制
curl -i -X DELETE http://10.1.81.223:8080/cas-server-webapp/v1/tickets/TGT-1-1fPYM6FWvLX9ZIRqtp1eF9nQAypB79VdyyYG29Bef6iFvyCnwT-cas  
HTTP/1.1 200 OK  
Server: Apache-Coyote/1.1  
Date: Tue, 07 Jan 2014 02:20:39 GMT  
Accept-Ranges: bytes  
Server: Noelios-Restlet-Engine/1.1..1  
Content-Length: 0  

其他

如果报错: 找不到此票根的错误,则可能是失效时间太短

修改WEB-INF/ticketExpirationPolicies.xml 里修改

代码语言:javascript
复制
<!-- This argument is the time a ticket can exist before its considered expired.  -->  
        <constructor-arg  
            index="1"  
            value="1000000" />  

值可以改大点,我这里改的有点过大了,可能是改成了1000秒

报错:票根XXX 不符合目标服务 

上面提到了这个问题了,注意对service进行编码,变成类似于:

http%3A%2F%2F10.1.81.223%3A8080%2Fwebapp1%2F  才可以

参考:https://wiki.jasig.org/display/casum/restful+api

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
  • 步骤如下
    • 获取ticket
      • 第二步,通过TGT + SERVICE 生成ST
        • 第三步,登录
          • 退出
          • 其他
            • 如果报错: 找不到此票根的错误,则可能是失效时间太短
              • 报错:票根XXX 不符合目标服务 
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档