1、终极目标
浏览器访问:
http://localhost:8080/cas/v1/tickets?username=admin&password=1
想要获取TGT,得到201响应码。
2、浏览器请求
浏览器请求报错,可以理解,因为是GET请求,接口文档要求是POST请求。
报错如下:
Method Not Allowed
The method specified in the request is not allowed for the resource identified by the request URI
You can get technical details here.
Please continue your visit at our home page.
翻译如下:
不允许的方法。
请求URI标识的资源不允许使用请求中指定的方法。
你可以在这里获得技术细节。
请继续访问我们的主页。
截图如下:
3、Insomnia请求
使用了POST请求,得到了400响应码。
400指示客户端发送的请求在语法上不正确。
这是为什么,别人都可以发送成功。
4、postman请求
别人都可以获取201状态码,生成TGT。我这状态码就是400与405。
思考一下,自己与别人的整体操作过程,有哪些不一样。
解决方法:
1、从官网上下载cas-server,看看是不是自己war包有问题。
2、换不同版本的cas-server,试一下,看是否是版本问题。
3、使用域名进行访问,排除域名问题。
4、开启HTTPS协议,生成令牌,看是否因证书问题导致访问失败。
电视机前的观众朋友们,上边的四种方法,千万不要试,没用。
惨痛的教训,别人都可以,我不可以,我很纳闷,哪里出错了,到处排查原因。
这里,我推荐两款工具,一个是curl工具,另一个是postman。
不得不说,这两个才是比较优秀的测试接口工具。
使用postman,还是没有201,哈哈哈哈哈哈。
接着往下看,看第二张图,咦,怎么出来了,怎么做到的。
大家观察一下,两张图哪里不一样,然后如图所示操作一下就ok了。
第一张图:错误。
第二张图:201状态码,成功生成TGT。
第三张图:200状态码,成功生成ST。
第四张图:200状态码,校验成功,返回用户名。
在校验ST的时候,有可能遇到这个报错:
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationFailure code='INVALID_TICKET'>
Ticket 'ST-1-R6dvKKu6a0ExkSNZaLaa-xiaolaoben' not recognized
</cas:authenticationFailure>
</cas:serviceResponse>
这个错误是因为你的ST过期了,不能使用了,教你一个傻乎乎的办法。
获取201后,赶快去生成ST,有了ST之后,赶快去校验。
一定要在10秒内完成哦,看你手速了。
Ticket的默认时长是10s。
ticketExpirationPolicies.xml中可以修改时长。