Shared Code for Login Users and Management
Discussion points
Wish list
Interchangeable backends
An implementation should have the ability to run off of the local filesystem (for a smaller group sized app) or communicate with a remote third-party server. To some extent, the former may be more important.
Also, we don't want to get locked into depending on a third-party for access (and neither should people downstream from us).
Reusable user identities
A person could have a single login across multiple GO applications. Similarly, if somebody did implement their own backend server, they'd be able to use it for single identities across multiple pieces of our software (or use it as a base for their own).
Simple management
It would be nice if there was an easy easy to add and drop users, as well as control what permissions they had for applications that used this system.
Also, role-based users would be a good way to handle application permissions.
Simple implementation (many languages)
It would be very nice if this was not locked into a single language. This would either mean that is relatively easy and has been implemented many times with a lot of client and server libraries (like OpenID) or had a web API that makes it easy to interoperate with alien software.
Easy maintenance
The simpler the implementation the better. A layer of software and a small sqlite3 database that can be easily copied = good. Multiple high-availability servers needing synchronized clocks = bad.
One-stop shopping
It would be nice to handle everything through a single unified interface (thinking about Drupal users and permissions here).
Risks
Things that we're particularly worried about in an implementation.
Accidental exposure
This would cover things like web crawlers somehow finding an "erase all" link
Hacking
I think in general we're not super worried about security (for example, a man in the middle after login was something that got a lot of shrugs), but want the general bases covered. As we're not security experts, reusing a tested stack by somebody else would be nice.
Other practical concerns
We're not super happy about running and maintaining a database for logins. But this can be punted for now as we want local use and the immediate applications are of such small scope.
Packages considered
Login/Authentication | Roles/Auth | Notes |
---|---|---|
OpenID | OAuth | Unsure how to tie together and handle management |
Drupal | Seems heavy when all we would want is the user code | |
LDAP | ... | |
Stanford WebAuth | Cookie-based; open source; requires Apache and Kerboros or LDAP |
Consumers
- GOLD database administration
- TermGenie