oauth2 2.0.18 → 2.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +211 -5
- data/CITATION.cff +6 -6
- data/CONTRIBUTING.md +86 -32
- data/FUNDING.md +2 -6
- data/LICENSE.md +111 -0
- data/{LICENSE.txt → MIT.md} +6 -7
- data/README.md +365 -741
- data/SECURITY.md +1 -4
- data/certs/pboling.pem +27 -0
- data/lib/oauth2/access_token.rb +35 -32
- data/lib/oauth2/auth_sanitizer.rb +20 -0
- data/lib/oauth2/authenticator.rb +9 -7
- data/lib/oauth2/client.rb +76 -19
- data/lib/oauth2/error.rb +10 -6
- data/lib/oauth2/filtered_attributes.rb +7 -49
- data/lib/oauth2/response.rb +30 -24
- data/lib/oauth2/version.rb +2 -1
- data/lib/oauth2.rb +39 -17
- data/sig/oauth2/filtered_attributes.rbs +6 -1
- data/sig/oauth2/sanitized_logger.rbs +32 -0
- data/sig/oauth2/thing_filter.rbs +10 -0
- data/sig/oauth2/version.rbs +1 -0
- data.tar.gz.sig +0 -0
- metadata +237 -103
- metadata.gz.sig +0 -0
- data/IRP.md +0 -107
- data/OIDC.md +0 -167
- data/REEK +0 -0
- data/THREAT_MODEL.md +0 -85
data/lib/oauth2.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
# includes modules from stdlib
|
|
4
|
-
require "cgi"
|
|
4
|
+
require "cgi/escape"
|
|
5
5
|
require "time"
|
|
6
6
|
|
|
7
7
|
# third party gems
|
|
@@ -10,6 +10,7 @@ require "version_gem"
|
|
|
10
10
|
|
|
11
11
|
# includes gem files
|
|
12
12
|
require_relative "oauth2/version"
|
|
13
|
+
require_relative "oauth2/auth_sanitizer"
|
|
13
14
|
require_relative "oauth2/filtered_attributes"
|
|
14
15
|
require_relative "oauth2/error"
|
|
15
16
|
require_relative "oauth2/authenticator"
|
|
@@ -43,38 +44,59 @@ module OAuth2
|
|
|
43
44
|
# config[:silence_no_tokens_warning] = false
|
|
44
45
|
# end
|
|
45
46
|
#
|
|
47
|
+
# @example Customize filtered output markers and debug-log value filtering by key name
|
|
48
|
+
# OAuth2.configure do |config|
|
|
49
|
+
# config[:filtered_label] = "[REDACTED]"
|
|
50
|
+
# config[:filtered_debug_keys] += ["client_assertion"]
|
|
51
|
+
# end
|
|
52
|
+
#
|
|
53
|
+
# Existing objects and logger wrappers snapshot filtering configuration during
|
|
54
|
+
# initialization. Changing these config values later affects only newly
|
|
55
|
+
# initialized objects and debug loggers.
|
|
56
|
+
#
|
|
46
57
|
# @return [SnakyHash::SymbolKeyed] A mutable Hash-like config with symbol keys
|
|
47
58
|
DEFAULT_CONFIG = SnakyHash::SymbolKeyed.new(
|
|
48
59
|
silence_extra_tokens_warning: true,
|
|
49
60
|
silence_no_tokens_warning: true,
|
|
61
|
+
filtered_label: "[FILTERED]",
|
|
62
|
+
filtered_debug_keys: %w[
|
|
63
|
+
access_token
|
|
64
|
+
refresh_token
|
|
65
|
+
id_token
|
|
66
|
+
client_secret
|
|
67
|
+
assertion
|
|
68
|
+
code_verifier
|
|
69
|
+
token
|
|
70
|
+
]
|
|
50
71
|
)
|
|
51
72
|
|
|
52
73
|
# The current runtime configuration for the library.
|
|
53
74
|
#
|
|
54
75
|
# @return [SnakyHash::SymbolKeyed]
|
|
55
|
-
|
|
76
|
+
CONFIG = DEFAULT_CONFIG.dup
|
|
56
77
|
|
|
57
78
|
class << self
|
|
58
|
-
|
|
79
|
+
def config
|
|
80
|
+
CONFIG
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Configure global library behavior.
|
|
59
84
|
#
|
|
60
|
-
#
|
|
85
|
+
# Yields the mutable configuration object so callers can update settings.
|
|
61
86
|
#
|
|
62
|
-
# @
|
|
63
|
-
|
|
87
|
+
# @yieldparam [SnakyHash::SymbolKeyed] config the configuration object
|
|
88
|
+
# @return [void]
|
|
89
|
+
def configure
|
|
90
|
+
yield config
|
|
91
|
+
end
|
|
64
92
|
end
|
|
65
|
-
|
|
66
|
-
# Configure global library behavior.
|
|
67
|
-
#
|
|
68
|
-
# Yields the mutable configuration object so callers can update settings.
|
|
69
|
-
#
|
|
70
|
-
# @yieldparam [SnakyHash::SymbolKeyed] config the configuration object
|
|
71
|
-
# @return [void]
|
|
72
|
-
def configure
|
|
73
|
-
yield @config
|
|
74
|
-
end
|
|
75
|
-
module_function :configure
|
|
76
93
|
end
|
|
77
94
|
|
|
95
|
+
# Wire OAuth2::AUTH_SANITIZER's label provider to read from OAuth2.config so that
|
|
96
|
+
# FilteredAttributes-bearing objects and OAuth2::AUTH_SANITIZER::SanitizedLogger instances
|
|
97
|
+
# pick up OAuth2.config[:filtered_label] at their initialization time.
|
|
98
|
+
OAuth2::AUTH_SANITIZER.filtered_label_provider = -> { OAuth2.config[:filtered_label] }
|
|
99
|
+
|
|
78
100
|
# Extend OAuth2::Version with VersionGem helpers to provide semantic version helpers.
|
|
79
101
|
OAuth2::Version.class_eval do
|
|
80
102
|
extend VersionGem::Basic
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
module OAuth2
|
|
2
2
|
module FilteredAttributes
|
|
3
|
+
module InitializerMethods
|
|
4
|
+
def initialize: (*untyped args) { () -> untyped } -> untyped
|
|
5
|
+
end
|
|
6
|
+
|
|
3
7
|
def self.included: (untyped) -> untyped
|
|
4
|
-
def filtered_attributes: (*String) -> void
|
|
8
|
+
def filtered_attributes: (*(String | Symbol)) -> void
|
|
9
|
+
def thing_filter: () -> OAuth2::ThingFilter
|
|
5
10
|
end
|
|
6
11
|
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module OAuth2
|
|
2
|
+
class SanitizedLogger
|
|
3
|
+
def initialize: (untyped logger) -> void
|
|
4
|
+
|
|
5
|
+
def add: (untyped severity, ?untyped message, ?untyped progname) { () -> untyped } -> untyped
|
|
6
|
+
def <<: (String message) -> untyped
|
|
7
|
+
def debug: (?untyped progname) { () -> untyped } -> untyped
|
|
8
|
+
def info: (?untyped progname) { () -> untyped } -> untyped
|
|
9
|
+
def warn: (?untyped progname) { () -> untyped } -> untyped
|
|
10
|
+
def error: (?untyped progname) { () -> untyped } -> untyped
|
|
11
|
+
def fatal: (?untyped progname) { () -> untyped } -> untyped
|
|
12
|
+
def unknown: (?untyped progname) { () -> untyped } -> untyped
|
|
13
|
+
def close: () -> void
|
|
14
|
+
def formatter: () -> untyped
|
|
15
|
+
def formatter=: (untyped formatter) -> void
|
|
16
|
+
def level: () -> untyped
|
|
17
|
+
def level=: (untyped level) -> void
|
|
18
|
+
def progname: () -> untyped
|
|
19
|
+
def progname=: (untyped progname) -> void
|
|
20
|
+
def respond_to_missing?: (Symbol method_name, ?bool include_private) -> bool
|
|
21
|
+
def method_missing: (Symbol method_name, *untyped args) { () -> untyped } -> untyped
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def log: (Symbol level, ?untyped progname) { () -> untyped } -> untyped
|
|
26
|
+
def sanitize: (untyped message) -> untyped
|
|
27
|
+
def thing_filter: () -> OAuth2::ThingFilter
|
|
28
|
+
def sanitize_authorization_header: (String message) -> String
|
|
29
|
+
def sanitize_json_pairs: (String message) -> String
|
|
30
|
+
def sanitize_form_and_query_pairs: (String message) -> String
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module OAuth2
|
|
2
|
+
class ThingFilter
|
|
3
|
+
attr_reader things: Array[String]
|
|
4
|
+
attr_reader label: String
|
|
5
|
+
|
|
6
|
+
def initialize: (Enumerable[untyped] things, label: String) -> void
|
|
7
|
+
def filtered?: (untyped thing_name) -> bool
|
|
8
|
+
def pattern_source: () -> String
|
|
9
|
+
end
|
|
10
|
+
end
|
data/sig/oauth2/version.rbs
CHANGED
data.tar.gz.sig
CHANGED
|
Binary file
|