java的用户注册框架

时间:2014-01-24 07:25:43

标签: java jpa tomee user-registration java-ee-web-profile

我感兴趣的是使用类似TomEE(Java EE 6 Web Profile的一个实现)来构建一个网站(在Eclipse或NetBeans这样的工具中),因为以下内容对我很有吸引力:

  • OOB数据层完成事务,POJO / JPA避免编写数据库层,连接池/缓存性能,乐观并发
  • 表示层的MVC概念(即JSF)
  • 与在其他JVM实例上运行的其他Java组件的通信功能

接下来,我想确定合并一些额外构建块的可行性,为我提供一个典型的面向Web的注册/登录机制的框架。

问题是,我担心如果我使用像Play,Vaadin或Grails这样的成熟网络框架,我可能会失去太多的灵活性和控制力。但是,我还想通过完全依靠自己实现以下机制来避免重新发明轮子:

理想情况下,我想要一种身份验证/授权机制,它使用可扩展的POJO层和基本样本页面。从我的研究看来,似乎JAAS可能不会削减它,而且如果像Apache Shiro,Spring Security,DeltaSpike或PicketLink这样的项目会给我推进前进方向或者如果这些是矫枉过正。

如果有人更熟悉java生态系统,请解释一下可以弥补Web配置文件的实现与上述功能(即用户注册/登录框架)之间的差距吗?

3 个答案:

答案 0 :(得分:3)

就我而言,Spring安全性是一种“低级”安全性:即用于防止授权不足的用户访问Web应用程序资源,例如访问部分代码或网页或其他Web应用“资源”。用户注册,CAPTCHA你可能自己实现(可能通过采用现有的组件/库,例如https://stackoverflow.com/a/220452/999264用于CAPTCHA等)并自己将其与spring security集成。

答案 1 :(得分:3)

检查包含Spring安全性扩展的Emmet框架,它提供了一些您提到的功能,尽管不是全部。如果您决定自己实现某些组件,可能需要查看其代码。

但是对于Java Spring Security似乎是部署最广泛的解决方案,因为它是高度可定制的 - 您可以将其配置为在数据库或LDAP上存储用户,根据角色或访问控制列表授予访问权限等。

我认为没有框架提供所有这些构建块,但是对于用户注册,例如,存在管理用户数据库并代表您发送注册交易电子邮件的外部服务,这些服务或多或少保证不会落在垃圾邮箱上。

此类服务的一个示例是mailjet

像Vaadin一样进入完整堆栈的一个优点是,这些框架将为您使用大多数OWASP最佳实践,例如使用CSRF令牌或避免脚本注入以及正确的转义等。

这有助于弥补缺乏灵活性,这通常比看上去要差。例如在Spring MVC中,几乎所有东西都是可插拔的,如果你不喜欢给定的小部件,你可以自定义它并编写自己的小部件。

答案 2 :(得分:2)

验证码,电子邮件验证和密码恢复不是核心安全服务的一部分,而是更多功能。核心服务是身份验证,授权和会话管理。

区分这些技术的一些方面是:

  • 使用特定技术会“绑定”您吗

  • 需要进行多少自定义开发。

  • 技术可以支持的规模和数量以及实现这一目标所需的努力。

技术

  • 使用弹簧通常意味着您需要将整个弹簧生态系统引入您的项目中,它为您做了很多事情并简化了开发,但它确实意味着与弹簧的紧密耦合。

  • Apache-Shiro相当强大,提供了一个非常好的抽象层,具有更松散的耦合,它集成了许多其他技术,包括Spring安全性,并提供了与JSF的web ui集成。

  • PicketLink是一项非常强大的技术,具有许多安全功能,但可能不像Shiro或Spring那样,如果您认为在未来的道路上您将希望您的安全框架成为企业级并实现诸如此类功能作为IDP。 Picketlink可能是一个非常好的选择。