SecurityManager (Apache Geode 1.7.0)
Date: 2018-09-27

org.apache.geode.security

## Interface SecurityManager

- All Known Implementing Classes:
    ExampleSecurityManager, SimpleSecurityManager, SimpleTestSecurityManager, SpySecurityManager, TestSecurityManager

      public interface SecurityManager

  User implementation of a authentication/authorization logic for Integrated Security. The implementation will guard client/server, JMX, Pulse, GFSH commands
  Since:
    Geode 1.0

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `authenticate(java.util.Properties credentials)` Verify the credentials provided in the properties Your security manager needs to validate credentials coming from all communication channels.
    `default boolean` | `authorize(java.lang.Object principal, ResourcePermission permission)` Authorize the ResourcePermission for a given Principal
    `default void` | `close()` Close any resources used by the SecurityManager, called when a cache is closed.
    `default void` | `init(java.util.Properties securityProps)` Initialize the SecurityManager.

- - ### Method Detail

    - #### init

          default void init(java.util.Properties securityProps)

      Initialize the SecurityManager. This is invoked when a cache is created
      Parameters:
        `securityProps` - the security properties obtained using a call to `DistributedSystem.getSecurityProperties()`
      Throws:
        `AuthenticationFailedException` - if some exception occurs during the initialization

    - #### authenticate

          java.lang.Object authenticate(java.util.Properties credentials)
                                 throws AuthenticationFailedException

      Verify the credentials provided in the properties Your security manager needs to validate credentials coming from all communication channels. If you use AuthInitialize to generate your client/peer credentials, then the input of this method is the output of your AuthInitialize.getCredentials method. But remember that this method will also need to validate credentials coming from gfsh/jmx/rest client, the framework is putting the username/password under security-username and security-password keys in the property, so your securityManager implementation needs to validate these kind of properties as well.
      Parameters:
        `credentials` - it contains the security-username and security-password as keys of the properties, also the properties generated by your AuthInitialize interface
      Returns:
        a serializable principal object
      Throws:
        `AuthenticationFailedException`

    - #### authorize

          default boolean authorize(java.lang.Object principal,
                                    ResourcePermission permission)

      Authorize the ResourcePermission for a given Principal
      Parameters:
        `principal` - The principal that's requesting the permission
        `permission` - The permission requested
      Returns:
        true if authorized, false if not

    - #### close

          default void close()

      Close any resources used by the SecurityManager, called when a cache is closed.