Class AuthenticatedUsers


  • public class AuthenticatedUsers
    extends InternalDirectoryServerPlugin
    This class provides a data structure which maps an authenticated user DN to the set of client connections authenticated as that user. Note that a single client connection may be registered with two different user DNs if the client has different authentication and authorization identities.

    This class also provides a mechanism for detecting changes to authenticated user entries and notifying the corresponding client connections so that they can update their cached versions.

    The user map is a ConcurrentHashMap, so registering and deregistering a connection (which happens on every bind and unbind) is lock-free at the map level and only contends at the granularity of a single hash bin. Each value is a concurrent set with O(1) add/remove, so many connections authenticating as the same user (e.g. an application service account) do not degrade: a copy-on-write set here would copy the whole connection array under the bin lock on every bind. The subtree operations triggered by changes to authenticated user entries (delete / modify / modify DN) are rare and scan the key set, which the concurrent map supports with weakly-consistent iteration.
    • Constructor Detail

      • AuthenticatedUsers

        public AuthenticatedUsers()
        Creates a new instance of this authenticated users object.
    • Method Detail

      • put

        public void put​(DN userDN,
                        ClientConnection clientConnection)
        Registers the provided user DN and client connection with this object.
        Parameters:
        userDN - The DN of the user associated with the provided client connection.
        clientConnection - The client connection over which the user is authenticated.
      • remove

        public void remove​(DN userDN,
                           ClientConnection clientConnection)
        Deregisters the provided user DN and client connection with this object.
        Parameters:
        userDN - The DN of the user associated with the provided client connection.
        clientConnection - The client connection over which the user is authenticated.
      • get

        public Set<ClientConnection> get​(DN userDN)
        Retrieves the set of client connections authenticated as the specified user. This method is only intended for internal testing use and should not be called for any other purpose.
        Parameters:
        userDN - The DN of the user for which to retrieve the corresponding set of client connections.
        Returns:
        The set of client connections authenticated as the specified user, or null if there are none.