Clase: Mongo::Auth::ScramConversationBase Privada

Hereda:
Base de conversaciones de Sasl Mostrar todo
Definido en:
lib/mongo/auth/scram_conversation_base.rb

Overview

Esta clase forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse 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

RECUENTO MÍNIMO DE ITER =

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::MENSAJE_CONTINUO_DEL_CLIENTE, Mongo::Auth::SaslConversationBase::MENSAJE_PRIMER_DEL_CLIENTE

Colapso delresumen de atributos de instancia

Atributos heredados de ConversationBase

#conexión, #usuario

Colapso del resumen del método de instancia

Métodos heredados de SaslConversationBase

#comenzar

Métodos heredados de ConversationBase

#mensaje_de_compilación, #validar_fuente_de_autenticación_externa

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.

Crea la nueva conversación.

Parámetros:

  • usuario (Auth::User)

    El usuario de quien hablar.

  • client_nonce (String | nil) (predeterminado: nulo)

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

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_nonceCadena (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:

  • (Cadena) -

    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

#idEntero (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:

  • (Entero)

    La conversación id.

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.

Continuar la conversación SCRAM. Esto envía el mensaje final del cliente al servidor tras configurar la respuesta de la comunicación anterior con el servidor.

Parámetros:

  • responder_documento (BSON::Documento)

    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(responder_documento, conexión)
  @id = responder_documento['conversaciónId ']
  datos de carga útil = responder_documento[' carga útil '].datos
  parsed_data = carga útil de análisis(datos de carga útil)
  @server_nonce = parsed_data.Fetch('r')
  @salt = Base64.decodificación estricta64(parsed_data.Fetch('s'))
  @iteraciones = parsed_data.Fetch('i').to_i.grifo hacer |i|
    Si i < CONTEO MÍNIMO DE ITER
      propagar Error::Número de iteraciones insuficiente.Nuevo(
        Error::Número de iteraciones insuficiente.Mensaje(CONTEO MÍNIMO DE ITER, i))
    end
  end
  @mensaje_de_autorización = "#{first_bare}, #{payload_data },#{without_proof}"

  validate_server_nonce!

  selector = MENSAJE DE CONTINUACIÓN DEL CLIENTE.unir(
    carga útil: mensaje final del cliente,
    ID de conversación: ID.,
  )
  mensaje de construcción(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:

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

    La conexión se está autenticando.

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.unir(
    carga útil: client_empty_message,
    ID de conversación: ID.,
  )
  mensaje de construcción(conexión, usuario.fuente de autenticación, selector)
end

#proceso_continuar_respuesta(documento_de_respuesta) ⇒ Objeto

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:

  • responder_documento (BSON::Documento)

    El documento de respuesta de la respuesta continua.

Desde:

  • 2.0.0



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

def proceso_continuar_respuesta(responder_documento)
  datos de carga útil = carga útil de análisis(responder_documento[' carga útil '].datos)
  check_server_signature(datos de carga útil)
end

#¿servidor verificado?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 desde el servidor.

Devuelve:

  • (true | fase)

    Si se verificó la firma del servidor.

Ver también:

Desde:

  • 2.0.0



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

def server_verified?
  !!@servidor_verificado
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 que se proporcionará al servidor en el protocolo de enlace 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 | nulo ) —

    Documento de autenticación especulativa.

Desde:

  • 2.0.0



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

def documento de autorización especulativa
  cliente_primer_documento.unir(db: usuario.fuente de autenticación)
end