I am looking into how Openfire deals with users. At the moment I am using an LDAP server as a user provider for Openfire, but I am running into difficulties because it is treated as read-only. I am using the userservice plugin to deal with user data from external services, but obviously it cannot modify any information for a user because I use LDAP, so that is not very helpful. Having looked at the source code of Openfire, this appears to be simply because these operations have not been implemented, for example createUser, deleteUser:
Openfire/LdapUserProvider.java at master · igniterealtime/Openfire · GitHub
I am thinking about patching the Openfire source code so that it supports these operations for LDAP, but is there a good technical reason why they were not implemented in the first place? What do the original developers know about LDAP that I do not? If it is inadvisable to patch the code in this way, what is the best approach for working with LDAP and modifying user data? I have heard (and also seen in the source code) that Openfire has a user cache, so deleting directly from the database is not recommended because it would cause problems with that.
Also, I am using Openfire 3.9.1 because I have heard about the problems with LDAP in Openfire 3.9.3 and I am also using the Hazelcast clustering plugin to allow several Openfire servers to work together.
Your advice would be appreciated.