I would suggest openID, and if necessary to exchange data with external systems, oauth. I think that users will tend to respond well to openID for authentication, as opposed to being asked to unlock their user credentials.
I would recommend dyuproject if you are using java.
source
share