I still don't see DistributionConfig or Properties ever being passed into
GMSAuthenticator.
The following method is for testing only so gemfire properties are never
passed in by product code:
/**
* For testing only.
*/
Properties getCredentials(DistributedMember member, Properties secProps) {
The following method is the only one used by the product but it doesn't
pass any config in:
/**
* Get credential object for the given GemFire distributed member.
*
* @param member
* the target distributed member
* @return the credential object
*/
@Override
public Object getCredentials(InternalDistributedMember member) {
try {
return getCredentials(member, securityProps);
So the only source of config seems to be that securityProps variable, and
the declaration is the ONLY place where securityProps is ever set (and
nothing ever modifies it):
private Properties securityProps = getSecurityProps();
You can see that getSecurityProps() only ever reads from system properties:
Properties getSecurityProps() {
Properties props = new Properties();
Set keys = System.getProperties().keySet();
for (Object key: keys) {
String propKey = (String) key;
if (propKey.startsWith(secPrefix)) {
props.setProperty(propKey.substring(gemfireSysPrefixLen),
System.getProperty(propKey));
}
}
return props;
}
It would appear to me that the only way to successfully provide gemfire
security- propertes to GMSAuthenticator is via System properties.
-Kirk
On Tue, Jul 12, 2016 at 1:56 PM, Hitesh Khamesra <
[email protected]> wrote:
> One can specify following in gemfire.properties file
> /**
> * The static String definition of the
> <i>"security-peer-authenticator"</i>
> * property
> */
> String SECURITY_PEER_AUTHENTICATOR = SECURITY_PREFIX +
> "peer-authenticator";
>
>
> From: Kirk Lund <[email protected]>
> To: geode <[email protected]>
> Sent: Tuesday, July 12, 2016 11:56 AM
> Subject: GMSAuthenticator
>
> We're looking into modifying peer authentication to work with
> org.apache.geode.security.SecurityManager as well as the deprecated
> Authenticator and AccessControl.
>
> GMSAuthenticator appears to only work with Security Properties that are
> specified as System Properties with "gemfire." prefix. The other areas of
> the product that perform authentication appear to work whether the Security
> Properties are specified with either System Properties or a Properties
> instance passed into connect.
>
> The online documentation for enabling peer authentication says to use
> gemfire.properties, but from what I can tell the GMSAuthenticator won't
> work with gemfire.properties and will instead require you to specify System
> properties ala
> -Dgemfire.security-peer-authenticator=MyAuthenticator.create.
>
> Am I missing some code path that supports non-System properties in
> GMSAuthenticator? Or is peer authentication limited to only working with
> System properties?
>
> Thanks,
> Kirk
>
>
>
>