Class: Verikloak::Rails::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/verikloak/rails/configuration.rb

Overview

Configuration for verikloak-rails.

Controls how the Rack middleware is initialized (discovery, audience, issuer, leeway, skip paths) and Rails-specific behavior such as controller inclusion, logging tags, and error rendering.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializevoid

Initialize configuration with sensible defaults for Rails apps.



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/verikloak/rails/configuration.rb', line 73

def initialize
  @discovery_url = nil
  @audience      = 'rails-api'
  @issuer        = nil
  @leeway        = 60
  @skip_paths    = ['/up', '/health', '/rails/health'].freeze
  @logger_tags    = %i[request_id sub]
  @error_renderer = Verikloak::Rails::ErrorRenderer.new
  @auto_include_controller = true
  @render_500_json = false
  @rescue_pundit = true
  @middleware_insert_before = nil
  @middleware_insert_after = nil
  @auto_insert_bff_header_guard = true
  @bff_header_guard_insert_before = nil
  @bff_header_guard_insert_after = nil
  @token_verify_options = {}
  @decoder_cache_limit = nil
  @token_env_key = nil
  @user_env_key = nil
  @bff_header_guard_options = {}
  @allow_http = false
  @skip_path_matcher = nil
end

Instance Attribute Details

#allow_httpObject

Returns the value of attribute allow_http.



59
60
61
# File 'lib/verikloak/rails/configuration.rb', line 59

def allow_http
  @allow_http
end

#audienceString, ...

Expected audience (‘aud`) claim. Accepts String or Array.

Returns:

  • (String, Array<String>, nil)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#auto_include_controllerBoolean

Auto-include the controller concern into ActionController::Base.

Returns:

  • (Boolean)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#auto_insert_bff_header_guardBoolean

Auto-insert ‘Verikloak::Bff::HeaderGuard` when available.

Returns:

  • (Boolean)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#bff_header_guard_insert_afterObject, ...

Rack middleware to insert the header guard after.

Returns:

  • (Object, String, Symbol, nil)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#bff_header_guard_insert_beforeObject, ...

Rack middleware to insert the header guard before.

Returns:

  • (Object, String, Symbol, nil)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#bff_header_guard_optionsObject

Returns the value of attribute bff_header_guard_options.



59
60
61
# File 'lib/verikloak/rails/configuration.rb', line 59

def bff_header_guard_options
  @bff_header_guard_options
end

#decoder_cache_limitObject

Returns the value of attribute decoder_cache_limit.



59
60
61
# File 'lib/verikloak/rails/configuration.rb', line 59

def decoder_cache_limit
  @decoder_cache_limit
end

#discovery_urlString?

OIDC discovery document URL.

Returns:

  • (String, nil)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#error_rendererObject

Custom error renderer object responding to ‘render(controller, error)`.

Returns:

  • (Object)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#issuerString?

Expected issuer (‘iss`) claim.

Returns:

  • (String, nil)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#leewayInteger

Clock skew allowance in seconds.

Returns:

  • (Integer)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#logger_tagsArray<Symbol>

Log tags to include (supports :request_id, :sub).

Returns:

  • (Array<Symbol>)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#middleware_insert_afterObject, ...

Rack middleware to insert ‘Verikloak::Middleware` after.

Returns:

  • (Object, String, Symbol, nil)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#middleware_insert_beforeObject, ...

Rack middleware to insert ‘Verikloak::Middleware` before.

Returns:

  • (Object, String, Symbol, nil)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#render_500_jsonBoolean

Rescue StandardError and render a JSON 500 response.

Returns:

  • (Boolean)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#rescue_punditBoolean

