如何保护 Grails 中的所有 REST 请求和响应

Posted

技术标签:

【中文标题】如何保护 Grails 中的所有 REST 请求和响应【英文标题】:How to Secure all REST request and response in Grails 【发布时间】:2013-11-17 01:02:10 【问题描述】:

我正在使用 grails/groovy 开发 REST API。我想保护所有进出的请求。我不确定加密和解密过程在哪里。我考虑了几个选项。

    从所有控制器端点调用解密 api - 我 想一个不好的选择 使用 Grails 过滤器 Shiro 过滤器 - 我们已经将 shiro 用于其他目的。是否可以扩展它以保护 REST 电话? Spring AOP 还有别的吗??

我不知道该选择哪一个,以确保我的所有 REST 请求和响应都是安全的。我正在考虑选择选项 #2。我希望其他人也会面临这个问题。任何建议都会对我做出决定有很大帮助。提前谢谢!!!

【问题讨论】:

一般来说,对于任何语言,这类问题都需要使用钩子。那么,Grails 有钩子吗? 什么版本的 Grails?当您说加密/解密时,您是指 SSL 还是其他加密算法?还是您只是想限制对具有足够角色/权限的经过身份验证的用户的访问? 您的安全要求是什么?我假设您应该使用 SSL,除非有效负载本身中有不应在接收系统中查看的敏感信息。通过 Grails 过滤器,您是指 Spring Security 吗?这是一个非常成熟的安全解决方案。 @BurtBeckwith,我正在使用 Grails 2.2,很快就会迁移到 2.3。我们将在 SSL 中调用 REST api。我已经对角色和权限进行了基本设置。但最重要的是,有效负载中的请求和响应将被加密。我们正在使用自己的算法进行加密和解密。这是在单独的层中,我应该能够从上述任何选项中调用它。 【参考方案1】:

我想过滤器是实现这一点的好方法,而 shiro 已经附带了ShiroSecurityFilters。在这些过滤器中,您可以轻松检查您的 REST 控制器并应用特殊处理。根据您需要加密的内容,考虑控制器类的beforeInterceptorafterInterceptor 也是有意义的:http://grails.org/doc/latest/ref/Controllers/beforeInterceptor.html

【讨论】:

【参考方案2】:

我认为这篇文章可以帮助到你:

Securing Grails REST service for use with mobile applications

不考虑移动部分,如果这是您的问题,请告诉我。

【讨论】:

以上是关于如何保护 Grails 中的所有 REST 请求和响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 GRAILS、GROOVY、ORACLE 和 API KEY 保护 REST API

使用 Spring Security Rest 插件保护 Grails Rest Api

使用 Shiro 插件保护 Grails 应用程序中的一些页面,但不是所有页面

如何处理 grails spring-security-rest 插件中的自定义身份验证异常?

如何保护移动应用程序的 API REST? (如果嗅探请求给了你“钥匙”)

带有 Spring Security 核心和 CORS 插件的 grails REST API 不适用于 OPTIONS http 方法请求