Fix connections left open and bind issue in GetGroupsOfUser #19
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Two issues I've found while using this library:
If you attempt to use
GetGroupsOfUser
without first callingAuthenticate
, you will not have a proper read-only connection to the LDAP server with with to perform a query. In my use-case, I'm not trying to authenticate a user (this is already done by another system). I just need to check the user's group membership to perform RBAC.The default behavior of this library is to make a connection and then leave it open. When that connection times out or is otherwise broken, all subsequent calls will fail with an error:
LDAP Result Code 200 "Network Error": ldap: connection closed
. Since the user of this library never callsConnect()
it doesn't make sense for them to manage their own reconnection process. This change forces the library to close its connection after each method call. If it's necessary for callers of this library to have persistent connections for performance reasons then it should probably be refactored to removeConnect
/Close
out of theAuthenticate
andGetGroupsOfUser
methods altogether and let callers handle their own connect/disconnect.