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
-
允许用户在不进行身份验证或披露身份的情况下访问公共服务或资源。
EXTERNAL
-
使用已建立的凭据进行身份验证,例如 TLS 证书或 IPSec。
OAUTHBEARER
-
使用 OAuth2 Bearer 令牌登录。这是使用 OAuth2 和 SASL 的标准机制,但尚未像
XOAUTH2
那样广泛部署。 PLAIN
-
请参阅
PlainAuthenticator
。使用明文用户名和密码登录。
SCRAM-SHA-1
SCRAM-SHA-256
-
请参阅
ScramAuthenticator
。通过用户名和密码登录。密码不会发送到服务器,而是在加盐的质询/响应交换中使用。
Net::IMAP::SASL
直接支持SCRAM-SHA-1
和SCRAM-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
中的BAD
或NO
。当客户端遇到任何错误时,它必须认为身份验证交换不成功,并且可能需要断开连接。例如,如果服务器报告身份验证交换成功,或者协议不允许其他身份验证尝试。
- SASLprep
公共类方法
委托给 ::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
使用 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
返回默认的全局 SASL::Authenticators
实例。
# File net-imap-0.5.4/lib/net/imap/sasl.rb, line 160 def self.authenticators; @authenticators ||= Authenticators.new end
公共实例方法
请参阅 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