Class: Mongo::Auth::SaslConversationBase Private

Inherits:
ConversationBase show all
Defined in:
lib/mongo/auth/sasl_conversation_base.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Defines common behavior around SASL conversations between the client and the server.

Since:

  • 2.0.0

Constant Summary collapse

CLIENT_FIRST_MESSAGE =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

The base client first message.

Since:

  • 2.0.0

{ saslStart: 1, autoAuthorize: 1 }.freeze
CLIENT_CONTINUE_MESSAGE =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

The base client continue message.

Since:

  • 2.0.0

{ saslContinue: 1 }.freeze

Instance Attribute Summary

Attributes inherited from ConversationBase

#connection, #user

Instance Method Summary collapse

Methods inherited from ConversationBase

#initialize, #speculative_auth_document

Constructor Details

This class inherits a constructor from Mongo::Auth::ConversationBase

Instance Method Details

#start(connection) ⇒ Protocol::Message

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Start the SASL conversation. This returns the first message that needs to be sent to the server.

Parameters:

Returns:

Since:

  • 2.0.0



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/mongo/auth/sasl_conversation_base.rb', line 36

def start(connection)
  selector = client_first_document
  if connection && connection.features.op_msg_enabled?
    selector[Protocol::Msg::DATABASE_IDENTIFIER] = user.auth_source
    cluster_time = connection.mongos? && connection.cluster_time
    selector[Operation::CLUSTER_TIME] = cluster_time if cluster_time
    Protocol::Msg.new([], {}, selector)
  else
    Protocol::Query.new(
      user.auth_source,
      Database::COMMAND,
      selector,
      limit: -1,
    )
  end
end