Classe: Mongo::Auth::ScramConversationBase Private
- Herda:
-
SaslConversationBase
- Objeto
- Base deConversation
- SaslConversationBase
- Mongo::Auth::ScramConversationBase
- Definido em:
- build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb
Visão geral
Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.
Define o comportamento comum em torno de conversas de autenticação entre o cliente e o servidor.
Subclasses conhecidas diretas
Mongo::Auth::Scram256::Conversation, Mongo::Auth::Scram::Conversation
Colapsode resumo constante
- MIN_ITER_COUNT =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.
A contagem mínima de iteração para SCRAM-SHA-1 e SCRAM-SHA-256.
4096
Constantes herdadas de SaslConversationBase
Mongo::Auth::SaslConversationBase::CLIENT_CONTINUE_MSSAGE, Mongo::Auth::SaslConversationBase::CLIENT_FIRST_MSSAGE
Recolhimento do Resumo do atributo de instância
-
#client_nonce ➤ string
Somente leitura
privado
Client_nonce O cliente não uma vez.
-
#ID ➤ Inteiro
Somente leitura
privado
Obtenha o ID da conversa.
Atributos herdados de ConversationBase
Recolhimento do Resumo do método de instância
-
#continue(reply_document, connection) ⇒ Protocol::Message
privado
Continue a conversa SCRAM.
-
#finalize(connection) ⇒ Protocol::Message
privado
Finalize a conversa SCRAM.
-
#initialize(user, connection, client_nonce: nil) ➤ ScramConversationBase
construtor
privado
Crie a nova conversa.
-
#process_contin_response(reply_document) ➤ Objeto
privado
Processa a segunda resposta do servidor.
-
#server_verified? ➤ verdadeiro | fase
privado
Se o cliente verificou a ServerSignature do servidor.
-
#speculative_auth_document ➤ Hash | nada
privado
Retorna o hash a ser fornecido ao servidor na negociação como valor da chave speculativeAuthenticate .
Métodos herdados de SaslConversationBase
Métodos herdados de ConversationBase
#build_message, #validate_external_auth_source
Detalhes do construtor
#initialize(user, connection, client_nonce: nil) ➤ ScramConversationBase
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Crie a nova conversa.
38 39 40 41 |
# File 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', linha 38 def inicializar(utilizador, Conexão, client_nonce: nada) super @client_nonce = client_nonce || SecureRandom.64de base end |
Detalhes do atributo da instância
#client_nonce ➤ string (readonly)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna client_nonce O cliente não.
44 45 46 |
# File 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', linha 44 def client_nonce @client_nonce end |
#ID ➤ Inteiro (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Obtenha o ID da conversa.
52 53 54 |
# File 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', linha 52 def id @id end |
Detalhes do método de instância
#continue(reply_document, connection) ⇒ Protocol::Message
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Continue a conversa SCRAM. Isso envia a mensagem final do cliente para o servidor após definir a resposta da comunicação anterior do servidor.
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', linha 73 def Continuar(response_document, Conexão) @id = response_document['chatId'] payload_data = response_document['carga útil'].de dados parsed_data = parse_ payload(payload_data) @server_nonce = parsed_data.buscar('r') @salt = Base64.strict_decode64(parsed_data.buscar('s')) @iterations = parsed_data.buscar('eu').to_i.toque fazer |i| se i < MIN_ITER_COUNT aumentar Erro::InsufeficienteIterationCount.Novo( Erro::InsufeficienteIterationCount.(MIN_ITER_COUNT, i)) end end @auth_message = "#{},#{payload_data},#{sem_prova}" validate_server_nonce! seletor = CLIENT_CONTINUE_MSSAGE.mesclar( carga útil: , ID da conversa: id, ) (Conexão, utilizador.auth_source, seletor) end |
#finalize(connection) ⇒ Protocol::Message
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Finalize a conversa SCRAM. Isso deve ser iterado até que a resposta fornecida indique que a conversa terminou.
111 112 113 114 115 116 117 |
# File 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', linha 111 def finalizar(Conexão) seletor = CLIENT_CONTINUE_MSSAGE.mesclar( carga útil: , ID da conversa: id, ) (Conexão, utilizador.auth_source, seletor) end |
#process_contin_response(reply_document) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Processa a segunda resposta do servidor.
100 101 102 103 |
# File 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', linha 100 def process_contin_response(response_document) payload_data = parse_ payload(response_document['carga útil'].de dados) check_server_signature(payload_data) end |
#server_verified? ➤ verdadeiro | fase
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Se o cliente verificou a ServerSignature do servidor.
59 60 61 |
# File 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', linha 59 def server_verified? !!@server_verified end |
#speculative_auth_document ➤ Hash | nada
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o hash a ser fornecido ao servidor na negociação como valor da chave speculativeAuthenticate .
Se o mecanismo de autenticação não suportar autenticação especulativa, esse método retornará nulo.
126 127 128 |
# File 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', linha 126 def speculative_auth_document client_first_document.mesclar(db: utilizador.auth_source) end |