我用java编写了一个客户端应用程序: https://wiki.jasig.org/display/casum/restful+api
我能够获得TGT和服务票。我也能够"验证"通过我的应用程序反对CAS的服务票据,即:
https://<HOST>:8443/cas/serviceValidate
使用该服务票证,我可以验证它是否可以在浏览器中运行:
https://<HOST>:8443/MyProject/login/cas?ticket=<TICKET_ID_FROM_MY_CLIENT_APP>&service=<ENCODED URL OF SERVICE>
作品
但该服务票证无法在我的应用中使用。 我甚至尝试过:
RestTemplate rt = new RestTemplate();
ResponseEntity<String> s1 = rt.getForEntity("https://<HOST>:8443/MyProject/login/cas?ticket=<TICKET_ID_FROM_MY_CLIENT_APP>&service=<ENCODED URL OF SERVICE>", String.class);
响应是CAS的默认登录页面。但是当再次尝试使用浏览器时,它可以工作。注意,我在浏览器和我的应用程序中使用相同的URL进行测试。
(我已修改CAS配置以延长TGT和服务票的寿命1小时,有效期计数到1000,所以我知道到期不是问题。)
有什么问题?这与cookies有关吗?
答案 0 :(得分:0)
问题是RestTemplate是无状态的。所以,我用过: 来自https://github.com/folkengine/StatefulRestClient.git
的StatefullRestTemplate