模块 Net::IMAP::SASL::GS2Header
最初在 RFC5801 中为 GS2 机制家族定义,几种不同的机制以 GS2 头部开始
-
GS2-*— RFC5801 -
SCRAM-*— RFC5802 (ScramAuthenticator) -
SAML20— RFC6595 -
OPENID20— RFC6616 -
OAUTH10A— RFC7628 -
OAUTHBEARER— RFC7628 (OAuthBearerAuthenticator)
包含此模块的类必须实现 #authzid。
常量
- RFC5801_SASLNAME
匹配 RFC5801 §4
saslname。gs2_saslname_encode的输出与此正则表达式匹配。
公共实例方法
gs2_authzid() 点击以切换源代码
当 #authzid 不为空时,RFC5801 §4 gs2-authzid 头部。
如果 #authzid 为空或 nil,则返回一个空字符串。
# File net-imap-0.5.4/lib/net/imap/sasl/gs2_header.rb, line 59 def gs2_authzid return "" if authzid.nil? || authzid == "" "a=#{gs2_saslname_encode(authzid)}" end
gs2_cb_flag() 点击以切换源代码
RFC5801 §4 gs2-cb-flag
- “
n” -
客户端不支持通道绑定。
- “
y” -
客户端支持通道绑定,但认为服务器不支持。
- “
p” -
客户端需要通道绑定。选定的通道绑定紧随“
p=”之后。
默认始终返回“n”。支持通道绑定的机制必须覆盖此方法。
# File net-imap-0.5.4/lib/net/imap/sasl/gs2_header.rb, line 53 def gs2_cb_flag; "n" end
gs2_header() 点击以切换源代码
RFC5801 §4 gs2-header,它是 initial_client_response 的前缀。
注意:实际的 GS2 头部包含一个可选标志,指示 GSS 机制不是“标准”的,但由于所有使用 GS2 的 SASL 机制都是“标准”的,因此我们不包含该标志。非标准 GSSAPI 机制的类应以 “
F,” 为前缀。
# File net-imap-0.5.4/lib/net/imap/sasl/gs2_header.rb, line 37 def gs2_header "#{gs2_cb_flag},#{gs2_authzid}," end
gs2_saslname_encode(str) 点击以切换源代码
编码 str 以匹配 RFC5801_SASLNAME。
# File net-imap-0.5.4/lib/net/imap/sasl/gs2_header.rb, line 67 def gs2_saslname_encode(str) str = str.encode("UTF-8") # Regexp#match raises "invalid byte sequence" for invalid UTF-8 NO_NULL_CHARS.match str or raise ArgumentError, "invalid saslname: %p" % [str] str .gsub(?=, "=3D") .gsub(?,, "=2C") end