Clase: Mongo::Auth::ScramConversationBase Privado
- Hereda:
-
SaslConversationBase
- Objeto
- ConversationBase
- SaslConversationBase
- Mongo::Auth::ScramConversationBase
- 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.
Subclases conocidas directas
Mongo::Auth::Scram256::Conversation, Mongo::Auth::Scram::Conversation
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.
4096
Constantes heredadas de SaslConversationBase
Mongo::Auth::SaslConversationBase::CLIENT_CONTINUE_MESSAGE, Mongo::Auth::SaslConversationBase::CLIENT_FIRST_MESSAGE
Resumen de atributos de la instancia colapsar
-
#client_nonce ⇒ String
Solo lectura
privado
Client_nonce El número aleatorio (nonce) del cliente.
-
#id ⇒ Integer
Solo lectura
privado
Obtenga el id de la conversación.
Atributos heredados de ConversationBase
#conexión, #usuario
Resumen del método de instancia colapsar
-
#continue(reply_document, connection) ⇒ Protocol::Message
privado
Continúe la conversación SCRAM.
-
#finalize(connection) ⇒ Protocol::Message
privado
Finalizar la conversación SCRAM.
-
#initialize(usuario, conexión, client_nonce: nil) ⇒ ScramConversationBase
constructor
privado
Crear la nueva conversación.
-
#process_continue_response(reply_document) ⇒ Object
privado
Procesa la segunda respuesta del servidor.
-
#¿servidor verificado? ⇒ verdadero | fase
privado
Si el cliente verificó la ServerSignature del servidor.
-
#speculative_auth_document ⇒ Hash | nil
privado
Devuelve el hash para proporcionar al servidor en el proceso de handshake como valor de la clave speculativeAuthenticate.
Métodos heredados de SaslConversationBase
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.
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_nonce ⇒ String (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.
44 45 46 |
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 44 def client_nonce @client_nonce end |
#id ⇒ Integer (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.
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.
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.(MIN_ITER_COUNT, i)) end end @auth_message = "#{},#{payload_data},#{without_proof}" validate_server_nonce! selector = MENSAJE DE CONTINUACIÓN DEL CLIENTE.fusionar( contenido: , conversationId: ID, ) (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.
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: , conversationId: ID, ) (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.
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.
59 60 61 |
# Archivo 'lib/mongo/auth/scram_conversation_base.rb', línea 59 def server_verified? !!@server_verified end |
#speculative_auth_document ⇒ Hash | 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.
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 |