【问题标题】:How to read CAS ticket validation XML using spring security?如何使用 Spring Security 读取 CAS 票证验证 XML?
【发布时间】:2021-05-14 11:14:27
【问题描述】:

我有一个 Spring Boot 应用程序并使用 Java Apereo CAS Client(版本 3.6.2)来使用 CAS server 进行身份验证。换句话说,我想把我的应用变成一个 CAS 客户端,我没有自己设置 CAS 服务器。

我检查了对 CAS 服务器的调用列表:

第一次调用 CAS 服务器,但我没有看到第二次调用服务器进行票证验证(即调用https://cas-server-address/cas/serviceValidate URL),它将返回一个带有user 的 XML 文档和authtype 我要提取并存储在数据库中的属性。

我有两个问题:

  1. 为什么没有第二次调用 CAS 服务器进行票证验证?隐藏了吗?
  2. 如何从 XML 文档中提取 userauthtype 属性并将它们存储在数据库中?

【问题讨论】:

    标签: spring spring-boot spring-security cas


    【解决方案1】:

    为什么没有第二次调用 CAS 服务器进行票证验证?

    有。第二个调用是从应用服务器到 CAS 服务器的反向通道调用。根据定义,这不是您在浏览器中看到的内容。此调用转到幕后的 CAS 服务器,以验证在第一段中收到的服务票证(即ST-xyz)。 Java CAS client library 应该会自动为您执行此操作,您可以在日志中进行验证。

    如果您没有看到这种情况发生,则说明您的配置设置不正确或在此过程中出现错误。

    隐藏了吗?

    对浏览器隐藏,因为它是一个反向通道调用。有关发生情况和原因的更多详细信息,请参阅CAS protocol

    如何从 XML 文档中提取 user 和 authtype 属性并将它们存储在数据库中?

    Java CAS client library 通常会提取用户 ID 和其他属性。然后,用户 ID 将在 REMOTE-USER 标头下可用,可以通过 http 请求对象获取。如果您可以访问 http 会话,您还可以从包含 CAS 有效负载的会话中获取最终断言:

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

    举个更实际的例子,see this

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 2012-02-08
      • 1970-01-01
      • 2012-04-06
      • 2019-08-22
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多