Scala Web 应用程序安全性

Posted

技术标签:

【中文标题】Scala Web 应用程序安全性【英文标题】:Scala web application security 【发布时间】:2011-07-29 03:01:59 【问题描述】:

对于 Scala Web 应用程序中的 Web 安全,有哪些好的框架选择。我们想尝试 Scala Web 开发,但还没有找到好的 Scala Web 应用安全框架。

从 Java 方面,我至少了解 Spring Security 和 Apache Shiro。

您有使用 Scala Web 应用程序安全框架或使用 Scala 上下文中的 Spring Security / Apache Shiro 的经验吗?

【问题讨论】:

【参考方案1】:

Lift 具有安全性,正如 Lift 的作者 David Pollak 所描述的 here。

【讨论】:

感谢您的回答,但我也在寻找独立于网络框架的通用方法【参考方案2】:

我在小型 Scala Web 应用程序中使用了 Spring Security。我在开始学习 Scala 时创建了它,并尝试使用完整的 Java 堆栈:Spring MVC + Spring + Spring Security + Hibernate + BlazeDS(我在这个项目中也将 Flex 用于前端)。现在我可以说这是非常好的和积极的体验。一般来说,问题是 scala 与 Spring 和 Hibernate 的集成有多好。我不得不在实体中使用@BeanProperty@BeanInfo 和java 集合。

但我没有遇到任何来自 spring 安全方面的真正问题。它按预期工作。我只记得 Spring AOP 的一个小问题:服务类通过 BlazeDS 将它们的方法发布到 flex 应用程序。我还使用 Spring Security 的对象 ACL(使用 <security:intercept-methods /><security:protect />)保护它们。当然,由于 AOP 的魔力,所有这些东西都是可能的。所以我注意到这个有线 Spring AOP 的行为——如果你的类实现了一些接口,那么它将使用 JDK 的代理来实现它们并将所有调用委托给目标,但是如果类没有实现任何接口,那么它将使用 cglib 来扩展你的类并委托每个方法调用。问题是我的公共服务类没有实现任何接口,但是 AOP 不能正常工作。原因是所有 Scala 类都实现了ScalaObject 接口。所以我为所有公共服务创建了新的特征来解决这个问题(我还没有找到任何配置 Spring AOP 的方法——似乎这种行为是硬编码的)。

如您所见,将 Spring Security 与 Scala 结合使用不是问题。我相信使用 Apache Shiro 应该更容易,因为它声称完全独立于容器或环境(我听说可以在 Spring 之外使用 Spring Security,但我也听说这很痛苦)。通常,在 Scala 中,您可以在 Java 中归档所有内容。问题是生成的代码会有多漂亮/惯用/纯/无副作用。

顺便说一句,有一个将 Lift 与 Apache Shiro 集成的新项目:lift-shiro。 Here你也可以找到small blog post了解它。

希望这会有所帮助。

【讨论】:

感谢您的回答。关于 ScalaObject 代理的问题真的很值得了解。

以上是关于Scala Web 应用程序安全性的主要内容,如果未能解决你的问题,请参考以下文章

应用安全 - Web框架 - Apache Flink - 漏洞汇总

Scala 上的 Web 应用程序开发 [关闭]

什么Scala Web框架可用? [关闭]

类型安全配置:从打包的 scala 应用程序的外部路径加载附加配置

以JavaKotlin和Scala编写基本Spring Web应用的比较

了解Java基础原理