Methods

Mongo::Sasl::GSSAPI

Public Class Methods

authenticate(username, client, socket, opts={}) click to toggle source
# File lib/mongo/functional/sasl_java.rb, line 27
def self.authenticate(username, client, socket, opts={})
  db            = client.db('$external')
  hostname      = socket.pool.host
  servicename   = opts[:gssapi_service_name] || 'mongodb'
  canonicalize  = opts[:canonicalize_host_name] ? opts[:canonicalize_host_name] : false

  authenticator = org.mongodb.sasl.GSSAPIAuthenticator.new(JRuby.runtime, username, hostname, servicename, canonicalize)
  token         = BSON::Binary.new(authenticator.initialize_challenge)
  cmd           = BSON::OrderedHash['saslStart', 1, 'mechanism', 'GSSAPI', 'payload', token, 'autoAuthorize', 1]
  response      = db.command(cmd, :check_response => false, :socket => socket)

  until response['done'] do
    token    = BSON::Binary.new(authenticator.evaluate_challenge(response['payload'].to_s))
    cmd      = BSON::OrderedHash['saslContinue', 1, 'conversationId', response['conversationId'], 'payload', token]
    response = db.command(cmd, :check_response => false, :socket => socket)
  end
  response
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.