I recently made an adjustment in a branch of my fork to allow my authentication server to look for WoW passwords in my local LDAP directory (link). It was a fun enough exercise that allowed me to learn some new things about C and OpenLDAP, but now after the feature is in a working state I’m worried that I went with an approach that was much more complicated than it needed to be.
I extended my LDAP schema to have an additional field for a WoW password, and made some adjustments to the web app that I use to allow users to change their password. When a user changes their password, their WoW password property in the directory is updated to reflect their new password.
When the user attempts to log into WoW, the server attempts to pull user properties (UID, E-mail, WoW Password) via LDAP. If it gets the UID and password (e-mail is optional), it will create the the account if needed and return the appropriate information out of the database. The user’s new LDAP password is also saved to the database. If any part of this process fails, the server will fall back to attempting to use the database.
My concern is that a much less overkill solution would be to make some extra changes to my password-changer to do the password-changing and account creation if necessary without having to do a rebuild of the TC server.
Potential Pro’s of LDAP Implementation:
[ul][li]Possible TLS/SSL encryption of entire connection.[/li]
[li]Group-based validation (NYI).[/li]
[li]Would support multiple realmlist servers retroactively (i.e. a user could instantly sign into an authentication server set up after they set their last new password), possibly multiple cores/expansions (though each of these would need to be outfitted with a similar patch, meaning more work).[/li]
[/ul]
Cons of LDAP:
[ul][li]The LDAP server is contacted with every logon attempt, as opposed to only one database connection when the user changes their password. If the user is interested in making use of the server at all, I’d be very surprised if password changes outnumbered WoW connections.[/li]
[li]Introduces a new libary, which would probably need extra testing to be considered stable.[/li]
[/ul]
What is your opinion of this feature? If it is overkill as-is, are there any features that you can think of that would make it worthwhile as opposed to a utility that writes to the database? If you use some sort of shared authentication setup to link your server to your local network, which approach did you go with?