クラス: Mongo::Server::PendingConnection Private
- 継承:
-
ConnectionBase
- オブジェクト
- ConnectionCommon
- ConnectionBase
- Mongo::Server::PendingConnection
- 次による拡張機能。
- 転送可能
- 定義:
- build/ruby-Driver-v 2.19 /lib/mongo/server/pending_ connection.rb
Overview
このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。
このクラスは、ハンドシェイクおよび認証中に接続をカプセル化します。
定数の概要
ConnectionBaseから継承された定数
ConnectionBase::DEFAULT_MAX_BSON_OBJECT_SIZE 、 ConnectionBase::MAX_BSON_COMMAND_OVERHEAD 、 ConnectionBase::REDIRECT_MAX_BSON_SIZE
Loggableに含まれる定数
インスタンス属性の概要を折りたたむ
-
#id ⇒ Integer
readOnly
private
接続の ID。
ConnectionBaseから継承される属性
#description 、 #options 、 #server
Monitoring::Publishable
ConnectionCommonから継承される属性
インスタンス メソッドの概要を折りたたむ
- #handshake_and_authenticate = オブジェクト private
-
#初期化(ソケット、サーバー、モニタリング、オプション = {}) = PendingConnection
コンストラクター
private
PendingConnection の新しいインスタンス。
ConnectionBaseから継承されたメソッド
#app_metadata 、 #dispatch 、 #生成、 #service_id
から含まれるメソッド::public
#publish_cmap_event 、 #publish_event 、 #publish_sam_event
Loggableに含まれるメソッド
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
ConnectionCommonから継承されたメソッド
コンストラクターの詳細
#初期化(ソケット、サーバー、モニタリング、オプション = {}) = PendingConnection
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
PendingConnection の新しいインスタンスを返します。
27 28 29 30 31 32 33 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/pending_connection.rb', 行27 デフォルト 初期化(ソケット, サーバー, モニタリング, = {}) @socket = ソケット @options = @server = サーバー @monitoring = モニタリング @id = [:id] end |
インスタンス属性の詳細
ID ~整数(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
接続の ID を返します。 これは、この PendingConnection インスタンスが作成された通常の接続オブジェクトの ID と同じ ID です。
38 39 40 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/pending_connection.rb', 行38 デフォルト id @id end |
インスタンス メソッドの詳細
#handshake_and_authenticate =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/pending_connection.rb', 行40 デフォルト response_and_authenticate. 推測的_認証_ドキュメント = nil 場合 [:user] || [:auth_mech] 認証インスタンスを作成するには、次のメカニズムを指定する必要があります: # ではありますが、最終的に # が使用されます(これは返されるデータによって異なるため) ハンドシェイク、具体的にはサーバー バージョン)。 # ただし、推測的サーバーをサポートするのは4.4 + サーバーのみであることが # 認証。これらのサーバーは通常、 # SCRAM-SHA- 256 。 ユーザー アカウントは4.4 + に作成されると予想されます。 # サーバーでは通常、SCRAM-SHA- 256認証が許可されます。 4.4より前のサーバーから移行した # ユーザー アカウントでは のみ許可される場合があります # SCRAM-SHA- 1 。 したがって、デフォルトで SCRAM-SHA- 256の使用は # は 認識可能であり、推測的認証仕様 によっても管理されます。 # メカニズムが指定されておらず、 3.0 + とやり取りしている場合 サーバーは推測的認証ドキュメントを送信します。サーバーは # ではそれを無視し、明示的な使用して認証を行います 後で メカニズムを CR にデフォルト設定した後の# コマンドです。 # メカニズムが指定されておらず、 4.4 + とやり取りしている場合 # サーバーとユーザー アカウントでは SCRAM-SHA- 256が許可されていない場合、次のようにします の後に SCRAM-SHA- 1を使用して別のコマンドで認証を行います SCRAM メカニズムのネゴシエートを通過します。 = オプション::編集済み.新着情報(:auth_mech => :SCRAM 256) 推測的_認証_ユーザー = 認証::user.新着情報(.merge()) 推測的_認証 = 認証.得る(推測的_認証_ユーザー, 自己) 推測的_認証_ドキュメント = 推測的_認証.交信.推測的_認証_ドキュメント end 結果 = handshake!(推測的_認証_ドキュメント: 推測的_認証_ドキュメント) 場合 説明.不明な場合 発生 エラー::internalDriverError, "ハンドシェイク成功後、接続の説明が不明になりません: #{ Description . explain } " end begin 場合 推測的_認証_ドキュメント & & (推測的_認証_結果 = 結果['推測的認証']) ただし、 説明.機能.SCRAM_sha_ 1 _enabled? 発生 エラー::InvalidServerAuthResponse, 「推測的認証は3.0より前のサーバーで成功しました」 end ケース 推測的_認証_ユーザー.メカニズム 次の場合: :mongodb_x 509 #完了 # 認証メカニズムはデフォルトでSCRAM 256 に設定されていますが、ユーザーが指定した場合 SCRAM推測的認証ができる可能性があることを明示的に示します SCRAMでの#。 次の場合: :SCRAM, :SCRAM 256 認証します。( 推測的_auth_client_nance: 推測的_認証.交信.client_nonce, 推測的_認証_mech: 推測的_認証_ユーザー.メカニズム, 推測的_認証_結果: 推測的_認証_結果, ) else 発生 エラー::internalDriverError, 「 メカニズム . メカニズム で は推測 的 認証 が予期せず成功し まし た end elsif !説明.アービタ 認証します。 end ヘルプ mongo::エラー, mongo::エラー::AuthError => 除外 除外.service_id = service_id 発生 end 場合 説明.不明な場合 発生 エラー::internalDriverError, "認証成功後は接続の説明を不明にできません: #{ Description . explain } " end 場合 サーバー.load_ balancer? & & !説明.mongos? 発生 エラー::RedLoadBalancerTarget, 負荷分散された操作には mongos を接続する必要がありますが、 #{アドレス.シード}のサーバーは自分自身を#{ Description . server_type . to_s . gsub ( ' _ ' )として報告しました。 ' ) } } " end end |