使用 CAS 保护 Spring Boot Rest 服务
Posted
技术标签:
【中文标题】使用 CAS 保护 Spring Boot Rest 服务【英文标题】:Securing Spring boot Rest services with CAS 【发布时间】:2016-04-29 12:52:37 【问题描述】:朋友们,
最近我使用 spring-boot 创建了一个 Web 服务应用程序,现在它几乎没有不安全的入口点。 (这是一个纯粹的基于休息的应用程序,只有休息入口点,没有任何 UI 组件)。
现在我想在此应用程序中添加 CAS 客户端,以保护其余入口点。
我的 CAS 服务器已准备就绪,并且已启动并正在运行。而且我已经在我的 cas 服务器中配置了 CAS Rest 协议以通过 rest 调用访问 TGT/ST,我正在计划只使用 rest 调用而不是使用登录页面。
因此,当用户尝试访问我的休息应用程序时,我将在内部调用 CAS 休息入口点(通过使用 restTemplate)来验证用户凭据并生成 TGT 和 ST。
可用的 CAS 入口点是(来自 jasig 参考文档),
-
POST /cas/v1/tickets HTTP/1.0
username=battags&password=password&additionalParam1=paramvalue
POST /cas/v1/tickets/TGT id HTTP/1.0
service=服务 url 的表单编码参数
删除 /cas/v1/tickets/TGT-fdsjfsdfjkalfewrihfdhfaie HTTP/1.0
我想,我对这部分不太清楚。如果我错了,请纠正我。
现在我的问题是,我应该怎么做才能在我的 Spring Boot 应用程序中添加 ST 票证验证器?我是否需要使用 spring-security 添加任何过滤器?或者我是否需要调用任何其他 api 来验证 ST? 请指导我进一步进行。
【问题讨论】:
【参考方案1】:您可以使用现有的Spring boot cas starter:
cas security spring boot starter cas client autoconfig support这将为您和 神奇地 配置您的 spring boot 应用程序与 CAS 身份验证(因此您的应用程序将能够轻松读取 ST
或 PT
)。
我是cas security spring boot starter 的作者,所以我不会影响您的选择,但与该项目的主要区别在于Unicon 开发的cas client autoconfig support 是关于Spring 安全性 整合。
确实cas security spring boot starter 完全符合spring security,因此您将能够使用您从spring security 中了解的任何功能。而cas client autoconfig support 将实例化和配置 Apereo (Jasig) 过滤器,该过滤器并非旨在与 Spring 安全 一起使用。
【讨论】:
【参考方案2】:除非您想从您的 Web 服务调用另一个服务,否则您不需要服务票证。通过 CAS REST API 验证收到的凭据就足够了。
如果您正在寻找一个安全库来通过 CAS REST API 保护您的 Web 服务,您应该尝试一下:https://github.com/pac4j/spring-webmvc-pac4j,尤其是这个配置:https://github.com/pac4j/spring-webmvc-pac4j-demo/blob/master/src/main/webapp/WEB-INF/demo-servlet.xml#L74
【讨论】:
感谢您的宝贵建议@jleleu 我之前没有尝试过pac4j。现在让我试试这个新的。 嗨@jleleu 我试过spring-webmvc-pac4j-boot-demo 它对我有用。谢谢。但是我是否需要在所有请求中发送用户凭据(用户名和密码)?我可以使用令牌来验证经过身份验证的用户吗?请澄清 当然。 CasRestBAsicAuthClient 将 login/pwd 作为基本身份验证并通过 CAS 服务器进行身份验证。使用 JwtGenerator 从经过身份验证的用户配置文件生成令牌。添加带有 JwtAuthenticator 的 ParameterClient 以从令牌进行身份验证。更多帮助:groups.google.com/forum/?hl=en#!forum/pac4j-users以上是关于使用 CAS 保护 Spring Boot Rest 服务的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CAS 针对 Spring Boot 后端授权 Angular 5 应用程序
spring boot应用集成cas单点登录,post请求拿不到参数
如何使用 Spring MVC & Security、Jasig CAS 和 JSP 视图在 Spring Boot 2 中配置 UTF-8?