I am interested in using something like TomEE (an implementation of the Java EE 6 Web Profile) for building a web site (in a tool like Eclipse or NetBeans), as the following things are appealing to me:
- OOB data layer complete with transactions, POJO/JPA to avoid writing a database layer, connection pooling/caching for performance, optimistic concurrency
- MVC concepts for presentation layer (i.e. JSF)
- communication capabilities to other java components running on other JVM instances
Next, I'd like to determine the feasibility of incorporating some additional building blocks to give me a framework for a typical web-facing registration/login mechanism.
The thing is, I'm concerned I might lose too much flexibility and control if I went with a full-blown web framework like Play, Vaadin, or Grails. However, I'd also like to avoid having to reinvent the wheel by implementing the following mechanisms entirely on my own:
- Email verification during registration
- Lost password/account recovery [Update: Emmet]
- CAPTCHA during registration [Update: Spring Security 3: Integrating reCAPTCHA Service, Emmet]
- Peer-reviewed implementation of password handling/storage
- Nice to have: Alignment with OWASP security best practices
- Nice to have: Basic user administration [Update: Emmet]
Ideally, I'd like an authentication/authorization mechanism that uses an extensible POJO layer complete with basic sample pages. From my research it seems like JAAS probably isn't going to cut it, and I'm a bit fuzzy on if projects like Apache Shiro, Spring Security, DeltaSpike, or PicketLink would give me a push in the forwards direction or if these are overkill.
Could someone more familiar with the java ecosystem please explain what is available to bridge the gap between an implementation of the web profile and the features described above (namely, a user registration/login framework)?