我通过以下代码用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,因此我知道到期不是问题。)
问题是什么?这和cookie有关吗?
问题是RestTemplate是无状态的。因此,我使用了:https : //github.com/folkengine/StatefulRestClient.git上的StatefullRestTemplate
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句