@InterfaceStability.Unstable @InterfaceAudience.Private public class ZKSignerSecretProvider extends RolloverSignerSecretProvider
It works by storing the secrets and next rollover time in a ZooKeeper znode.
All ZKSignerSecretProviders looking at that znode will use those
secrets and next rollover time to ensure they are synchronized. There is no
"leader" -- any of the ZKSignerSecretProviders can choose the next secret;
which one is indeterminate. Kerberos-based ACLs can also be enforced to
prevent a malicious third-party from getting or setting the secrets. It uses
its own CuratorFramework client for talking to ZooKeeper. If you want to use
your own Curator client, you can pass it to ZKSignerSecretProvider; see
AuthenticationFilter
for more details.
Details of the configurations are listed on Configuration Page
Modifier and Type | Class and Description |
---|---|
static class |
ZKSignerSecretProvider.JaasConfiguration
Creates a programmatic version of a jaas.conf file.
|
Modifier and Type | Field and Description |
---|---|
static String |
DISCONNECT_FROM_ZOOKEEPER_ON_SHUTDOWN
Constant for the property that specifies whether or not the Curator client
should disconnect from ZooKeeper on shutdown.
|
static String |
ZOOKEEPER_AUTH_TYPE
Constant for the property that specifies the auth type to use.
|
static String |
ZOOKEEPER_CONNECTION_STRING
Constant for the property that specifies the ZooKeeper connection string.
|
static String |
ZOOKEEPER_KERBEROS_KEYTAB
Constant for the property that specifies the Kerberos keytab file.
|
static String |
ZOOKEEPER_KERBEROS_PRINCIPAL
Constant for the property that specifies the Kerberos principal.
|
static String |
ZOOKEEPER_PATH
Constant for the property that specifies the ZooKeeper path.
|
static String |
ZOOKEEPER_SIGNER_SECRET_PROVIDER_CURATOR_CLIENT_ATTRIBUTE
Constant for the ServletContext attribute that can be used for providing a
custom CuratorFramework client.
|
Constructor and Description |
---|
ZKSignerSecretProvider() |
ZKSignerSecretProvider(long seed)
This constructor lets you set the seed of the Random Number Generator and
is meant for testing.
|
Modifier and Type | Method and Description |
---|---|
protected org.apache.curator.framework.CuratorFramework |
createCuratorClient(Properties config)
This method creates the Curator client and connects to ZooKeeper.
|
void |
destroy()
Disconnects from ZooKeeper unless told not to.
|
protected byte[] |
generateNewSecret()
Subclasses should implement this to return a new secret.
|
protected byte[] |
generateRandomSecret() |
void |
init(Properties config,
javax.servlet.ServletContext servletContext,
long tokenValidity)
Initialize the SignerSecretProvider.
|
protected void |
rollSecret()
Rolls the secret.
|
getAllSecrets, getCurrentSecret, initSecrets, startScheduler
public static final String ZOOKEEPER_CONNECTION_STRING
public static final String ZOOKEEPER_PATH
public static final String ZOOKEEPER_AUTH_TYPE
public static final String ZOOKEEPER_KERBEROS_KEYTAB
public static final String ZOOKEEPER_KERBEROS_PRINCIPAL
public static final String DISCONNECT_FROM_ZOOKEEPER_ON_SHUTDOWN
public static final String ZOOKEEPER_SIGNER_SECRET_PROVIDER_CURATOR_CLIENT_ATTRIBUTE
public ZKSignerSecretProvider()
public ZKSignerSecretProvider(long seed)
seed
- the seed for the random number generatorpublic void init(Properties config, javax.servlet.ServletContext servletContext, long tokenValidity) throws Exception
RolloverSignerSecretProvider
init
in class RolloverSignerSecretProvider
config
- configuration propertiesservletContext
- servlet contexttokenValidity
- The amount of time a token is valid forException
- thrown if an error occurredpublic void destroy()
destroy
in class RolloverSignerSecretProvider
protected void rollSecret()
RolloverSignerSecretProvider
rollSecret
in class RolloverSignerSecretProvider
protected byte[] generateNewSecret()
RolloverSignerSecretProvider
generateNewSecret
in class RolloverSignerSecretProvider
protected byte[] generateRandomSecret()
protected org.apache.curator.framework.CuratorFramework createCuratorClient(Properties config) throws Exception
config
- configuration propertiesException
- thrown if an error occurredCopyright © 2022 Apache Software Foundation. All rights reserved.