Classe: Mongo::Auth::ScramConversationBase Private

Herda:
SaslConversationBase mostrar tudo
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.

Desde:

  • 2.0.0

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.

Desde:

  • 2.0.0

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

Atributos herdados de ConversationBase

#connection, #user

Recolhimento do Resumo do método de instância

Métodos herdados de SaslConversationBase

#start

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.

Parâmetros:

  • utilizador (Auth::User)

    O usuário sobre o qual conversar.

  • client_nonce (string | nil) (padrão para: nil)

    O cliente não deve usar. Se essa conversa for criada para uma conexão que executou autenticação especulativa, esse nonce do cliente deverá ser igual ao nonce do cliente usado para autenticação especulativa; caso contrário, o número do cliente não deve ser especificado.

Desde:

  • 2.0.0



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.

Retorna:

  • (string)

    client_nonce O cliente não uma vez.

Desde:

  • 2.0.0



44
45
46
# File 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', linha 44

def client_nonce
  @client_nonce
end

#IDInteiro (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.

Exemplos:

Obtenha o ID da conversa.

conversation.id

Retorna:

  • (Inteiro)

    O ID da conversa.

Desde:

  • 2.0.0



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.

Parâmetros:

  • response_document (BSON::Document)

    O documento de resposta da mensagem anterior.

  • Conexão (Servidor::Conexão)

    A conexão sendo autenticada.

Retorna:

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
# 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.mensagem(MIN_ITER_COUNT, i))
    end
  end
  @auth_message = "#{first_bare},#{payload_data},#{sem_prova}"

  validate_server_nonce!

  seletor = CLIENT_CONTINUE_MSSAGE.mesclar(
    carga útil: client_final_message,
    ID da conversa: id,
  )
  build_message(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.

Parâmetros:

Retorna:

Desde:

  • 2.0.0



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: client_empty_message,
    ID da conversa: id,
  )
  build_message(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.

Parâmetros:

  • response_document (BSON::Document)

    O documento de resposta da resposta contínua.

Desde:

  • 2.0.0



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.

Retorna:

  • (true | fase)

    Se a assinatura do servidor foi verificada.

Veja também:

Desde:

  • 2.0.0



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_documentHash | 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.

Retorna:

  • (Hash | nulo)

    Documento de autenticação especulativo.

Desde:

  • 2.0.0



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