Module: Auth::Sanitizer

Defined in:
lib/auth/sanitizer/core.rb,
lib/auth/sanitizer/version.rb,
lib/auth/sanitizer/thing_filter.rb,
lib/auth/sanitizer/value_sanitizer.rb,
lib/auth/sanitizer/sanitized_logger.rb,
lib/auth/sanitizer/filtered_attributes.rb

Overview

Credential redaction for inspect output and debug logging.

Defined Under Namespace

Modules: FilteredAttributes, Version Classes: Error, SanitizedLogger, ThingFilter, ValueSanitizer

Constant Summary collapse

DEFAULT_FILTERED_KEYS =

Default keys filtered from debug log output.

%w[
  access_token
  refresh_token
  id_token
  client_secret
  assertion
  code_verifier
  token
].freeze
DEFAULT_FILTERED_LABEL =

Default replacement label for redacted values.

"[FILTERED]"
DEFAULT_FILTERED_LABEL_PROVIDER =

Default callable used to provide the filtered replacement label.

-> { DEFAULT_FILTERED_LABEL }
VERSION =

Current gem version exposed at the traditional constant location.

Version::VERSION

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.default_filtered_keys ⇒ Array<String>

Returns the default set of key names filtered from debug log output.

Host gems may override this by passing filtered_keys: directly to
Auth::Sanitizer::SanitizedLogger#initialize.

Returns:

  • (Array<String>)


62
63
64
# File 'lib/auth/sanitizer/core.rb', line 62

def default_filtered_keys
  DEFAULT_FILTERED_KEYS
end

.sanitize(value, filtered_keys: default_filtered_keys, label: filtered_label, **options) ⇒ Object

Sanitize a value using the configured key names and replacement label.
Hashes and arrays are traversed recursively; strings are filtered using
the same formats supported by {SanitizedLogger}.

Parameters:

  • value (Object) —

    Value to sanitize

  • filtered_keys (Array<String>) (defaults to: default_filtered_keys) —

    Key names whose values should be redacted

  • label (String) (defaults to: filtered_label) —

    Replacement label for redacted values

Returns:

  • (Object) —

    Sanitized copy of the value



74
75
76
# File 'lib/auth/sanitizer/core.rb', line 74

def sanitize(value, filtered_keys: default_filtered_keys, label: filtered_label, **options)
  ValueSanitizer.new(filtered_keys: filtered_keys, label: label, **options).sanitize(value)
end

Instance Method Details

#filtered_label ⇒ String

Returns the current filtered label by calling the installed provider.

Host gems may install a provider that reads from their own config by
calling #filtered_label_provider=.

Returns:

  • (String)


36
37
38
# File 'lib/auth/sanitizer/core.rb', line 36

define_singleton_method(:filtered_label) do
  filtered_label_provider_mutex.synchronize { filtered_label_provider }.call
end

#filtered_label_provider= ⇒ void

This method returns an undefined value.

Install a custom provider for the filtered label.

The provider callable is invoked each time a new {FilteredAttributes}- or
{SanitizedLogger}-bearing object is initialized, allowing the label to track a host gem’s
live configuration while still being snapshotted per object instance.

Examples:

Delegate to a host gem’s config

Auth::Sanitizer.filtered_label_provider = -> { MyGem.config[:filtered_label] }


49
50
51
52
53
# File 'lib/auth/sanitizer/core.rb', line 49

define_singleton_method(:filtered_label_provider=) do |provider|
  filtered_label_provider_mutex.synchronize do
    filtered_label_provider = provider
  end
end