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

Colapso delresumen constante

MIN_ITER_COUNT =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

El recuento 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, cliente_nonce: nil) ⇒ ScramConversationBase

Este método forma parte de una API privada. Debe evitarlo 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) (predeterminado: nulo)

    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



38
39
40
41
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 38

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

Detalles de los atributos de instancia

#client_nonceString (solo lectura)

Este método forma parte de una API privada. Debe evitarlo 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



44
45
46
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 44

def client_nonce
  @client_nonce
end

#idInteger (solo lectura)

Este método forma parte de una API privada. Debe evitarlo 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



52
53
54
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 52

def ID
  @id
end

Detalles del método de instancia

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

Este método forma parte de una API privada. Debe evitarlo 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



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

def Continuar(reply_document, Conexión)
  @id = reply_document['conversationId']
  payload_data = reply_document[' carga útil '].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 = MENSAJE DE CONTINUACIÓN DEL CLIENTE.fusionar(
    contenido: mensaje_final_cliente,
    conversationId: ID,
  )
  build_message(Conexión, usuario.fuente de autenticación, selector)
end

#finalize(connection) ⇒ Protocol::Message

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Finalizar la conversación SCRAM. Esto debe repetirse hasta que la respuesta indique que la conversación ha finalizado.

Parámetros:

Devuelve:

Desde:

  • 2.0.0



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

def finaliza(Conexión)
  selector = MENSAJE DE CONTINUACIÓN DEL CLIENTE.fusionar(
    contenido: client_empty_message,
    conversationId: ID,
  )
  build_message(Conexión, usuario.fuente de autenticación, selector)
end

#process_continue_response(reply_document) ⇒ Object

Este método forma parte de una API privada. Debe evitarlo 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



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

def proceso_continuar_respuesta(reply_document)
  payload_data = parse_payload(reply_document[' carga útil '].Datos)
  check_server_signature(payload_data)
end

#server_verified?verdadero | fase

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Si el cliente verificó la ServerSignature del servidor.

Devuelve:

  • (true | fase)

    Si se ha verificado la firma del servidor.

Véase también:

Desde:

  • 2.0.0



59
60
61
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 59

def server_verified?
  !!@server_verified
end

#speculative_auth_documentHash | nil

Este método forma parte de una API privada. Debe evitarlo 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



126
127
128
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 126

def speculative_auth_document
  primer_documento_cliente.fusionar(db: usuario.fuente de autenticación)
end