Class PassThroughAuthenticationHandler
- java.lang.Object
-
- com.unboundid.directory.sdk.ds.api.PassThroughAuthenticationHandler
-
- All Implemented Interfaces:
Configurable
,ExampleUsageProvider
,Reconfigurable<PassThroughAuthenticationHandlerConfig>
,UnboundIDExtension
@Extensible @DirectoryServerExtension @ThreadSafety(level=INTERFACE_THREADSAFE) public abstract class PassThroughAuthenticationHandler extends java.lang.Object implements UnboundIDExtension, Reconfigurable<PassThroughAuthenticationHandlerConfig>, ExampleUsageProvider
This class defines an API that must be implemented by extensions that attempt to pass through authentication to an external service.
Configuring Pass-Through Authentication Handlers
In order to configure a pass-through authentication handler created using this API, use a command like:dsconfig create-pass-through-authentication-handler \ --handler-name "{handler-name}" \ --type third-party \ --set "extension-class:{class-name}" \ --set "extension-argument:{name=value}"
where "{handler-name}" is the name to use for the pass-through authentication handler instance, "{class-name}" is the fully-qualified name of the Java class that extendscom.unboundid.directory.sdk.ds.api.PassThroughAuthenticationHandler
, and "{name=value}" represents name-value pairs for any arguments to provide to the handler. If multiple arguments should be provided to the pass-through authentication handler, then the "--set extension-argument:{name=value}
" option should be provided multiple times.
-
-
Constructor Summary
Constructors Constructor Description PassThroughAuthenticationHandler()
Creates a new instance of this pass-through authentication handler.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description ResultCode
applyConfiguration(PassThroughAuthenticationHandlerConfig config, ArgumentParser parser, java.util.List<java.lang.String> adminActionsRequired, java.util.List<java.lang.String> messages)
Attempts to apply the configuration from the provided argument parser to this extension.abstract PassThroughAuthenticationResult
attemptPassThroughAuthentication(OperationContext operationContext, SimpleBindRequest bindRequest, Entry localEntry)
Attempts to pass through authentication for the provided bind operation to the external service.void
defineConfigArguments(ArgumentParser parser)
Updates the provided argument parser to define any configuration arguments which may be used by this extension.void
finalizePassThroughAuthenticationHandler()
Performs any cleanup which may be necessary when this pass-through authentication handler is to be taken out of service.abstract java.lang.String[]
getExtensionDescription()
Retrieves a human-readable description for this extension.abstract java.lang.String
getExtensionName()
Retrieves a human-readable name for this extension.java.util.List<Attribute>
getMonitorAttributes()
Retrieves a list of any handler-specific attributes that should be included in the monitor entry for the associated pluggable pass-through authentication plugin.void
initializePassThroughAuthenticationHandler(DirectoryServerContext serverContext, PassThroughAuthenticationHandlerConfig config, ArgumentParser parser)
Initializes this pass-through authentication handler.boolean
isConfigurationAcceptable(PassThroughAuthenticationHandlerConfig config, ArgumentParser parser, java.util.List<java.lang.String> unacceptableReasons)
Indicates whether the configuration represented by the provided argument parser is acceptable for use by this extension.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.unboundid.directory.sdk.common.internal.ExampleUsageProvider
getExamplesArgumentSets
-
-
-
-
Constructor Detail
-
PassThroughAuthenticationHandler
public PassThroughAuthenticationHandler()
Creates a new instance of this pass-through authentication handler. All pass-through authentication handler implementations must include a default constructor, but any initialization should generally be done in theinitializePassThroughAuthenticationHandler(com.unboundid.directory.sdk.ds.types.DirectoryServerContext, com.unboundid.directory.sdk.ds.config.PassThroughAuthenticationHandlerConfig, com.unboundid.util.args.ArgumentParser)
method.
-
-
Method Detail
-
getExtensionName
@NotNull public abstract java.lang.String getExtensionName()
Retrieves a human-readable name for this extension.- Specified by:
getExtensionName
in interfaceUnboundIDExtension
- Returns:
- A human-readable name for this extension.
-
getExtensionDescription
@Nullable public abstract java.lang.String[] getExtensionDescription()
Retrieves a human-readable description for this extension. Each element of the array that is returned will be considered a separate paragraph in generated documentation.- Specified by:
getExtensionDescription
in interfaceUnboundIDExtension
- Returns:
- A human-readable description for this extension, or
null
or an empty array if no description should be available.
-
defineConfigArguments
public void defineConfigArguments(@NotNull ArgumentParser parser) throws ArgumentException
Updates the provided argument parser to define any configuration arguments which may be used by this extension. The argument parser may also be updated to define relationships between arguments (e.g., to specify required, exclusive, or dependent argument sets).- Specified by:
defineConfigArguments
in interfaceConfigurable
- Parameters:
parser
- The argument parser to be updated with the configuration arguments which may be used by this extension.- Throws:
ArgumentException
- If a problem is encountered while updating the provided argument parser.
-
initializePassThroughAuthenticationHandler
public void initializePassThroughAuthenticationHandler(@NotNull DirectoryServerContext serverContext, @NotNull PassThroughAuthenticationHandlerConfig config, @NotNull ArgumentParser parser) throws LDAPException
Initializes this pass-through authentication handler.- Parameters:
serverContext
- A handle to the server context for the server in which this extension is running. It will not benull
.config
- The general configuration for this pass-through authentication handler. It will not benull
.parser
- The argument parser which has been initialized from the configuration for this pass-through authentication handler. It will not benull
.- Throws:
LDAPException
- If a problem occurs while initializing this pass-through authentication handler.
-
isConfigurationAcceptable
public boolean isConfigurationAcceptable(@NotNull PassThroughAuthenticationHandlerConfig config, @NotNull ArgumentParser parser, @NotNull java.util.List<java.lang.String> unacceptableReasons)
Indicates whether the configuration represented by the provided argument parser is acceptable for use by this extension. The parser will have been used to parse any configuration available for this extension, and any automatic validation will have been performed. This method may be used to perform any more complex validation which cannot be performed automatically by the argument parser.- Specified by:
isConfigurationAcceptable
in interfaceReconfigurable<PassThroughAuthenticationHandlerConfig>
- Parameters:
config
- The general configuration for this extension.parser
- The argument parser that has been used to parse the proposed configuration for this extension.unacceptableReasons
- A list to which messages may be added to provide additional information about why the provided configuration is not acceptable.- Returns:
true
if the configuration in the provided argument parser appears to be acceptable, orfalse
if not.
-
applyConfiguration
@NotNull public ResultCode applyConfiguration(@NotNull PassThroughAuthenticationHandlerConfig config, @NotNull ArgumentParser parser, @NotNull java.util.List<java.lang.String> adminActionsRequired, @NotNull java.util.List<java.lang.String> messages)
Attempts to apply the configuration from the provided argument parser to this extension.- Specified by:
applyConfiguration
in interfaceReconfigurable<PassThroughAuthenticationHandlerConfig>
- Parameters:
config
- The general configuration for this extension.parser
- The argument parser that has been used to parse the new configuration for this extension.adminActionsRequired
- A list to which messages may be added to provide additional information about any additional administrative actions that may be required to apply some of the configuration changes.messages
- A list to which messages may be added to provide additional information about the processing performed by this method.- Returns:
- A result code providing information about the result of applying
the configuration change. A result of
SUCCESS
should be used to indicate that all processing completed successfully. Any other result will indicate that a problem occurred during processing.
-
finalizePassThroughAuthenticationHandler
public void finalizePassThroughAuthenticationHandler()
Performs any cleanup which may be necessary when this pass-through authentication handler is to be taken out of service.
-
attemptPassThroughAuthentication
@NotNull public abstract PassThroughAuthenticationResult attemptPassThroughAuthentication(@NotNull OperationContext operationContext, @NotNull SimpleBindRequest bindRequest, @NotNull Entry localEntry)
Attempts to pass through authentication for the provided bind operation to the external service.- Parameters:
operationContext
- The context for the bind operation. It will not benull
.bindRequest
- The bind request being processed. It will not benull
.localEntry
- The local entry for the account targeted by the bind operation. It will not benull
.- Returns:
- The result of the pass-through authentication attempt. It must
not be
null
.
-
getMonitorAttributes
@Nullable public java.util.List<Attribute> getMonitorAttributes()
Retrieves a list of any handler-specific attributes that should be included in the monitor entry for the associated pluggable pass-through authentication plugin.- Returns:
- A list of any handler-specific attributes that should be included
in the monitor entry for the associated plugin. It may be
null
or empty if no handler-specific monitor attributes should be included.
-
-