Package org.opends.server.core
Class BindOperation
java.lang.Object
org.opends.server.types.Operation
org.opends.server.core.BindOperation
- All Implemented Interfaces:
PluginOperation
,PostCommitOperation
,PostOperationBindOperation
,PostOperationOperation
,PostResponseBindOperation
,PostResponseOperation
,PreOperationBindOperation
,PreOperationOperation
,PreParseBindOperation
,PreParseOperation
public final class BindOperation
extends Operation
implements PreOperationBindOperation, PreParseBindOperation, PostOperationBindOperation, PostResponseBindOperation
This class defines an operation that may be used to authenticate a user to the Directory Server. Note that for
security restrictions, response messages that may be returned to the client must be carefully cleaned to ensure that
they do not provide a malicious client with information that may be useful in an attack. This does impact the
debuggability of the server, but that can be addressed by calling the
setAuthFailureReason(LocalizableMessage)
method, which can provide a reason for a failure in a form that
will not be returned to the client but may be written to a log file.-
Field Summary
Fields inherited from class org.opends.server.types.Operation
backend, context, out, pluginConfigManager, request, serverContext
-
Constructor Summary
ConstructorDescriptionBindOperation
(RequestContext context, LocalBackend<?> backend, BindRequest request, Consumer<ResponseStream> out) Creates a new bind operation. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addResponseControl
(Control control) Adds the provided control to the set of controls to include in the response to the client.Retrieves the authentication type for this bind operation.Retrieves a human-readable message providing the reason that the authentication failed, if available.Retrieves the bind DN for this bind operation.Returns the request associated to this operation.Retrieves the set of controls to include in the response to the client.Retrieves the user entry associated with the SASL authentication attempt.Retrieves the SASL credentials for this bind operation.Retrieves the SASL mechanism for this bind operation.Returns theSaslServer
to use by the underlying connection, ornull
if SASL integrity and/or privacy protection must not be enabled.Retrieves the set of server SASL credentials to include in the bind response.Retrieves the simple authentication password for this bind operation.Retrieves the user entry DN for this bind operation.protected void
Invokes any applicable post-response plugins.protected boolean
Invokes any applicable pre-parse plugins.protected Result
Generates a result for this operation.void
removeResponseControl
(Control control) Removes the provided control from the set of controls to include in the response to the client.void
runFakePasswordMatches
(Dn bindDn, ByteString password) When using cost based hashes, ensure similar response times when login with non-existing vs.protected boolean
runImpl()
Performs the work of actually processing this operation.void
setAuthenticationInfo
(AuthenticationInfo authInfo) Specifies the authentication info that resulted from processing this bind operation.void
Specifies the reason that the authentication failed.void
Specifies the bind DN for this bind operation.void
setSASLAuthUserEntry
(Entry saslAuthUserEntry) Specifies the user entry associated with the SASL authentication attempt.void
setSASLCredentials
(String saslMechanism, ByteString saslCredentials) Specifies the SASL credentials for this bind operation.void
setSaslServer
(SaslServer saslServer) Sets the SASL server.void
setServerSASLCredentials
(ByteString serverSASLCredentials) Specifies the set of server SASL credentials to include in the bind response.void
setSimplePassword
(ByteString simplePassword) Specifies the simple authentication password for this bind operation.void
toString
(StringBuilder buffer) Appends a string representation of this operation to the provided buffer.Methods inherited from class org.opends.server.types.Operation
addAdditionalLogItem, addPasswordPolicyWarningToLog, addPostReadResponse, addPreReadResponse, addRequestControl, appendErrorMessage, appendMaskedErrorMessage, checkAttributeConformsToSyntax, checkIfBackendIsWritable, checkIfCanceled, createLdapException, equals, evaluateProxyAuthControls, getAdditionalLogItems, getAttachment, getAttachments, getAuthorizationDN, getAuthorizationEntry, getClientConnection, getConnectionID, getErrorMessage, getLargestEntrySize, getMatchedDN, getMessageID, getOperationID, getProxiedAuthorizationDN, getReferralURLs, getRequestContext, getRequestControl, getRequestControls, getResultCode, hashCode, hasPrivilege, hasRequestControl, isInternalOperation, isProxyAuthzControl, isSynchronizationOperation, mustCheckSchema, processOperationResult, removeAllDisallowedControls, run, sendResponses, sendResult, setAttachment, setErrorMessage, setMatchedDN, setReferralURLs, setResult, setResult, setResultCode, setResultCodeAndMessageNoInfoDisclosure, toString, trySetLargestEntrySize
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.opends.server.types.operation.PluginOperation
checkIfCanceled, getAttachment, getAttachments, getClientConnection, getConnectionID, getMessageID, getOperationID, getRequestControl, getRequestControl, getRequestControls, hasPrivilege, isInternalOperation, isSynchronizationOperation, setAttachment, toString
Methods inherited from interface org.opends.server.types.operation.PostOperationOperation
addAdditionalLogItem, appendErrorMessage, getAdditionalLogItems, getAuthorizationDN, getErrorMessage, getMatchedDN, getReferralURLs, getResultCode, setErrorMessage, setMatchedDN, setReferralURLs, setResult, setResultCode
Methods inherited from interface org.opends.server.types.operation.PreOperationOperation
addAdditionalLogItem, appendErrorMessage, getAdditionalLogItems, getAuthorizationDN, getErrorMessage, sendResponses, setErrorMessage
Methods inherited from interface org.opends.server.types.operation.PreParseOperation
addAdditionalLogItem, addRequestControl, appendErrorMessage, getAdditionalLogItems, getErrorMessage, sendResponses, setErrorMessage
-
Constructor Details
-
BindOperation
public BindOperation(RequestContext context, LocalBackend<?> backend, BindRequest request, Consumer<ResponseStream> out) Creates a new bind operation.- Parameters:
context
- The context.backend
- The local backend in which this request is to be processed.request
- The request.out
- A consumer responsible for sending responses to the client.
-
-
Method Details
-
getAuthenticationType
Description copied from interface:PreOperationBindOperation
Retrieves the authentication type for this bind operation.- Specified by:
getAuthenticationType
in interfacePostOperationBindOperation
- Specified by:
getAuthenticationType
in interfacePostResponseBindOperation
- Specified by:
getAuthenticationType
in interfacePreOperationBindOperation
- Specified by:
getAuthenticationType
in interfacePreParseBindOperation
- Returns:
- The authentication type for this bind operation.
-
setBindDN
Description copied from interface:PreParseBindOperation
Specifies the bind DN for this bind operation.- Specified by:
setBindDN
in interfacePreParseBindOperation
- Parameters:
bindDN
- The bind DN for this bind
-
getBindDN
Description copied from interface:PreOperationBindOperation
Retrieves the bind DN for this bind operation.- Specified by:
getBindDN
in interfacePostOperationBindOperation
- Specified by:
getBindDN
in interfacePostResponseBindOperation
- Specified by:
getBindDN
in interfacePreOperationBindOperation
- Specified by:
getBindDN
in interfacePreParseBindOperation
- Returns:
- The bind DN for this bind operation.
-
getSimplePassword
Description copied from interface:PreOperationBindOperation
Retrieves the simple authentication password for this bind operation.- Specified by:
getSimplePassword
in interfacePostOperationBindOperation
- Specified by:
getSimplePassword
in interfacePostResponseBindOperation
- Specified by:
getSimplePassword
in interfacePreOperationBindOperation
- Specified by:
getSimplePassword
in interfacePreParseBindOperation
- Returns:
- The simple authentication password for this bind operation.
-
setSimplePassword
Description copied from interface:PreParseBindOperation
Specifies the simple authentication password for this bind operation.- Specified by:
setSimplePassword
in interfacePreParseBindOperation
- Parameters:
simplePassword
- The simple authentication password for this bind operation.
-
getSASLMechanism
Description copied from interface:PreOperationBindOperation
Retrieves the SASL mechanism for this bind operation.- Specified by:
getSASLMechanism
in interfacePostOperationBindOperation
- Specified by:
getSASLMechanism
in interfacePostResponseBindOperation
- Specified by:
getSASLMechanism
in interfacePreOperationBindOperation
- Specified by:
getSASLMechanism
in interfacePreParseBindOperation
- Returns:
- The SASL mechanism for this bind operation, or
null
if the bind does not use SASL authentication.
-
getSASLCredentials
Description copied from interface:PreOperationBindOperation
Retrieves the SASL credentials for this bind operation.- Specified by:
getSASLCredentials
in interfacePostOperationBindOperation
- Specified by:
getSASLCredentials
in interfacePostResponseBindOperation
- Specified by:
getSASLCredentials
in interfacePreOperationBindOperation
- Specified by:
getSASLCredentials
in interfacePreParseBindOperation
- Returns:
- The SASL credentials for this bind operation, or
null
if there are none or if the bind does not use SASL authentication.
-
setSASLCredentials
Description copied from interface:PreParseBindOperation
Specifies the SASL credentials for this bind operation.- Specified by:
setSASLCredentials
in interfacePreParseBindOperation
- Parameters:
saslMechanism
- The SASL mechanism for this bind operation.saslCredentials
- The SASL credentials for this bind operation, ornull
if there are none.
-
getServerSASLCredentials
Description copied from interface:PostOperationBindOperation
Retrieves the set of server SASL credentials to include in the bind response.- Specified by:
getServerSASLCredentials
in interfacePostOperationBindOperation
- Specified by:
getServerSASLCredentials
in interfacePostResponseBindOperation
- Returns:
- The set of server SASL credentials to include in the bind response, or
null
if there are none.
-
setServerSASLCredentials
Description copied from interface:PreOperationBindOperation
Specifies the set of server SASL credentials to include in the bind response.- Specified by:
setServerSASLCredentials
in interfacePostOperationBindOperation
- Specified by:
setServerSASLCredentials
in interfacePreOperationBindOperation
- Specified by:
setServerSASLCredentials
in interfacePreParseBindOperation
- Parameters:
serverSASLCredentials
- The set of server SASL credentials to include in the bind response.
-
getSASLAuthUserEntry
Description copied from interface:PostOperationBindOperation
Retrieves the user entry associated with the SASL authentication attempt. This should be set by any SASL mechanism in which the processing was able to get far enough to make this determination, regardless of whether the authentication was ultimately successful.- Specified by:
getSASLAuthUserEntry
in interfacePostOperationBindOperation
- Specified by:
getSASLAuthUserEntry
in interfacePostResponseBindOperation
- Returns:
- The user entry associated with the SASL authentication attempt, or
null
if it was not a SASL authentication or the SASL processing was not able to map the request to a user.
-
setSASLAuthUserEntry
Specifies the user entry associated with the SASL authentication attempt. This should be set by any SASL mechanism in which the processing was able to get far enough to make this determination, regardless of whether the authentication was ultimately successful.- Parameters:
saslAuthUserEntry
- The user entry associated with the SASL authentication attempt.
-
getAuthFailureReason
Description copied from interface:PostOperationBindOperation
Retrieves a human-readable message providing the reason that the authentication failed, if available.- Specified by:
getAuthFailureReason
in interfacePostOperationBindOperation
- Specified by:
getAuthFailureReason
in interfacePostResponseBindOperation
- Returns:
- A human-readable message providing the reason that the authentication failed, or
null
if none is available.
-
setAuthFailureReason
Description copied from interface:PreOperationBindOperation
Specifies the reason that the authentication failed.- Specified by:
setAuthFailureReason
in interfacePostOperationBindOperation
- Specified by:
setAuthFailureReason
in interfacePreOperationBindOperation
- Specified by:
setAuthFailureReason
in interfacePreParseBindOperation
- Parameters:
reason
- A human-readable message providing the reason that the authentication failed.
-
getUserEntryDN
Description copied from interface:PreOperationBindOperation
Retrieves the user entry DN for this bind operation. It will only be available for simple bind operations (and may be different than the bind DN from the client request).- Specified by:
getUserEntryDN
in interfacePostOperationBindOperation
- Specified by:
getUserEntryDN
in interfacePostResponseBindOperation
- Specified by:
getUserEntryDN
in interfacePreOperationBindOperation
- Returns:
- The user entry DN for this bind operation, or
null
if the bind processing has not progressed far enough to identify the user or if the user DN could not be determined.
-
setAuthenticationInfo
Specifies the authentication info that resulted from processing this bind operation. This method must only be called by SASL mechanism handlers during the course of processing theprocessSASLBind
method.- Parameters:
authInfo
- The authentication info that resulted from processing this bind operation.
-
getRequest
Description copied from class:Operation
Returns the request associated to this operation.- Specified by:
getRequest
in interfacePluginOperation
- Overrides:
getRequest
in classOperation
- Returns:
- The request associated to this operation.
-
getResponseControls
Description copied from interface:PluginOperation
Retrieves the set of controls to include in the response to the client. The contents of this list must not be altered.- Specified by:
getResponseControls
in interfacePluginOperation
- Returns:
- The set of controls to include in the response to the client.
-
addResponseControl
Description copied from class:Operation
Adds the provided control to the set of controls to include in the response to the client.This method may not be called by post-response plugins.
- Specified by:
addResponseControl
in interfacePostOperationOperation
- Specified by:
addResponseControl
in interfacePreOperationOperation
- Specified by:
addResponseControl
in interfacePreParseOperation
- Specified by:
addResponseControl
in classOperation
- Parameters:
control
- The control to add to the set of controls to include in the response to the client.
-
removeResponseControl
Description copied from class:Operation
Removes the provided control from the set of controls to include in the response to the client.This method may not be called by post-response plugins.
- Specified by:
removeResponseControl
in interfacePostOperationOperation
- Specified by:
removeResponseControl
in interfacePreOperationOperation
- Specified by:
removeResponseControl
in interfacePreParseOperation
- Specified by:
removeResponseControl
in classOperation
- Parameters:
control
- The control to remove from the set of controls to include in the response to the client.
-
toString
Description copied from interface:PluginOperation
Appends a string representation of this operation to the provided buffer.- Specified by:
toString
in interfacePluginOperation
- Specified by:
toString
in classOperation
- Parameters:
buffer
- The buffer into which a string representation of this operation should be appended.
-
runImpl
Description copied from class:Operation
Performs the work of actually processing this operation.- Specified by:
runImpl
in classOperation
- Returns:
true
if the result should be sent immediately, orfalse
if it will be sent later, e.g. as part of a persistent search.- Throws:
LdapException
- If an error occurred when processing the operation.
-
invokePreParsePlugins
protected boolean invokePreParsePlugins()Description copied from class:Operation
Invokes any applicable pre-parse plugins.- Specified by:
invokePreParsePlugins
in classOperation
- Returns:
true
if processing should continue.
-
invokePostResponsePlugins
protected void invokePostResponsePlugins()Description copied from class:Operation
Invokes any applicable post-response plugins.- Specified by:
invokePostResponsePlugins
in classOperation
-
operationToResult
Description copied from class:Operation
Generates a result for this operation.- Overrides:
operationToResult
in classOperation
- Returns:
- The result.
-
getSaslServer
Returns theSaslServer
to use by the underlying connection, ornull
if SASL integrity and/or privacy protection must not be enabled.- Returns:
- The
SaslServer
to use by the underlying connection, ornull
if SASL integrity and/or privacy protection must not enabled.
-
setSaslServer
Sets the SASL server.- Parameters:
saslServer
- the SASL server to set
-
runFakePasswordMatches
When using cost based hashes, ensure similar response times when login with non-existing vs. existing users, this also applies to other failure conditions.- Parameters:
bindDn
- the bind DNpassword
- the bind password- Throws:
LdapException
- If a problem occurs while attempting to encode the password.
-