This package provides authentication and authorization for a client. There is a default "no-op" implementation that is overridden by the Protobuf form of client/server communication.

This can also be overridden by _you_ in order to use a different mechanism on the server by setting the property geode.protocol-authentication-mode to the name of your implementation. This is the string returned by your class's implementationID method.

The Authenticator.authenticate() method is first given the i/o streams connected to the client so that it can interact with the client to get credentials. A simple mechanism might expect a username and password on the input stream.

Once the client is authenticated the Authenticator will be asked for an authorizer each time a message is received. The authorizer will be asked if the authenticated principal is authorized for permissions associated with the request sent by the client.

Note: the legacy "GemFire" client/server authorization mechanism is hardcoded to get credentials using a non-documented interchange and is not affected by this package. It interacts directly with the SecurityManager, as does the default mechanism used in Protobuf communications.