class Net::IMAP::SASL::OAuthAuthenticator
-
OAUTH10A
属性
授权身份:代表或作为另一个身份。 身份形式是特定于应用程序协议的。 如果未提供或留空,服务器会从身份验证身份中派生授权身份。 服务器负责验证客户端的凭据,并验证其与客户端身份验证身份关联的身份是否允许代表(或作为)授权身份。
例如,管理员或超级用户可以承担另一个角色
imap.authenticate "PLAIN", "root", passwd, authzid: "user"
客户端连接的主机名。(可选)
存储最近的服务器“挑战”。 当身份验证失败时,这里可能包含有关失败原因的信息,以 JSON 格式。
HTTP 方法。(可选)
HTTP 路径数据。(可选)
客户端连接的服务端口。(可选)
HTTP post 数据。(可选)
查询字符串。(可选)
查询字符串。(可选)
授权身份:代表或作为另一个身份。 身份形式是特定于应用程序协议的。 如果未提供或留空,服务器会从身份验证身份中派生授权身份。 服务器负责验证客户端的凭据,并验证其与客户端身份验证身份关联的身份是否允许代表(或作为)授权身份。
例如,管理员或超级用户可以承担另一个角色
imap.authenticate "PLAIN", "root", passwd, authzid: "user"
公共类方法
创建一个 RFC7628 OAuth 验证器。
参数¶ ↑
请参阅子类以获取必需的参数。 以下参数均为可选,但值得注意的是,**应用程序协议被允许要求** authzid
(或其他参数,例如 host
或 port
) **以及特定的服务器实现**。
-
可选
authzid
— 代表或作为另一个身份的授权身份。请注意,与某些其他验证器不同,
username
设置的是授权身份而不是身份验证身份。 身份验证身份由 OAuth 令牌为客户端建立。 -
可选
host
— 客户端连接的主机名。 -
可选
port
— 客户端连接的服务端口。 -
可选
mthd
— HTTP 方法 -
可选
path
— HTTP 路径数据 -
可选
post
— HTTP post 数据 -
可选
qs
— HTTP 查询字符串
任何其他关键字参数都会被忽略。
# File net-imap-0.5.4/lib/net/imap/sasl/oauthbearer_authenticator.rb, line 84 def initialize(authzid: nil, host: nil, port: nil, username: nil, query: nil, mthd: nil, path: nil, post: nil, qs: nil, **) @authzid = authzid || username @host = host @port = port @mthd = mthd @path = path @post = post @qs = qs || query @done = false end
公共实例方法
当初始客户端响应已发送时返回 true。
除非此方法返回 true,否则身份验证不应成功,但这 **不** 表示成功。
# File net-imap-0.5.4/lib/net/imap/sasl/oauthbearer_authenticator.rb, line 119 def done?; @done end
RFC7628 §3.1 格式化的响应。
# File net-imap-0.5.4/lib/net/imap/sasl/oauthbearer_authenticator.rb, line 99 def initial_client_response kv_pairs = { host: host, port: port, mthd: mthd, path: path, post: post, qs: qs, auth: authorization, # authorization is implemented by subclasses }.compact [gs2_header, *kv_pairs.map {|kv| kv.join("=") }, "\1"].join("\1") end
第一次返回 initial_client_response
,然后返回 “^A
”。
# File net-imap-0.5.4/lib/net/imap/sasl/oauthbearer_authenticator.rb, line 108 def process(data) @last_server_response = data done? ? "\1" : initial_client_response ensure @done = true end