Gemfire JavaDocs_test
Class ExampleSecurityManager
- java.lang.Object
-
- org.apache.geode.examples.security.ExampleSecurityManager
-
- All Implemented Interfaces:
SecurityManager
public class ExampleSecurityManager extends java.lang.Object implements SecurityManager
This class provides a sample implementation ofSecurityManager
for authentication and authorization initialized from data provided as JSON.A Geode member must be configured with the following:
security-manager = org.apache.geode.examples.security.ExampleSecurityManager
The class can be initialized with from a JSON resource called
security.json
. This file must exist on the classpath, so members should be started with an appropriate--classpath
option.The format of the JSON for configuration is as follows:
{ "roles": [ { "name": "admin", "operationsAllowed": [ "CLUSTER:MANAGE", "DATA:MANAGE" ] }, { "name": "readRegionA", "operationsAllowed": [ "DATA:READ" ], "regions": ["RegionA", "RegionB"] } ], "users": [ { "name": "admin", "password": "secret", "roles": ["admin"] }, { "name": "guest", "password": "guest", "roles": ["readRegionA"] } ] }
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ExampleSecurityManager.Role
static class
ExampleSecurityManager.User
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
DEFAULT_JSON_FILE_NAME
static java.lang.String
SECURITY_JSON
-
Fields inherited from interface org.apache.geode.security.SecurityManager
PASSWORD, TOKEN, USER_NAME
-
-
Constructor Summary
Constructors Constructor Description ExampleSecurityManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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.boolean
authorize(java.lang.Object principal, ResourcePermission context)
Authorize the ResourcePermission for a given PrincipalExampleSecurityManager.User
getUser(java.lang.String user)
void
init(java.util.Properties securityProperties)
Initialize the SecurityManager.boolean
initializeFromJsonResource(java.lang.String jsonResource)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.geode.security.SecurityManager
close
-
-
-
-
Field Detail
-
SECURITY_JSON
public static final java.lang.String SECURITY_JSON
- See Also:
- Constant Field Values
-
DEFAULT_JSON_FILE_NAME
protected static final java.lang.String DEFAULT_JSON_FILE_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
authorize
public boolean authorize(java.lang.Object principal, ResourcePermission context)
Description copied from interface:SecurityManager
Authorize the ResourcePermission for a given Principal- Specified by:
authorize
in interfaceSecurityManager
- Parameters:
principal
- The principal that's requesting the permissioncontext
- The permission requested- Returns:
- true if authorized, false if not
-
init
public void init(java.util.Properties securityProperties) throws NotAuthorizedException
Description copied from interface:SecurityManager
Initialize the SecurityManager. This is invoked when a cache is created- Specified by:
init
in interfaceSecurityManager
- Parameters:
securityProperties
- the security properties obtained using a call toDistributedSystem.getSecurityProperties()
- Throws:
NotAuthorizedException
-
authenticate
public java.lang.Object authenticate(java.util.Properties credentials) throws AuthenticationFailedException
Description copied from interface:SecurityManager
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. if a channel supports token-based-authentication, the token will be passed to the security manager in the property with the key "security-token".- Specified by:
authenticate
in interfaceSecurityManager
- Parameters:
credentials
- it contains the security-username, security-password or security-token, as keys of the properties, also the properties generated by your AuthInitialize interface- Returns:
- a serializable principal object
- Throws:
AuthenticationFailedException
- if the credentials are invalid, this exception will be seen by the client.
-
initializeFromJsonResource
public boolean initializeFromJsonResource(java.lang.String jsonResource)
-
getUser
public ExampleSecurityManager.User getUser(java.lang.String user)
-
-