类:Mongo::Auth::ScramConversationBase Private
- 继承:
-
SaslConversationBase
- 对象
- ConversationBase
- SaslConversationBase
- Mongo::Auth::ScramConversationBase
- 定义于:
- build/Ruby-driver-v 2.19 /lib/mongo/auth/scram_conversation_base.rb
Overview
此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。
定义客户端和服务器之间身份验证对话的常见行为。
常量摘要折叠
- MIN_ITER_COUNT =
此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。
SCRAM-SHA- 1和 SCRAM-SHA- 256的最小迭代计数。
4096
从SaslConversationBase继承的常量
Mongo::Auth::SaslConversationBase::CLIENT_CONTINUE_MESSAGE 、 Mongo::Auth::SaslConversationBase::CLIENT_FIRST_MESSAGE
实例属性摘要折叠
-
# client_nonce ⇒ string
只读
private
Client_nonce客户端随机数。
-
# ID ⇒ 整数
只读
private
获取对话的 ID。
从ConversationBase继承的属性
实例方法摘要折叠
-
#continue(reply_document, connection) ⇒ Protocol::Message
private
继续SCRAM对话。
-
#finalize(connection) ⇒ Protocol::Message
private
完成SCRAM对话。
-
#initialize (user, connection, client_nonce: nil) ⇒ ScramConversationBase
构造函数
private
创建新对话。
-
# process_Continue_response (reply_document) ⇒ 对象
private
处理来自服务器的第二个响应。
-
# server_verified? ⇒ true | fase
private
客户端是否验证了来自服务器的 ServerSignature。
-
# speculative_auth_document ⇒ 哈希 | nil
private
返回要在握手中作为 speculativeAuthenticate 键的值提供给服务器的哈希值。
从SaslConversationBase继承的方法
从ConversationBase继承的方法
#build_message , #validate_external_auth_source
构造函数详情
#initialize (user, connection, client_nonce: nil) ⇒ ScramConversationBase
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
创建新对话。
38 39 40 41 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/auth/scram_conversation_base.rb', 第38行 def 初始化(user, 连接, client_nonce: nil) 超 @client_nonce = client_nonce || SecureRandom.基64 end |
实例属性详细信息
# client_nonce ⇒ string (只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回 client_nonce 客户端随机数。
44 45 46 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/auth/scram_conversation_base.rb', 第44行 def client_nonce @client_nonce end |
# ID =" Integer " (只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
获取对话的 ID。
52 53 54 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/auth/scram_conversation_base.rb', 第52行 def id @id end |
实例方法详细信息
#continue(reply_document, connection) ⇒ Protocol::Message
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
继续 SCRAM 对话。 在设置先前服务器通信的回复后,这会将客户端最终消息发送到服务器。
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/auth/scram_conversation_base.rb', 第73行 def 继续(reply_document, 连接) @id = reply_document[' sessionId '] payload_data = reply_document[' payload '].数据 parsed_data = parse_payload(payload_data) @server_nonce = parsed_data.获取('r') @salt = Base64.strict_decode 64(parsed_data.获取(' s ')) @iterations = parsed_data.获取(' i ').to_i.点击 do |i| if i < MIN_ITER_COUNT 提高 错误::InsufficientIterationCount.new( 错误::InsufficientIterationCount.(MIN_ITER_COUNT, i)) end end @auth_message = " #{ } , #{ payload_data } , #{ without_proof } " validate_server_nonce! 选择器 = CLIENT_CONTINUE_MESSAGE.合并(merge)( 有效负载: , sessionId: id, ) (连接, user.auth_source, 选择器) end |
#finalize(connection) ⇒ Protocol::Message
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
完成SCRAM对话。 这将被迭代,直到提供的回复表明对话已完成。
111 112 113 114 115 116 117 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/auth/scram_conversation_base.rb', 第111行 def finalize(连接) 选择器 = CLIENT_CONTINUE_MESSAGE.合并(merge)( 有效负载: , sessionId: id, ) (连接, user.auth_source, 选择器) end |
# process_Continue_response (reply_document) ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
处理来自服务器的第二个响应。
100 101 102 103 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/auth/scram_conversation_base.rb', 第100行 def process_Continue_response(reply_document) payload_data = parse_payload(reply_document[' payload '].数据) check_server_signature(payload_data) end |
# server_verified? ⇒ true | fase
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
客户端是否验证了来自服务器的 ServerSignature。
59 60 61 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/auth/scram_conversation_base.rb', 第59行 def server_verified? !!@server_verified end |
# speculative_auth_document ⇒哈希 | nil
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回要在握手中作为 speculativeAuthenticate 键的值提供给服务器的哈希值。
如果身份验证机制不支持推测性身份验证,则此方法返回 nil。
126 127 128 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/auth/scram_conversation_base.rb', 第126行 def speculative_auth_document client_first_document.合并(merge)(数据库: user.auth_source) end |