class Net::IMAP::SASL::ExternalAuthenticator

用于 “EXTERNALSASL 机制的身份验证器,如 RFC-4422 中所指定。请参阅 Net::IMAP#authenticate

EXTERNAL 机制请求服务器使用在 SASL 外部建立的客户端凭据,例如通过 TLS 证书或 IPSec。

属性

authzid[R]

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

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

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

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

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

imap.authenticate "PLAIN", "root", passwd, authzid: "user"

公共类方法

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

为 “EXTERNALSASL 机制创建一个身份验证器,如 RFC-4422 中所指定。要使用此功能,请参阅 Net::IMAP#authenticate 或您的客户端的身份验证方法。

参数

  • 可选 authzid ― 作为或代表身份的授权标识。

    可选 usernameauthzid 的别名。

    请注意,与某些其他身份验证器不同,username 设置的是授权标识,而不是身份验证标识。身份验证标识是由外部凭据为客户端建立的。

任何其他关键字参数都会被静默忽略。

# File net-imap-0.5.4/lib/net/imap/sasl/external_authenticator.rb, line 52
def initialize(user = nil, authzid: nil, username: nil, **)
  authzid ||= username || user
  @authzid = authzid&.to_str&.encode "UTF-8"
  if @authzid&.match?(/\u0000/u) # also validates UTF8 encoding
    raise ArgumentError, "contains NULL"
  end
  @done = false
end

公共实例方法

done?() 点击切换源代码

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

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

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

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

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

返回 authzid,如果没有 authzid,则返回空字符串。

# File net-imap-0.5.4/lib/net/imap/sasl/external_authenticator.rb, line 68
def process(_)
  authzid || ""
ensure
  @done = true
end