Clase: Mongo::Auth::ScramConversationBase Privado

Hereda:
SaslConversationBase Mostrar todo
Definido en:
lib/mongo/auth/scram_conversation_base.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Define el comportamiento común en torno a las conversaciones de autenticación entre el cliente y el servidor.

Desde:

  • 2.0.0

Resumen de constantes colapsar

MIN_ITER_COUNT =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

El número mínimo de iteraciones para SCRAM-SHA-1 y SCRAM-SHA-256.

Desde:

  • 2.0.0

4096

Constantes heredadas de SaslConversationBase

Mongo::Auth::SaslConversationBase::CLIENT_CONTINUE_MESSAGE, Mongo::Auth::SaslConversationBase::CLIENT_FIRST_MESSAGE

Resumen de atributos de la instancia colapsar

Atributos heredados de ConversationBase

#conexión, #usuario

Resumen del método de instancia colapsar

Métodos heredados de SaslConversationBase

#iniciar

Métodos heredados de ConversationBase

#build_message, #validate_external_auth_source

Detalles del Constructor

#inicializar(usuario, conexión, client_nonce: nil) ⇒ ScramConversationBase

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Crear la nueva conversación.

Parámetros:

  • usuario (Auth::User)

    El usuario de quien hablar.

  • client_nonce (String | nil) (valor por defecto: nil)

    El nonce de cliente a utilizar. Si esta conversación se crea para una conexión que realizó una autenticación especulativa, este cliente nonce debe ser igual al cliente nonce utilizado para la autenticación especulativa; de lo contrario, no se debe especificar el cliente nonce.

Desde:

  • 2.0.0



35
36
37
38
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 35

def inicializar(usuario, Conexión, client_nonce: nulo)
  super
  @client_nonce = client_nonce || SecureRandom.base64
end

Detalles de atributo de instancias

#client_nonceString (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve client_nonce La nonce del cliente.

Devuelve:

  • (string)

    client_nonce La nonce del cliente.

Desde:

  • 2.0.0



41
42
43
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 41

def client_nonce
  @client_nonce
end

#idInteger (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtenga el id de la conversación.

Ejemplos:

Obtenga el id de la conversación.

conversation.id

Devuelve:

  • (Número entero)

    El ID de la conversación.

Desde:

  • 2.0.0



49
50
51
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 49

def ID
  @id
end

Detalles del método de instancia

#continue(reply_document, connection) ⇒ Protocol::Message

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Continúe la conversación SCRAM. Este envía el mensaje final del cliente al servidor después de definir la respuesta de la comunicación previa con el servidor.

Parámetros:

  • reply_document (BSON::Document)

    El documento de respuesta del mensaje anterior.

  • Conexión (Servidor::Conexión)

    La conexión se está autenticando.

Devuelve:

Desde:

  • 2.0.0



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 70

def Continuar(reply_document, Conexión)
  @id = reply_document['conversationId']
  payload_data = reply_document["payload"].Datos
  parsed_data = parse_payload(payload_data)
  @server_nonce = parsed_data.obtener('r')
  @salt = Base64.strict_decode64(parsed_data.obtener('s'))
  @iterations = parsed_data.obtener('i').to_i.tocar hacer |i|
    si i < MIN_ITER_COUNT
      propagar Error::InsufficientIterationCount.Nuevo(
        Error::InsufficientIterationCount.mensaje(MIN_ITER_COUNT, i)
      )
    end
  end
  @auth_message = "#{first_bare},#{payload_data},#{without_proof}"

  validate_server_nonce!

  selector = CLIENT_CONTINUE_MESSAGE.fusionar(
    contenido: mensaje_final_cliente,
    conversationId: ID
  )
  build_message(Conexión, usuario.auth_source, selector)
end

#finalize(connection) ⇒ Protocol::Message

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Finaliza la conversación SCRAM. Esto está destinado a iterarse hasta que la respuesta proporcionada indique que la conversación ha terminado.

Parámetros:

Devuelve:

Desde:

  • 2.0.0



109
110
111
112
113
114
115
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 109

def finaliza(Conexión)
  selector = CLIENT_CONTINUE_MESSAGE.fusionar(
    contenido: client_empty_message,
    conversationId: ID
  )
  build_message(Conexión, usuario.auth_source, selector)
end

#process_continue_response(reply_document) ⇒ Object

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Procesa la segunda respuesta del servidor.

Parámetros:

  • reply_document (BSON::Document)

    El documento de respuesta de la respuesta de continuación.

Desde:

  • 2.0.0



98
99
100
101
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 98

def process_continue_response(reply_document)
  payload_data = parse_payload(reply_document["payload"].Datos)
  check_server_signature(payload_data)
end

#server_verified?true | false

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Si el cliente verificó la ServerSignature del servidor.

Devuelve:

  • (true | false)

    Si se verificó la firma del servidor.

Véase también:

Desde:

  • 2.0.0



56
57
58
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 56

def server_verified?
  !!@server_verified
end

#speculative_auth_documentHash | nil

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el hash para proporcionar al servidor en el proceso de handshake como valor de la clave speculativeAuthenticate.

Si el mecanismo de autenticación no es compatible con la autenticación especulativa, este método retorna nil.

Devuelve:

  • (Hash | nil)

    Documento de autenticación especulativo.

Desde:

  • 2.0.0



124
125
126
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 124

def speculative_auth_document
  primer_documento_cliente.fusionar(db: usuario.auth_source)
end