MongoDB C++ Driver  legacy-1.1.2
Classes | Public Types | Public Member Functions | List of all members
mongo::SaslClientSession Class Referenceabstract

Base class for the client side of a SASL authentication conversation. More...

#include <sasl_client_session.h>

+ Inheritance diagram for mongo::SaslClientSession:

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.
 

Detailed Description

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.

Member Function Documentation

virtual StringData mongo::SaslClientSession::getParameter ( Parameter  id)
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.

virtual Status mongo::SaslClientSession::initialize ( )
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 void mongo::SaslClientSession::setParameter ( Parameter  id,
const StringData value 
)
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.

virtual Status mongo::SaslClientSession::step ( const StringData inputData,
std::string *  outputData 
)
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.


The documentation for this class was generated from the following file: