Class: RubySMB::Gss::Provider::Kerberos::Authenticator

Inherits:
Authenticator::Base
  • Object
show all
Defined in:
lib/ruby_smb/gss/provider/kerberos.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#mech_token ⇒ String? (readonly)

Returns the most recent mechanism token received from the client.

Returns:

  • (String, nil) —

    the most recent mechanism token received from the client.



107
108
109
# File 'lib/ruby_smb/gss/provider/kerberos.rb', line 107

def mech_token
  @mech_token
end

Instance Method Details

#process(request_buffer = nil) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/ruby_smb/gss/provider/kerberos.rb', line 109

def process(request_buffer=nil)
  if request_buffer.nil?
    return Result.new(Gss.gss_neg_token_init(@provider.mech_types), WindowsError::NTStatus::STATUS_SUCCESS)
  end

  token = extract_mech_token(request_buffer)
  if token.nil?
    logger.warn('Received a Kerberos request carrying no mechanism token')
    return
  end

  @mech_token = token
  result = @provider.on_mech_token(token, self)
  # a handler must return a Result: the session setup path calls nt_status on whatever comes back, so
  # anything else (a missing handler, or a handler that returns e.g. a boolean) is refused here rather
  # than handed on to crash the caller
  return result if result.is_a?(Result)

  Result.new(nil, WindowsError::NTStatus::STATUS_LOGON_FAILURE)
end

#reset! ⇒ Object



101
102
103
104
# File 'lib/ruby_smb/gss/provider/kerberos.rb', line 101

def reset!
  super
  @mech_token = nil
end