Java Generic User Management
GUM offers a framework and admin ui to manage Groups, Users, Roles, Permissions and access to resources.
Current Feature Set:
- supports groups
- supports users
- supports roles
- supports permissions and resources
- unit tested
- Built using Hibernate. Deployed on SQLServer, MySQL and HSQL. Supports all major databases.
- is documented to some degree (a feature? :)
- Web Admin Interface that won't win any awards on appearance, but works well.
- Bulk user uploads are supported.
- Displays users currently logged into system.
- Can be customized to integrate with existing user admin systems (has been deployed using pre-existing User tables)
Features planned
- Pluggable authentication.
- LDAP support
- Web service access
Requirements:
- JDK1.4 tested, will probably work with JDK1.2, JDK1.3 and JDK5.0
- Admin UI now requires Tomcat 5.x, but only because of Struts lib requirements.
- Any relation database supported by Hibernate
Limitations:
- Currently some data is cached in memory making the system
VERY fast. However a separte process writing to the GUM tables would
cause the server to get out of synch. This will be fixed in a future
release toggling caching.
- The system has not been rigorously tested for security holes. There are no known security holes but they likely exist.
GUM Administrator documentation
GUM Developer Documentation
Available from the Subversion repository via the command:
svn co http://phu008.um.us.sbphrd.com:8000/public/gum
The design of GUM was most heavily influenced by this article which
provided excellent distinctions regarding groups, users, roles,
permissions and resources:
http://www.javaworld.com/javaworld/jw-06-2001/jw-0615-tapestry_p.html
Note this Tapestry is very different than the project by the same name hosted at Apache.
History:
The majority of systems I've worked on have some notion of user and
permission management that typically has very similar requirements.
There are currently no widely available solutions to this problem.
So after implementing this solution multiple times and considering
carefully how to simplify the solution in a general way I've created
G.U.M. - Generic User Management.
Originally GUM was written using an XML files for persistence. This was done leveraging Castor
?
to marshal data to and from XML. Later requirements demanded
integration with an existing SQLServer db so I converted the
persistence layer using Hibernate
?.
Although designed with encapsulation and a pluggable persistence layer
in mind I was pleasently suprised to realize that I didn't end up
having to touch the core object - Group, User, Role, Permission. XML is
no longer supported as a persistence layer, but all major databases are
supported.