com.gemstone.gemfire.security.Authenticator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gemfire-core Show documentation
Show all versions of gemfire-core Show documentation
SnappyData store based off Pivotal GemFireXD
/*
* Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you
* may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License. See accompanying
* LICENSE file.
*/
package com.gemstone.gemfire.security;
import java.util.Properties;
import java.security.Principal;
import com.gemstone.gemfire.LogWriter;
import com.gemstone.gemfire.cache.CacheCallback;
import com.gemstone.gemfire.distributed.DistributedMember;
import com.gemstone.gemfire.distributed.DistributedSystem;
/**
* Specifies the mechanism to verify credentials for a client or peer.
* Implementations should register name of the static creation function as the
* security-peer-authenticator
system property with all the
* locators in the distributed system for peer authentication, and as
* security-client-authenticator
for client authentication. For
* P2P an object is initialized on the group coordinator for each member during
* the {@link DistributedSystem#connect(Properties)} call of a new member. For
* client-server, an object of this class is created for each connection during
* the client-server handshake.
*
* The static creation function should have the following signature:
* public static Authenticator [method-name]();
i.e. it should be
* a zero argument function.
*
* @author Sumedh Wale
* @since 5.5
*/
public interface Authenticator extends CacheCallback {
/**
* Initialize the callback for a client/peer. This is invoked when a new
* connection from a client/peer is created with the host.
*
* @param securityProps
* the security properties obtained using a call to
* {@link DistributedSystem#getSecurityProperties}
* @param systemLogger
* {@link LogWriter} for system logs
* @param securityLogger
* {@link LogWriter} for security logs
*
* @throws AuthenticationFailedException
* if some exception occurs during the initialization
*/
public void init(Properties securityProps, LogWriter systemLogger,
LogWriter securityLogger) throws AuthenticationFailedException;
/**
* Verify the credentials provided in the properties for the client/peer as
* specified in member ID and returns the principal associated with the
* client/peer.
*
* @param props
* the credentials of the client/peer as a set of property
* key/values
* @param member
* the {@link DistributedMember} object of the connecting
* client/peer member. NULL when invoked locally on the
* member initiating the authentication request.
*
* @return the principal for the client/peer when authentication succeeded
*
* @throws AuthenticationFailedException
* If the authentication of the client/peer fails.
*/
public Principal authenticate(Properties props, DistributedMember member)
throws AuthenticationFailedException;
}