如何使用springsecurity读取cas票证验证xml?

beq87vna  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(452)

我有一个spring引导应用程序,并使用javaapereo cas客户机(版本3.6.2)使用cas服务器进行身份验证。换句话说,我想把我的应用程序变成一个cas客户端,我没有自己设置cas服务器。
我查看了cas服务器的呼叫列表:

对cas服务器的第一个调用已经发出,但是我没有看到对服务器的第二个调用用于票证验证(即,对 https://cas-server-address/cas/serviceValidate url),它将返回一个带有 user 以及 authtype 要提取以存储在数据库中的属性。
我有两个问题:
为什么没有第二次调用cas服务器进行票证验证?它藏起来了吗?
如何提取 user 以及 authtype 属性并将其存储在数据库中?

rbl8hiat

rbl8hiat1#

为什么没有第二次调用cas服务器进行票证验证?
有。第二个调用是从应用程序服务器到cas服务器的反向通道调用。根据定义,这不是你在浏览器中看到的东西。这个调用转到后台的cas服务器,以验证在第一段(即。 ST-xyz ). javacas客户机库应该自动为您执行此操作,您可以在日志中对此进行验证。
如果您没有看到这种情况发生,说明您的配置设置不正确,或者过程中出现了错误。
它藏起来了吗?
隐藏在浏览器中,因为这是一个反向通道调用。有关发生的情况和原因的更多详细信息,请研究cas协议。
如何从xml文档中提取user和authtype属性并将它们存储在数据库中?
javacas客户机库通常提取用户id和其他属性。然后,可以通过http请求对象获取远程用户报头下的用户id。如果您有权访问http会话,还可以从包含cas负载的会话中获取最终Assert:

var assertion = (Assertion) session.getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION);

有关更实际的示例,请参见此。

相关问题