class Net::IMAP::SASL::PlainAuthenticator

PLAIN” SASL 机制的身份验证器,在 RFC-4616 中指定。参见 Net::IMAP#authenticate

PLAIN 身份验证以明文形式发送密码。 RFC-3501 鼓励服务器在协商 TLS 之后禁用明文身份验证。 RFC-8314 建议对所有流量使用 TLS 1.2 或更高版本,并尽快弃用明文访问。PLAIN 可以通过 TLS 加密进行保护。

常量

NULL

属性

authcid[R]

身份验证身份:与 password 匹配的身份。

RFC-2831 使用术语 username。“身份验证身份”是 RFC-4422 使用的通用术语。RFC-4616 和许多后来的 RFC 将其缩写为 authcid

authzid[R]

授权身份:代表或以其名义行事的身份。身份形式是应用程序协议特定的。如果未提供或留空,服务器将从身份验证身份派生授权身份。服务器负责验证客户端的凭据,并验证与其身份验证身份关联的身份是否允许代表(或以其名义)授权身份行事。

例如,管理员或超级用户可能会担任另一个角色

imap.authenticate "PLAIN", "root", passwd, authzid: "user"
password[R]

username 匹配的密码或密码短语。

secret[R]

username 匹配的密码或密码短语。

username[R]

身份验证身份:与 password 匹配的身份。

RFC-2831 使用术语 username。“身份验证身份”是 RFC-4422 使用的通用术语。RFC-4616 和许多后来的 RFC 将其缩写为 authcid

公共类方法

new(username, password, authzid: nil, **) → authenticator 点击以切换源代码
new(username:, password:, authzid: nil, **) → authenticator
new(authcid:, password:, authzid: nil, **) → authenticator

为“PLAIN” SASL 机制创建身份验证器。

Net::IMAP#authenticate 和其他客户端上的类似方法调用。

参数

  • authcid ― 与 password 关联的身份验证身份。

    usernameauthcid 的别名。

  • password ― 与 authcid 关联的密码或密码短语。

  • 可选 authzid ― 代表或以其名义行事的授权身份。

    当未设置 authzid 时,服务器应从身份验证身份派生授权身份。

任何其他关键字参数都将被忽略。

# File net-imap-0.5.4/lib/net/imap/sasl/plain_authenticator.rb, line 67
def initialize(user = nil, pass = nil,
               authcid: nil, secret: nil,
               username: nil, password: nil, authzid: nil, **)
  username ||= authcid || user or
    raise ArgumentError, "missing username (authcid)"
  password ||= secret || pass or raise ArgumentError, "missing password"
  raise ArgumentError, "username contains NULL" if username.include?(NULL)
  raise ArgumentError, "password contains NULL" if password.include?(NULL)
  raise ArgumentError, "authzid contains NULL"  if authzid&.include?(NULL)
  @username = username
  @password = password
  @authzid  = authzid
  @done = false
end

公共实例方法

done?() 点击以切换源代码

当发送初始客户端响应时返回 true。

除非此方法返回 true,否则身份验证不应成功,但这表示成功。

# File net-imap-0.5.4/lib/net/imap/sasl/plain_authenticator.rb, line 99
def done?; @done end
initial_response? → true 点击以切换源代码

PLAIN 可以发送初始客户端响应。

# File net-imap-0.5.4/lib/net/imap/sasl/plain_authenticator.rb, line 86
def initial_response?; true end
process(data) 点击以切换源代码

用客户端的凭据进行响应。

# File net-imap-0.5.4/lib/net/imap/sasl/plain_authenticator.rb, line 89
def process(data)
  return "#@authzid\0#@username\0#@password"
ensure
  @done = true
end