Rescue ‘Pundit::NotAuthorizedError` and render JSON 403 responses.

Returns:

  • (Boolean)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#skip_pathsArray<String>

Paths to skip verification.

Returns:

  • (Array<String>)


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/verikloak/rails/configuration.rb', line 58

class Configuration
  attr_accessor :discovery_url, :audience, :issuer, :leeway,
                :logger_tags, :error_renderer, :auto_include_controller,
                :render_500_json, :rescue_pundit,
                :middleware_insert_before, :middleware_insert_after,
                :auto_insert_bff_header_guard,
                :bff_header_guard_insert_before, :bff_header_guard_insert_after,
                :token_verify_options, :decoder_cache_limit,
                :token_env_key, :user_env_key, :bff_header_guard_options,
                :allow_http

  attr_reader :skip_paths

  # Initialize configuration with sensible defaults for Rails apps.
  # @return [void]
  def initialize
    @discovery_url = nil
    @audience      = 'rails-api'
    @issuer        = nil
    @leeway        = 60
    @skip_paths    = ['/up', '/health', '/rails/health'].freeze
    @logger_tags    = %i[request_id sub]
    @error_renderer = Verikloak::Rails::ErrorRenderer.new
    @auto_include_controller = true
    @render_500_json = false
    @rescue_pundit = true
    @middleware_insert_before = nil
    @middleware_insert_after = nil
    @auto_insert_bff_header_guard = true
    @bff_header_guard_insert_before = nil
    @bff_header_guard_insert_after = nil
    @token_verify_options = {}
    @decoder_cache_limit = nil
    @token_env_key = nil
    @user_env_key = nil
    @bff_header_guard_options = {}
    @allow_http = false
    @skip_path_matcher = nil
  end

  # @param value [Array<String, Regexp>]
  def skip_paths=(value)
    @skip_paths = Array(value).freeze
    @skip_path_matcher = nil
  end

  # Pre-compiled skip-path matcher shared with the controller layer.
  # @return [Verikloak::Rails::SkipPathChecker]
  def skip_path_matcher
    @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
  end

  # Options forwarded to the base Verikloak Rack middleware.
  # @return [Hash]
  # @example
  #   Verikloak::Rails.config.middleware_options
  #   #=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }
  def middleware_options
    {
      discovery_url: discovery_url,
      audience: audience,
      issuer: issuer,
      leeway: leeway,
      skip_paths: skip_paths,
      token_verify_options: token_verify_options,
      decoder_cache_limit: decoder_cache_limit,
      token_env_key: token_env_key,
      user_env_key: user_env_key,
      allow_http: allow_http
    }.compact
  end
end

#token_env_keyObject

Returns the value of attribute token_env_key.



59
60
61
# File 'lib/verikloak/rails/configuration.rb', line 59

def token_env_key
  @token_env_key
end

#token_verify_optionsObject

Returns the value of attribute token_verify_options.



59
60
61
# File 'lib/verikloak/rails/configuration.rb', line 59

def token_verify_options
  @token_verify_options
end

#user_env_keyObject

Returns the value of attribute user_env_key.



59
60
61
# File 'lib/verikloak/rails/configuration.rb', line 59

def user_env_key
  @user_env_key
end

Instance Method Details

#middleware_optionsHash

Options forwarded to the base Verikloak Rack middleware.

Examples:

Verikloak::Rails.config.middleware_options
#=> { discovery_url: 'https://example/.well-known/openid-configuration', leeway: 60, ... }

Returns:

  • (Hash)


115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/verikloak/rails/configuration.rb', line 115

def middleware_options
  {
    discovery_url: discovery_url,
    audience: audience,
    issuer: issuer,
    leeway: leeway,
    skip_paths: skip_paths,
    token_verify_options: token_verify_options,
    decoder_cache_limit: decoder_cache_limit,
    token_env_key: token_env_key,
    user_env_key: user_env_key,
    allow_http: allow_http
  }.compact
end

#skip_path_matcherVerikloak::Rails::SkipPathChecker

Pre-compiled skip-path matcher shared with the controller layer.



106
107
108
# File 'lib/verikloak/rails/configuration.rb', line 106

def skip_path_matcher
  @skip_path_matcher ||= SkipPathChecker.new(skip_paths)
end