Java客户端对CAS服务器进行身份验证

时间:2015-05-15 07:01:14

标签: java cas resttemplate

我用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有关吗?

1 个答案:

答案 0 :(得分:0)

问题是RestTemplate是无状态的。所以,我用过: 来自https://github.com/folkengine/StatefulRestClient.git

的StatefullRestTemplate