module Net::IMAP::SASL

为支持 SASL(简单身份验证和安全层)的协议提供可插拔的身份验证机制,例如 IMAP4、SMTP、LDAP 和 XMPP。RFC-4422 指定了通用的 SASL 框架

SASL 从概念上讲是一个框架,在协议和机制之间提供了一个抽象层,如下图所示。

    SMTP    LDAP    XMPP   Other protocols ...
       \       |    |      /
        \      |    |     /
       SASL abstraction layer
        /      |    |     \
       /       |    |      \
EXTERNAL   GSSAPI  PLAIN   Other mechanisms ...

Net::IMAP 通过 Net::IMAP#authenticate 方法使用 SASL

机制

每种机制都有不同的属性和要求。请查阅您正在使用的特定机制的文档

ANONYMOUS

请参阅 AnonymousAuthenticator

允许用户在不进行身份验证或披露身份的情况下访问公共服务或资源。

EXTERNAL

请参阅 ExternalAuthenticator

使用已建立的凭据进行身份验证,例如 TLS 证书或 IPSec。

OAUTHBEARER

请参阅 OAuthBearerAuthenticator

使用 OAuth2 Bearer 令牌登录。这是使用 OAuth2 和 SASL 的标准机制,但尚未像 XOAUTH2 那样广泛部署。

PLAIN

请参阅 PlainAuthenticator

使用明文用户名和密码登录。

SCRAM-SHA-1
SCRAM-SHA-256

请参阅 ScramAuthenticator

通过用户名和密码登录。密码不会发送到服务器,而是在加盐的质询/响应交换中使用。 Net::IMAP::SASL 直接支持 SCRAM-SHA-1SCRAM-SHA-256。如果 OpenSSL::Digest 支持摘要算法,则可以轻松为任何其他 SCRAM-* 机制添加新的身份验证器。

XOAUTH2

请参阅 XOAuth2Authenticator

使用用户名和 OAuth2 访问令牌登录。非标准且被 OAUTHBEARER 取代,但得到广泛支持。

有关所有 SASL 机制及其规范的列表,请参阅 SASL 机制注册表。要注册新的身份验证器,请参阅 Authenticators

已弃用的机制

应避免使用过时的机制,但仍可用于向后兼容。

对于 DIGEST-MD5,请参阅 DigestMD5Authenticator

对于 LOGIN,请参阅 LoginAuthenticator

对于 CRAM-MD5,请参阅 CramMD5Authenticator

使用已弃用的机制将打印警告。

常量

AuthenticationCanceled

表示由客户端取消或将要取消的身份验证交换,而不是由于处理过程中的任何错误或失败。

AuthenticationError

表示处理服务器质询时出现错误,例如:无效或无法解析的质询。底层异常可能作为异常的原因提供。

AuthenticationFailed

表示身份验证无法继续,因为服务器的某条消息未通过完整性检查。

Error

在身份验证交换期间检测到的任何客户端错误的异常类。

服务器报告身份验证失败时,它将返回特定于协议的错误,例如:IMAP 中的 BADNO

当客户端遇到任何错误时,它必须认为身份验证交换不成功,并且可能需要断开连接。例如,如果服务器报告身份验证交换成功,或者协议不允许其他身份验证尝试。

SASLprep

Net::IMAP::StringPrep::SASLprep 的别名。

公共类方法

add_authenticator(...) 点击切换源代码

委托给 ::authenticators。请参阅 Authenticators#add_authenticator

# File net-imap-0.5.4/lib/net/imap/sasl.rb, line 171
def self.add_authenticator(...) authenticators.add_authenticator(...) end
authenticator(*args, registry: authenticators, **kwargs, &block) 点击切换源代码

使用 SASL::Authenticators#new 创建新的 SASL 身份验证器。

registry 默认为 SASL.authenticators。所有其他参数都转发到 registry.new

# File net-imap-0.5.4/lib/net/imap/sasl.rb, line 166
def self.authenticator(*args, registry: authenticators, **kwargs, &block)
  registry.new(*args, **kwargs, &block)
end
authenticators() 点击切换源代码

返回默认的全局 SASL::Authenticators 实例。

# File net-imap-0.5.4/lib/net/imap/sasl.rb, line 160
def self.authenticators; @authenticators ||= Authenticators.new end

公共实例方法

saslprep(string, **opts) 点击切换源代码

请参阅 Net::IMAP::StringPrep::SASLprep#saslprep

# File net-imap-0.5.4/lib/net/imap/sasl.rb, line 176
def saslprep(string, **opts)
  Net::IMAP::StringPrep::SASLprep.saslprep(string, **opts)
end