在 REST 服务(无状态)中验证令牌 ST Apereo CAS

Validate token ST Apereo CAS in REST service (Stateless)

抱歉我的英语不好。

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

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

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

enter image description here

谢谢。

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

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

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

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

跟踪路线可能如下所示:

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

See this 了解详情。