模块 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