Class: Net::IMAP::SASL::LoginAuthenticator

Inherits:
Object
  • Object
show all
Defined in:
lib/net/imap/sasl/login_authenticator.rb

Overview

Authenticator for the “LOGIN” SASL mechanism. See Net::IMAP#authenticate.

LOGIN authentication sends the password in cleartext. RFC3501 encourages servers to disable cleartext authentication until after TLS has been negotiated. RFC8314 recommends TLS version 1.2 or greater be used for all traffic, and deprecate cleartext access ASAP. LOGIN can be secured by TLS encryption.

Deprecated

The SASL mechanisms registry marks “LOGIN” as obsoleted in favor of “PLAIN”. It is included here for compatibility with existing servers. See draft-murchison-sasl-login for both specification and deprecation.

Instance Method Summary collapse

Constructor Details

#initialize(user = nil, pass = nil, authcid: nil, username: nil, password: nil, secret: nil, warn_deprecation: true) ⇒ LoginAuthenticator

Returns a new instance of LoginAuthenticator.



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/net/imap/sasl/login_authenticator.rb', line 26

def initialize(user = nil, pass = nil,
               authcid: nil, username: nil,
               password: nil, secret: nil,
               warn_deprecation: true,
               **)
  if warn_deprecation
    warn "WARNING: LOGIN SASL mechanism is deprecated. Use PLAIN instead."
  end
  @user = authcid || username || user
  @password = password || secret || pass
  @state = STATE_USER
end

Instance Method Details

#done?Boolean

Returns:

  • (Boolean)


54
# File 'lib/net/imap/sasl/login_authenticator.rb', line 54

def done?; @state == STATE_DONE end

#initial_response?Boolean

Returns:

  • (Boolean)


39
# File 'lib/net/imap/sasl/login_authenticator.rb', line 39

def initial_response?; false end

#process(data) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/net/imap/sasl/login_authenticator.rb', line 41

def process(data)
  case @state
  when STATE_USER
    @state = STATE_PASSWORD
    return @user
  when STATE_PASSWORD
    @state = STATE_DONE
    return @password
  when STATE_DONE
    raise ResponseParseError, data
  end
end