Class: WSDL::Security::ResponsePolicy

Inherits:
Object
  • Object
show all
Defined in:
lib/wsdl/security/response_policy.rb

Overview

Immutable response-side security policy.

This policy controls whether response verification is enforced.

Constant Summary collapse

MODE_DISABLED =

Do not enforce response signature validation on call.

:disabled
MODE_IF_PRESENT =

Verify response only if a signature is present.

:if_present
MODE_REQUIRED =

Require a valid signature on every response.

:required
MODES =

Allowed response verification modes.

Returns:

  • (Array<Symbol>)
[MODE_DISABLED, MODE_IF_PRESENT, MODE_REQUIRED].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mode:, options:) ⇒ ResponsePolicy

Returns a new instance of ResponsePolicy.

Parameters:



33
34
35
36
37
38
39
# File 'lib/wsdl/security/response_policy.rb', line 33

def initialize(mode:, options:)
  validate_mode!(mode)

  @mode = mode
  @options = options
  freeze
end

Instance Attribute Details

#modeSymbol (readonly)

Returns:

  • (Symbol)


42
43
44
# File 'lib/wsdl/security/response_policy.rb', line 42

def mode
  @mode
end

#optionsResponseVerification::Options (readonly)



45
46
47
# File 'lib/wsdl/security/response_policy.rb', line 45

def options
  @options
end

Class Method Details

.defaultResponsePolicy

Creates the default response policy.

Returns:



27
28
29
# File 'lib/wsdl/security/response_policy.rb', line 27

def self.default
  new(mode: MODE_DISABLED, options: ResponseVerification::Options.default)
end

Instance Method Details

#disabled?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/wsdl/security/response_policy.rb', line 60

def disabled?
  @mode == MODE_DISABLED
end

#enforce!(response) ⇒ void

This method returns an undefined value.

Enforces response verification according to this policy's mode.

Parameters:

Raises:



80
81
82
83
84
85
86
87
88
89
# File 'lib/wsdl/security/response_policy.rb', line 80

def enforce!(response)
  case @mode
  when MODE_DISABLED
    nil
  when MODE_IF_PRESENT
    response.security.verify! if response.security.signature_present?
  when MODE_REQUIRED
    response.security.verify!
  end
end

#required?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/wsdl/security/response_policy.rb', line 70

def required?
  @mode == MODE_REQUIRED
end

#verify_if_present?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/wsdl/security/response_policy.rb', line 65

def verify_if_present?
  @mode == MODE_IF_PRESENT
end

#with_mode(mode) ⇒ ResponsePolicy

Parameters:

  • mode (Symbol)

Returns:



49
50
51
# File 'lib/wsdl/security/response_policy.rb', line 49

def with_mode(mode)
  self.class.new(mode:, options: @options)
end

#with_options(options) ⇒ ResponsePolicy

Parameters:

Returns:



55
56
57
# File 'lib/wsdl/security/response_policy.rb', line 55

def with_options(options)
  self.class.new(mode: @mode, options:)
end