MongoDB C++ Driver
legacy-1.1.2
|
Base class for the client side of a SASL authentication conversation. More...
#include <sasl_client_session.h>
Public Types | |
enum | Parameter |
Identifiers of parameters used to configure a SaslClientSession. | |
Public Member Functions | |
virtual void | setParameter (Parameter id, const StringData &value) |
Sets the parameter identified by "id" to "value". More... | |
virtual bool | hasParameter (Parameter id) |
Returns true if "id" identifies a parameter previously set by a call to setParameter(). | |
virtual StringData | getParameter (Parameter id) |
Returns the value of a previously set parameter. More... | |
virtual Status | initialize ()=0 |
Initializes a session for use. More... | |
virtual Status | step (const StringData &inputData, std::string *outputData)=0 |
Takes one step of the SASL protocol on behalf of the client. More... | |
virtual bool | isDone () const =0 |
Returns true if the authentication completed successfully. | |
Base class for the client side of a SASL authentication conversation.
To use, create an instance, then use setParameter() to configure the authentication parameters. Once all parameters are set, call initialize() to initialize the client state machine. Finally, use repeated calls to step() to generate messages to send to the server and process server responses.
The required parameters vary by mechanism, but all mechanisms require parameterServiceName, parameterServiceHostname, parameterMechanism and parameterUser. All of the required parameters must be UTF-8 encoded strings with no embedded NUL characters. The parameterPassword parameter is not constrained.
|
virtual |
Returns the value of a previously set parameter.
If parameter "id" was never set, returns an empty StringData. Note that a parameter may be explicitly set to StringData(), so use hasParameter() to distinguish those cases.
The session object owns the storage behind the returned StringData, which will remain valid until setParameter() is called with the same value of "id", or the session object goes out of scope.
|
pure virtual |
Initializes a session for use.
Call exactly once, after setting any parameters you intend to set via setParameter().
Implemented in mongo::CyrusSaslClientSession, and mongo::NativeSaslClientSession.
|
virtual |
Sets the parameter identified by "id" to "value".
The value of "id" must be one of the legal values of Parameter less than numParameters. May be called repeatedly for the same value of "id", with the last "value" replacing previous values.
The session object makes and owns a copy of the data in "value".
Reimplemented in mongo::CyrusSaslClientSession.
|
pure virtual |
Takes one step of the SASL protocol on behalf of the client.
Caller should provide data from the server side of the conversation in "inputData", or an empty StringData() if none is available. If the client should make a response to the server, stores the response into "*outputData".
Returns Status::OK() on success. Any other return value indicates a failed authentication, though the specific return value may provide insight into the cause of the failure (e.g., ProtocolError, AuthenticationFailed).
In the event that this method returns Status::OK(), consult the value of isDone() to determine if the conversation has completed. When step() returns Status::OK() and isDone() returns true, authentication has completed successfully.
Implemented in mongo::CyrusSaslClientSession, and mongo::NativeSaslClientSession.