클래스: Mongo::Auth::ScramConversationBase 비공개

상속:
SaslConversationBase 모두 표시
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb

개요

이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

클라이언트 와 서버 간의 인증 대화와 관련된 일반적인 동작을 정의합니다.

이후:

  • 2.0.0

상수 요약 접기

MIN_ITER_COUNT =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

SCRAM-SHA-1 및 SCRAM-SHA-256 의 최소 반복 횟수입니다.

이후:

  • 2.0.0

4096

SaslConversationBase에서 상속된 상수

Mongo::Auth::SaslConversationBase::CLIENT_CONTINUE_MESSAGE, Mongo::Auth::SaslConversationBase::CLIENT_FIRST_MESSAGE

인스턴스 속성 요약 접기

ConversationBase에서 상속된 속성

#connection, #user

인스턴스 메서드 요약 접기

SaslConversationBase에서 상속된 메서드

#start

ConversationBase에서 상속된 메서드

#build_message, #validate_external_auth_source

생성자 세부 정보

#initialize(user, connection, client_nonce: nil) ⇒ ScramConversationBase

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

새 대화를 만듭니다.

매개변수:

  • 사용자 (Auth::User)

    대화할 사용자입니다.

  • client_nonce (string | nil) (기본값: nil)

    사용할 클라이언트 논스입니다. 이 대화가 추측 인증을 수행한 연결에 대해 생성된 경우 이 클라이언트 논스는 추측 인증에 사용된 클라이언트 논스와 같아야 합니다. 그렇지 않으면 클라이언트 논스를 지정하지 않아야 합니다.

이후:

  • 2.0.0



38
39
40
41
# 파일 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', 줄 38

def 초기화(사용자, 연결, client_nonce: nil)
  super
  @client_nonce = client_nonce || SecureRandom.기본64
end

인스턴스 속성 세부 정보

#client_noncestring (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

client_nonce를 반환합니다.

반환합니다:

  • (string)

    client_nonce 클라이언트 논스입니다.

이후:

  • 2.0.0



44
45
46
# 파일 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', 줄 44

def client_nonce
  @client_nonce
end

#ID정수 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

대화의 ID를 가져옵니다.

예시:

대화의 ID를 가져옵니다.

conversation.id

반환합니다:

  • (정수)

    대화 ID입니다.

이후:

  • 2.0.0



52
53
54
# 파일 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', 줄 52

def id
  @id
end

인스턴스 메서드 세부 정보

#continue(reply_document, connection) ⇒ Protocol::Message

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

SCRAM 대화를 계속합니다. 이전 서버 통신에서 회신을 설정한 후 클라이언트 최종 메시지를 서버로 보냅니다.

매개변수:

  • Reply_document (BSON::Document)

    이전 메시지의 회신 문서입니다.

  • 연결 (Server::Connection)

    인증 중인 연결입니다.

반환합니다:

이후:

  • 2.0.0



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# 파일 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', 줄 73

def 계속(Reply_document, 연결)
  @id = Reply_document['conversationId']
  payload_data = Reply_document['payload'].데이터
  parsed_data = parse_payload(payload_data)
  @server_nonce = parsed_data.가져오기('r')
  @salt = Base64.strict_decode64(parsed_data.가져오기('s'))
  @iterations = parsed_data.가져오기('나는').to_i. do |i|
    만약 i < MIN_ITER_COUNT
      올리다 오류::불충분한 반복 횟수.신규(
        오류::불충분한 반복 횟수.메시지(MIN_ITER_COUNT, i))
    end
  end
  @auth_message = "#{first_bare},#{payload_data},#{without_Proof}"

  validate_server_nonce!

  선택기 = CLIENT_CONTINUE_MESSAGE.merge(
    페이로드: client_final_message,
    대화 ID: id,
  )
  build_message(연결, 사용자.auth_source, 선택기)
end

#finalize(connection) ⇒ Protocol::Message

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

SCRAM 대화를 마무리합니다. 이는 제공된 회신에서 대화가 완료되었음을 나타낼 때까지 반복됩니다.

매개변수:

반환합니다:

이후:

  • 2.0.0



111
112
113
114
115
116
117
# 파일 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', 줄 111

def 마무리(연결)
  선택기 = CLIENT_CONTINUE_MESSAGE.merge(
    페이로드: client_empty_message,
    대화 ID: id,
  )
  build_message(연결, 사용자.auth_source, 선택기)
end

#process_continue_response(reply_document) ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

서버 의 두 번째 응답을 처리합니다.

매개변수:

  • Reply_document (BSON::Document)

    계속 응답의 회신 문서입니다.

이후:

  • 2.0.0



100
101
102
103
# 파일 'build/ruby-driver-v2.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를 확인했는지 여부입니다.

반환합니다:

  • (true | fase)

    서버의 서명이 확인되었는지 여부입니다.

다음도 참조하세요.

이후:

  • 2.0.0



59
60
61
# 파일 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', 줄 59

def server_verified?
  !!@server_verified
end

#speculative_auth_document해시 | nil

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

핸드셰이크에서 speculativeAuthenticate 키의 값으로 서버 에 제공할 해시를 반환합니다.

인증 메커니즘이 추측 인증 을 지원 하지 않는 경우 이 메서드는 nil을 반환합니다.

반환합니다:

  • (Hash | nil)

    추측 인증 문서입니다.

이후:

  • 2.0.0



126
127
128
# 파일 'build/ruby-driver-v2.19/lib/mongo/auth/scram_conversation_base.rb', 줄 126

def speculative_auth_document
  client_first_document.merge(db: 사용자.auth_source)
end