【问题标题】:Java client to authenticate against CAS serverJava 客户端对 CAS 服务器进行身份验证
【发布时间】:2015-05-15 07:01:13
【问题描述】:

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

【问题讨论】:

    标签: java cas resttemplate


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-28
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2017-10-07
      • 1970-01-01
      相关资源
      最近更新 更多