【问题标题】:Validate token ST Apereo CAS in REST service (Stateless)在 REST 服务中验证令牌 ST Apereo CAS(无状态)
【发布时间】:2023-04-09 09:35:01
【问题描述】:

我很抱歉我的英语不好。

我有工具 Apereo CAS 用作登录 SSO。当我与应用程序状态一起使用时,这非常有效。但我想为特定场景调用 API REST(无状态)并验证登录的用户(并使用您在服务上的信息)。我的后端 API 是使用 Spring Boot 开发的。有人需要类似的情况吗?

Ps:此 API 将由前端和没有前端的服务访问,因此我将无法使用 cookie。

序列图来举例说明我的想法:

enter image description here

谢谢。

【问题讨论】:

    标签: java spring-boot single-sign-on cas


    【解决方案1】:

    您的前端应用程序需要向 CAS 服务器请求代理身份验证。

    代理身份验证的更常见用例之一是能够为同样受 CAS 保护的后端 [基于 REST] 服务获取票证。场景通常是:

    • 用户面临受 CAS 保护的应用程序 A。
    • 后端的应用程序 A 需要联系服务 S 以生成数据。
    • 服务 S 本身受 CAS 自身保护。

    由于前端通过不涉及浏览器的服务器到服务方法在后端联系服务,因此后端将无法识别 SSO 会话已经存在。在这些情况下,前端需要执行代理才能为后端获取代理票证。代理票证被传递到后端的相关端点,因此它可以通过 CAS 检索和验证它,并最终产生响应。

    跟踪路径可能如下所示:

    • 浏览器导航到前端。
    • 前端重定向到 CAS。
    • CAS 使用 ST 进行身份验证并重定向回前端。
    • 前端尝试验证 ST,并请求 PGT。
    • CAS 确认 ST 验证,并颁发代理授权票证 PGT。
    • 前端要求 CAS 为后端 API 生成一个 PT,在其请求中提供 PGT。
    • CAS 为后端 API 生成 PT。
    • 前端联系服务 S 端点,在请求中传递 PT。
    • 后端 API 尝试通过 CAS 验证 PT。
    • CAS 验证 PT 并产生成功的响应。
    • 后端 API 接收响应,并为前端生成数据。
    • A 接收数据并在浏览器中显示。

    See this了解详情。

    【讨论】:

    • 感谢您的回答。
    猜你喜欢
    • 2018-07-11
    • 2020-04-19
    • 2020-06-24
    • 2021-12-27
    • 2022-11-08
    • 2012-02-14
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多