auth-sanitizer 0.1.4 → 0.2.1
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 +63 -1
- data/CITATION.cff +1 -1
- data/CODE_OF_CONDUCT.md +0 -5
- data/CONTRIBUTING.md +74 -29
- data/FUNDING.md +0 -0
- data/LICENSE.md +10 -0
- data/README.md +136 -123
- data/RUBOCOP.md +0 -0
- data/SECURITY.md +1 -4
- data/certs/pboling.pem +27 -0
- data/lib/auth/sanitizer/core.rb +0 -0
- data/lib/auth/sanitizer/filtered_attributes.rb +27 -9
- data/lib/auth/sanitizer/sanitized_logger.rb +3 -3
- data/lib/auth/sanitizer/thing_filter.rb +0 -0
- data/lib/auth/sanitizer/version.rb +1 -1
- data/lib/auth/sanitizer.rb +6 -0
- data/lib/auth_sanitizer/loader.rb +27 -1
- data/sig/auth/sanitizer/version.rbs +8 -0
- data/sig/auth/sanitizer.rbs +0 -7
- data.tar.gz.sig +0 -0
- metadata +55 -27
- metadata.gz.sig +0 -0
- data/REEK +0 -0
data/README.md
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
<a href="https://github.com/ruby-oauth"><img alt="ruby-oauth Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/ruby-oauth/avatar-128px.svg" width="14%" align="right"/></a>
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
|
|
5
|
-
[🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
|
|
6
|
-
[🖼️ruby-lang]: https://www.ruby-lang.org/
|
|
7
|
-
[🖼️oauth2-i]: https://logos.galtzo.com/assets/images/oauth/oauth2/avatar-192px.svg
|
|
8
|
-
[🖼️oauth2]: https://github.com/ruby-oauth/oauth2
|
|
3
|
+
# 💎 Auth::Sanitizer
|
|
9
4
|
|
|
10
|
-
|
|
5
|
+
[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
|
|
11
6
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
|
|
7
|
+
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
|
|
15
8
|
|
|
16
9
|
---
|
|
17
10
|
|
|
@@ -20,13 +13,13 @@
|
|
|
20
13
|
[![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
21
14
|
|
|
22
15
|
<details>
|
|
23
|
-
|
|
16
|
+
<summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
|
|
24
17
|
|
|
25
18
|
I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
|
|
26
19
|
|
|
27
20
|
</details>
|
|
28
21
|
|
|
29
|
-
## 🌻 Synopsis
|
|
22
|
+
## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
|
|
30
23
|
|
|
31
24
|
`auth-sanitizer` provides small, dependency-light helpers for keeping OAuth and authentication secrets out of object
|
|
32
25
|
inspection and log output.
|
|
@@ -34,7 +27,7 @@ inspection and log output.
|
|
|
34
27
|
The gem is intentionally narrow in scope. It does not change HTTP requests, token objects, persistence, or application
|
|
35
28
|
configuration for you. Instead, it gives host gems and applications two reusable redaction surfaces:
|
|
36
29
|
|
|
37
|
-
- `Auth::Sanitizer::FilteredAttributes` redacts selected
|
|
30
|
+
- `Auth::Sanitizer::FilteredAttributes` redacts selected attributes from standard Ruby `#inspect` output.
|
|
38
31
|
- `Auth::Sanitizer::SanitizedLogger` wraps an existing logger and redacts sensitive values from string log messages.
|
|
39
32
|
|
|
40
33
|
Out of the box, logger sanitization filters the key names most commonly found in OAuth and OpenID Connect debug output:
|
|
@@ -76,43 +69,48 @@ This gem is used by the following libraries to ensure clean output:
|
|
|
76
69
|
- oauth-tty
|
|
77
70
|
- oauth2
|
|
78
71
|
- omniauth-ldap
|
|
72
|
+
- omniauth-identity
|
|
79
73
|
|
|
80
74
|
## 💡 Info you can shake a stick at
|
|
81
75
|
|
|
82
|
-
| Tokens to Remember
|
|
76
|
+
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
|
|
83
77
|
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
84
|
-
| Works with JRuby
|
|
78
|
+
| Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
|
|
85
79
|
| Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎truby-23.0-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf]|
|
|
86
|
-
| Works with MRI Ruby 4
|
|
87
|
-
| Works with MRI Ruby 3
|
|
88
|
-
| Works with MRI Ruby 2
|
|
89
|
-
| Support & Community
|
|
90
|
-
| Source
|
|
91
|
-
| Documentation
|
|
92
|
-
| Compliance
|
|
93
|
-
| Style
|
|
94
|
-
| Maintainer 🎖️
|
|
95
|
-
| `...` 💖
|
|
80
|
+
| Works with MRI Ruby 4 | [![Ruby 4.0 Compat][💎ruby-4.0i]][🚎11-c-wf] [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
|
|
81
|
+
| Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎ruby-3.0-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
|
|
82
|
+
| Works with MRI Ruby 2 | ![Ruby 2.2 Compat][💎ruby-2.2i] ![Ruby 2.3 Compat][💎ruby-2.3i] <br/> [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
|
|
83
|
+
| Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork] [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor] |
|
|
84
|
+
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
|
|
85
|
+
| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
|
|
86
|
+
| Compliance | [![License: MIT][📄license-img]][📄license] [![Apache license compatibility: Category A][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
|
|
87
|
+
| Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
|
|
88
|
+
| Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼♂️devto-img]][💖💁🏼♂️devto] |
|
|
89
|
+
| `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼♂️aboutme-img]][💖💁🏼♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
|
|
96
90
|
|
|
97
91
|
### Compatibility
|
|
98
92
|
|
|
99
93
|
Compatible with MRI Ruby 2.2.0+, and concordant releases of JRuby, and TruffleRuby.
|
|
94
|
+
CI workflows and Appraisals are generated for MRI Ruby 2.4+.
|
|
95
|
+
This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
|
|
96
|
+
may be higher than the gem's runtime compatibility floor when legacy Rubies are
|
|
97
|
+
not practical for the current toolchain.
|
|
100
98
|
|
|
101
|
-
| 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚
|
|
99
|
+
| 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
|
|
102
100
|
|------------------------------------------------|--------------------------------------------------------|
|
|
103
|
-
| 👟 Check it out!
|
|
101
|
+
| 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
|
|
104
102
|
|
|
105
103
|
### Federated DVCS
|
|
106
104
|
|
|
107
105
|
<details markdown="1">
|
|
108
|
-
|
|
106
|
+
<summary>Find this repo on federated forges (Coming soon!)</summary>
|
|
109
107
|
|
|
110
|
-
| Federated [DVCS][💎d-in-dvcs] Repository
|
|
108
|
+
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
|
|
111
109
|
|-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
|
|
112
|
-
| 🧪 [ruby-oauth/auth-sanitizer on GitLab][📜src-gl]
|
|
113
|
-
| 🧊 [ruby-oauth/auth-sanitizer on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate])
|
|
114
|
-
| 🐙 [ruby-oauth/auth-sanitizer on GitHub][📜src-gh]
|
|
115
|
-
| 🎮️ [Discord Server][✉️discord-invite]
|
|
110
|
+
| 🧪 [ruby-oauth/auth-sanitizer on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
|
|
111
|
+
| 🧊 [ruby-oauth/auth-sanitizer on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
|
|
112
|
+
| 🐙 [ruby-oauth/auth-sanitizer on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
|
|
113
|
+
| 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
|
|
116
114
|
|
|
117
115
|
</details>
|
|
118
116
|
|
|
@@ -123,7 +121,7 @@ Compatible with MRI Ruby 2.2.0+, and concordant releases of JRuby, and TruffleRu
|
|
|
123
121
|
Available as part of the Tidelift Subscription.
|
|
124
122
|
|
|
125
123
|
<details markdown="1">
|
|
126
|
-
|
|
124
|
+
<summary>Need enterprise-level guarantees?</summary>
|
|
127
125
|
|
|
128
126
|
The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
|
|
129
127
|
|
|
@@ -155,41 +153,6 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
|
155
153
|
gem install auth-sanitizer
|
|
156
154
|
```
|
|
157
155
|
|
|
158
|
-
### 🔒 Secure Installation
|
|
159
|
-
|
|
160
|
-
<details markdown="1">
|
|
161
|
-
<summary>For Medium or High Security Installations</summary>
|
|
162
|
-
|
|
163
|
-
This gem is cryptographically signed and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
|
|
164
|
-
[stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
|
|
165
|
-
by following the instructions below.
|
|
166
|
-
|
|
167
|
-
Add my public key (if you haven’t already; key expires 2045-04-29) as a trusted certificate:
|
|
168
|
-
|
|
169
|
-
```console
|
|
170
|
-
gem cert --add <(curl -Ls https://raw.github.com/galtzo-floss/certs/main/pboling.pem)
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
You only need to do that once. Then proceed to install with:
|
|
174
|
-
|
|
175
|
-
```console
|
|
176
|
-
gem install auth-sanitizer -P HighSecurity
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
|
|
180
|
-
|
|
181
|
-
If you want to up your security game full-time:
|
|
182
|
-
|
|
183
|
-
```console
|
|
184
|
-
bundle config set --global trust-policy MediumSecurity
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
`MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
|
|
188
|
-
|
|
189
|
-
NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
|
|
190
|
-
|
|
191
|
-
</details>
|
|
192
|
-
|
|
193
156
|
## ⚙️ Configuration
|
|
194
157
|
|
|
195
158
|
Most applications can use the defaults. Configuration is available when a host gem or application wants to align
|
|
@@ -255,7 +218,7 @@ unless auth_sanitizer_spec && auth_sanitizer_requirement.satisfied_by?(auth_sani
|
|
|
255
218
|
end
|
|
256
219
|
auth_sanitizer_loader_path = File.join(
|
|
257
220
|
auth_sanitizer_spec.full_gem_path,
|
|
258
|
-
"lib/auth_sanitizer/loader.rb"
|
|
221
|
+
"lib/auth_sanitizer/loader.rb"
|
|
259
222
|
)
|
|
260
223
|
unless File.file?(auth_sanitizer_loader_path)
|
|
261
224
|
raise LoadError, "auth-sanitizer #{auth_sanitizer_requirement} loader not found at #{auth_sanitizer_loader_path}"
|
|
@@ -287,7 +250,7 @@ unless auth_sanitizer_spec && auth_sanitizer_requirement.satisfied_by?(auth_sani
|
|
|
287
250
|
end
|
|
288
251
|
auth_sanitizer_loader_path = File.join(
|
|
289
252
|
auth_sanitizer_spec.full_gem_path,
|
|
290
|
-
"lib/auth_sanitizer/loader.rb"
|
|
253
|
+
"lib/auth_sanitizer/loader.rb"
|
|
291
254
|
)
|
|
292
255
|
unless File.file?(auth_sanitizer_loader_path)
|
|
293
256
|
raise LoadError, "auth-sanitizer #{auth_sanitizer_requirement} loader not found at #{auth_sanitizer_loader_path}"
|
|
@@ -297,7 +260,7 @@ auth_sanitizer_loader_namespace = Module.new
|
|
|
297
260
|
auth_sanitizer_loader_namespace.module_eval(
|
|
298
261
|
File.read(auth_sanitizer_loader_path),
|
|
299
262
|
auth_sanitizer_loader_path,
|
|
300
|
-
1
|
|
263
|
+
1
|
|
301
264
|
)
|
|
302
265
|
|
|
303
266
|
AUTH_SANITIZER = auth_sanitizer_loader_namespace
|
|
@@ -353,7 +316,7 @@ logger = Auth::Sanitizer::SanitizedLogger.new(
|
|
|
353
316
|
api_key
|
|
354
317
|
private_key
|
|
355
318
|
session_secret
|
|
356
|
-
]
|
|
319
|
+
]
|
|
357
320
|
)
|
|
358
321
|
```
|
|
359
322
|
|
|
@@ -363,7 +326,7 @@ You can also replace the list entirely:
|
|
|
363
326
|
logger = Auth::Sanitizer::SanitizedLogger.new(
|
|
364
327
|
Logger.new($stdout),
|
|
365
328
|
filtered_keys: %w[my_secret],
|
|
366
|
-
label: "[GONE]"
|
|
329
|
+
label: "[GONE]"
|
|
367
330
|
)
|
|
368
331
|
```
|
|
369
332
|
|
|
@@ -395,8 +358,43 @@ class OAuthCredential
|
|
|
395
358
|
end
|
|
396
359
|
```
|
|
397
360
|
|
|
398
|
-
|
|
399
|
-
|
|
361
|
+
`FilteredAttributes#inspect` delegates to `super.inspect` first, then redacts only narrow, standard Ruby inspect
|
|
362
|
+
fragments for configured names. This preserves host object inspect behavior instead of rebuilding the object's output.
|
|
363
|
+
|
|
364
|
+
For example, `filtered_attributes :access_token` redacts `@access_token="..."` in normal object inspect output:
|
|
365
|
+
|
|
366
|
+
```ruby
|
|
367
|
+
OAuthCredential.new("secret", Time.now).inspect
|
|
368
|
+
# => #<OAuthCredential:0x... @access_token=[FILTERED], @expires_at=2026-06-04 08:00:00 -0600>
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
Configured names are also redacted when they appear as string-valued keys inside standard Ruby hash inspect fragments,
|
|
372
|
+
which is useful for adapter models that store attributes in an internal hash:
|
|
373
|
+
|
|
374
|
+
```ruby
|
|
375
|
+
class IdentityRecord
|
|
376
|
+
include Auth::Sanitizer::FilteredAttributes
|
|
377
|
+
|
|
378
|
+
filtered_attributes :password_digest
|
|
379
|
+
|
|
380
|
+
def initialize(identity_data)
|
|
381
|
+
@identity_data = identity_data
|
|
382
|
+
end
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
IdentityRecord.new({id: 1, password_digest: "$2a$secret"}).inspect
|
|
386
|
+
# => #<IdentityRecord:0x... @identity_data={id: 1, password_digest: [FILTERED]}>
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
The inspect redactor intentionally leaves unsupported or highly customized inspect formats unchanged. It only replaces
|
|
390
|
+
quoted string values in these standard shapes:
|
|
391
|
+
|
|
392
|
+
- `@name="value"`
|
|
393
|
+
- `{name: "value"}`
|
|
394
|
+
- `{:name => "value"}`
|
|
395
|
+
- `{"name" => "value"}`
|
|
396
|
+
|
|
397
|
+
This conservative behavior avoids breaking host models whose `inspect` output has application-specific formatting.
|
|
400
398
|
|
|
401
399
|
Calling `filtered_attributes` again replaces the class-level list:
|
|
402
400
|
|
|
@@ -461,15 +459,16 @@ end
|
|
|
461
459
|
response = TokenResponse.new(
|
|
462
460
|
access_token: "access-token-value",
|
|
463
461
|
refresh_token: "refresh-token-value",
|
|
464
|
-
scope: "profile email"
|
|
462
|
+
scope: "profile email"
|
|
465
463
|
)
|
|
466
464
|
|
|
467
465
|
response.inspect
|
|
468
|
-
# => #<TokenResponse:
|
|
466
|
+
# => #<TokenResponse:0x... @access_token=[FILTERED], @refresh_token=[FILTERED], @scope="profile email">
|
|
469
467
|
```
|
|
470
468
|
|
|
471
469
|
Only the configured attributes are redacted. Other instance variables remain visible so inspected objects are still
|
|
472
|
-
useful while debugging.
|
|
470
|
+
useful while debugging. Inspect filtering is conservative: unsupported custom formats are left unchanged rather than
|
|
471
|
+
risking a malformed `inspect` result.
|
|
473
472
|
|
|
474
473
|
### Redact Logger Output
|
|
475
474
|
|
|
@@ -524,7 +523,7 @@ Use `filtered_keys:` for application-specific secrets:
|
|
|
524
523
|
logger = Auth::Sanitizer::SanitizedLogger.new(
|
|
525
524
|
Logger.new($stdout),
|
|
526
525
|
filtered_keys: %w[access_token api_key signing_secret],
|
|
527
|
-
label: "[SECRET]"
|
|
526
|
+
label: "[SECRET]"
|
|
528
527
|
)
|
|
529
528
|
|
|
530
529
|
logger.debug("api_key=12345&access_token=abc123")
|
|
@@ -553,8 +552,8 @@ While ruby-oauth tools are free software and will always be, the project would b
|
|
|
553
552
|
Raising a monthly budget of... "dollars" would make the project more sustainable.
|
|
554
553
|
|
|
555
554
|
We welcome both individual and corporate sponsors! We also offer a
|
|
556
|
-
wide array of funding channels to account for your preferences
|
|
557
|
-
|
|
555
|
+
wide array of funding channels to account for your preferences.
|
|
556
|
+
Currently, [Open Collective][🖇osc] is our preferred funding platform.
|
|
558
557
|
|
|
559
558
|
**If you're working in a company that's making significant use of ruby-oauth tools we'd
|
|
560
559
|
appreciate it if you suggest to your company to become a ruby-oauth sponsor.**
|
|
@@ -566,7 +565,7 @@ You can support the development of ruby-oauth tools via
|
|
|
566
565
|
[Open Collective][🖇osc]
|
|
567
566
|
and [Tidelift][🏙️entsup-tidelift].
|
|
568
567
|
|
|
569
|
-
| 📍 NOTE
|
|
568
|
+
| 📍 NOTE |
|
|
570
569
|
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
571
570
|
| If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
|
|
572
571
|
|
|
@@ -594,7 +593,7 @@ No sponsors yet. Be the first!
|
|
|
594
593
|
|
|
595
594
|
### Another way to support open-source
|
|
596
595
|
|
|
597
|
-
I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small.
|
|
596
|
+
I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈 cats).
|
|
598
597
|
|
|
599
598
|
If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
|
|
600
599
|
|
|
@@ -611,7 +610,7 @@ See [SECURITY.md][🔐security].
|
|
|
611
610
|
## 🤝 Contributing
|
|
612
611
|
|
|
613
612
|
If you need some ideas of where to help, you could work on adding more code coverage,
|
|
614
|
-
or if it is already 💯 (see [below](#code-coverage)) check [
|
|
613
|
+
or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
|
|
615
614
|
or use the gem and think about how it could be better.
|
|
616
615
|
|
|
617
616
|
We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
|
|
@@ -624,12 +623,17 @@ See [CONTRIBUTING.md][🤝contributing].
|
|
|
624
623
|
|
|
625
624
|
### Code Coverage
|
|
626
625
|
|
|
626
|
+
<details markdown="1">
|
|
627
|
+
<summary>Coverage service badges</summary>
|
|
628
|
+
|
|
627
629
|
[![Coverage Graph][🏀codecov-g]][🏀codecov]
|
|
628
630
|
|
|
629
631
|
[![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
|
|
630
632
|
|
|
631
633
|
[![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
|
|
632
634
|
|
|
635
|
+
</details>
|
|
636
|
+
|
|
633
637
|
### 🪇 Code of Conduct
|
|
634
638
|
|
|
635
639
|
Everyone interacting with this project's codebases, issue trackers,
|
|
@@ -644,13 +648,13 @@ Made with [contributors-img][🖐contrib-rocks].
|
|
|
644
648
|
Also see GitLab Contributors: [https://gitlab.com/ruby-oauth/auth-sanitizer/-/graphs/main][🚎contributors-gl]
|
|
645
649
|
|
|
646
650
|
<details>
|
|
647
|
-
|
|
651
|
+
<summary>⭐️ Star History</summary>
|
|
648
652
|
|
|
649
|
-
<a href="https://star-history.com
|
|
653
|
+
<a href="https://star-history.com/ruby-oauth/auth-sanitizer&Date">
|
|
650
654
|
<picture>
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
655
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date&theme=dark" />
|
|
656
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date" />
|
|
657
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date" />
|
|
654
658
|
</picture>
|
|
655
659
|
</a>
|
|
656
660
|
|
|
@@ -658,19 +662,8 @@ Also see GitLab Contributors: [https://gitlab.com/ruby-oauth/auth-sanitizer/-/gr
|
|
|
658
662
|
|
|
659
663
|
## 📌 Versioning
|
|
660
664
|
|
|
661
|
-
This
|
|
662
|
-
|
|
663
|
-
Specifically, if a minor or patch version is released that breaks backward compatibility,
|
|
664
|
-
a new version should be immediately released that restores compatibility.
|
|
665
|
-
Breaking changes to the public API will only be introduced with new major versions.
|
|
666
|
-
|
|
667
|
-
> dropping support for a platform is both obviously and objectively a breaking change <br/>
|
|
668
|
-
>—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
|
|
669
|
-
|
|
670
|
-
I understand that policy doesn't work universally ("exceptions to every rule!"),
|
|
671
|
-
but it is the policy here.
|
|
672
|
-
As such, in many cases it is good to specify a dependency on this library using
|
|
673
|
-
the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
|
|
665
|
+
This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
|
|
666
|
+
For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
|
|
674
667
|
|
|
675
668
|
For example:
|
|
676
669
|
|
|
@@ -681,8 +674,8 @@ spec.add_dependency("auth-sanitizer", "~> 0.0")
|
|
|
681
674
|
<details markdown="1">
|
|
682
675
|
<summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
|
|
683
676
|
|
|
684
|
-
|
|
685
|
-
|
|
677
|
+
Dropping support for a platform can be a breaking change for affected users.
|
|
678
|
+
If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
|
|
686
679
|
|
|
687
680
|
To get a better understanding of how SemVer is intended to work over a project's lifetime,
|
|
688
681
|
read this article from the creator of SemVer:
|
|
@@ -702,6 +695,13 @@ the [MIT](MIT.md) [![License: MIT][📄license-img]][📄license-ref].
|
|
|
702
695
|
|
|
703
696
|
See [LICENSE.md][📄license] for the official copyright notice.
|
|
704
697
|
|
|
698
|
+
<details markdown="1">
|
|
699
|
+
<summary>Copyright holders</summary>
|
|
700
|
+
|
|
701
|
+
- Copyright (c) 2026 Peter H. Boling
|
|
702
|
+
|
|
703
|
+
</details>
|
|
704
|
+
|
|
705
705
|
## 🤑 A request for help
|
|
706
706
|
|
|
707
707
|
Maintainers have teeth and need to pay their dentists.
|
|
@@ -721,6 +721,8 @@ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
|
|
|
721
721
|
|
|
722
722
|
### Please give the project a star ⭐ ♥.
|
|
723
723
|
|
|
724
|
+
Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
|
|
725
|
+
|
|
724
726
|
Thanks for RTFM. ☺️
|
|
725
727
|
|
|
726
728
|
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
|
|
@@ -765,7 +767,7 @@ Thanks for RTFM. ☺️
|
|
|
765
767
|
[⛳️gem-name]: https://bestgems.org/gems/auth-sanitizer
|
|
766
768
|
[⛳️name-img]: https://img.shields.io/badge/name-auth--sanitizer-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
|
|
767
769
|
[⛳️tag-img]: https://img.shields.io/github/tag/ruby-oauth/auth-sanitizer.svg
|
|
768
|
-
[⛳️tag]:
|
|
770
|
+
[⛳️tag]: https://github.com/ruby-oauth/auth-sanitizer/releases
|
|
769
771
|
[🚂maint-blog]: http://www.railsbling.com/tags/auth-sanitizer
|
|
770
772
|
[🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
|
|
771
773
|
[🚂maint-contact]: http://www.railsbling.com/contact
|
|
@@ -800,7 +802,7 @@ Thanks for RTFM. ☺️
|
|
|
800
802
|
[💁🏼♂️peterboling]: http://www.peterboling.com
|
|
801
803
|
[🚂railsbling]: http://www.railsbling.com
|
|
802
804
|
[📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
|
|
803
|
-
[📜src-gl]: https://gitlab.com/ruby-oauth/auth-sanitizer
|
|
805
|
+
[📜src-gl]: https://gitlab.com/ruby-oauth/auth-sanitizer
|
|
804
806
|
[📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
|
|
805
807
|
[📜src-cb]: https://codeberg.org/ruby-oauth/auth-sanitizer
|
|
806
808
|
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
|
|
@@ -809,8 +811,8 @@ Thanks for RTFM. ☺️
|
|
|
809
811
|
[📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
810
812
|
[📜gl-wiki]: https://gitlab.com/ruby-oauth/auth-sanitizer/-/wikis/home
|
|
811
813
|
[📜gh-wiki]: https://github.com/ruby-oauth/auth-sanitizer/wiki
|
|
812
|
-
[📜gl-wiki-img]: https://img.shields.io/badge/wiki-
|
|
813
|
-
[📜gh-wiki-img]: https://img.shields.io/badge/wiki-
|
|
814
|
+
[📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
|
|
815
|
+
[📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
|
|
814
816
|
[👽dl-rank]: https://bestgems.org/gems/auth-sanitizer
|
|
815
817
|
[👽dl-ranki]: https://img.shields.io/gem/rd/auth-sanitizer.svg
|
|
816
818
|
[👽version]: https://bestgems.org/gems/auth-sanitizer
|
|
@@ -823,9 +825,6 @@ Thanks for RTFM. ☺️
|
|
|
823
825
|
[🏀codecovi]: https://codecov.io/gh/ruby-oauth/auth-sanitizer/graph/badge.svg
|
|
824
826
|
[🏀coveralls]: https://coveralls.io/github/ruby-oauth/auth-sanitizer?branch=main
|
|
825
827
|
[🏀coveralls-img]: https://coveralls.io/repos/github/ruby-oauth/auth-sanitizer/badge.svg?branch=main
|
|
826
|
-
[🖐codeQL]: https://github.com/ruby-oauth/auth-sanitizer/security/code-scanning
|
|
827
|
-
[🖐codeQL-img]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/codeql-analysis.yml/badge.svg
|
|
828
|
-
[🚎ruby-2.3-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-2.3.yml
|
|
829
828
|
[🚎ruby-2.4-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-2.4.yml
|
|
830
829
|
[🚎ruby-2.5-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-2.5.yml
|
|
831
830
|
[🚎ruby-2.6-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-2.6.yml
|
|
@@ -835,6 +834,7 @@ Thanks for RTFM. ☺️
|
|
|
835
834
|
[🚎ruby-3.2-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-3.2.yml
|
|
836
835
|
[🚎ruby-3.3-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-3.3.yml
|
|
837
836
|
[🚎ruby-3.4-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-3.4.yml
|
|
837
|
+
[🚎jruby-9.2-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/jruby-9.2.yml
|
|
838
838
|
[🚎jruby-9.3-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/jruby-9.3.yml
|
|
839
839
|
[🚎jruby-9.4-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/jruby-9.4.yml
|
|
840
840
|
[🚎truby-22.3-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/truffleruby-22.3.yml
|
|
@@ -863,7 +863,7 @@ Thanks for RTFM. ☺️
|
|
|
863
863
|
[🚎15-🪪-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/license-eye.yml
|
|
864
864
|
[🚎15-🪪-wfi]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/license-eye.yml/badge.svg
|
|
865
865
|
[💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
|
|
866
|
-
[💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.
|
|
866
|
+
[💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
|
|
867
867
|
[💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
868
868
|
[💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
869
869
|
[💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
@@ -882,6 +882,7 @@ Thanks for RTFM. ☺️
|
|
|
882
882
|
[💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
883
883
|
[💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
884
884
|
[💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
|
|
885
|
+
[💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
885
886
|
[💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
886
887
|
[💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
887
888
|
[💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
|
|
@@ -893,34 +894,35 @@ Thanks for RTFM. ☺️
|
|
|
893
894
|
[🤝cb-issues]: https://codeberg.org/ruby-oauth/auth-sanitizer/issues
|
|
894
895
|
[🤝cb-pulls]: https://codeberg.org/ruby-oauth/auth-sanitizer/pulls
|
|
895
896
|
[🤝cb-donate]: https://donate.codeberg.org/
|
|
896
|
-
[🤝contributing]: CONTRIBUTING.md
|
|
897
|
-
[🏀codecov-g]: https://codecov.io/gh/ruby-oauth/auth-sanitizer/
|
|
897
|
+
[🤝contributing]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/CONTRIBUTING.md
|
|
898
|
+
[🏀codecov-g]: https://codecov.io/gh/ruby-oauth/auth-sanitizer/graph/badge.svg
|
|
898
899
|
[🖐contrib-rocks]: https://contrib.rocks
|
|
899
900
|
[🖐contributors]: https://github.com/ruby-oauth/auth-sanitizer/graphs/contributors
|
|
900
901
|
[🖐contributors-img]: https://contrib.rocks/image?repo=ruby-oauth/auth-sanitizer
|
|
901
902
|
[🚎contributors-gl]: https://gitlab.com/ruby-oauth/auth-sanitizer/-/graphs/main
|
|
902
|
-
[🪇conduct]: CODE_OF_CONDUCT.md
|
|
903
|
+
[🪇conduct]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/CODE_OF_CONDUCT.md
|
|
903
904
|
[🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
|
|
904
905
|
[📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
|
|
905
906
|
[📌semver]: https://semver.org/spec/v2.0.0.html
|
|
906
907
|
[📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
|
|
907
908
|
[📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
|
|
908
909
|
[📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
|
|
909
|
-
[📌changelog]: CHANGELOG.md
|
|
910
|
+
[📌changelog]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/CHANGELOG.md
|
|
910
911
|
[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
|
|
911
912
|
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
|
|
912
913
|
[📌gitmoji]: https://gitmoji.dev
|
|
913
914
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
914
915
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
915
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
916
|
-
[🔐security]: SECURITY.md
|
|
916
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.145-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
917
|
+
[🔐security]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/SECURITY.md
|
|
917
918
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
918
919
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
919
920
|
[📄license]: LICENSE.md
|
|
920
|
-
[📄license-ref]:
|
|
921
|
+
[📄license-ref]: MIT.md
|
|
921
922
|
[📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
|
|
922
|
-
[📄license-compat]: https://
|
|
923
|
-
[📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A
|
|
923
|
+
[📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
|
|
924
|
+
[📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-✓-259D6C.svg?style=flat&logo=Apache
|
|
925
|
+
|
|
924
926
|
[📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
|
|
925
927
|
[📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
|
|
926
928
|
[🚎yard-current]: http://rubydoc.info/gems/auth-sanitizer
|
|
@@ -932,3 +934,14 @@ Thanks for RTFM. ☺️
|
|
|
932
934
|
[💎appraisal2]: https://github.com/appraisal-rb/appraisal2
|
|
933
935
|
[💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
|
|
934
936
|
[💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
|
|
937
|
+
|
|
938
|
+
<!-- kettle-jem:metadata:start -->
|
|
939
|
+
| Field | Value |
|
|
940
|
+
|---|---|
|
|
941
|
+
| Package | auth-sanitizer |
|
|
942
|
+
| Description | 💎 Configurable KV output redaction. Sanitize/filter your secrets. |
|
|
943
|
+
| Homepage | https://github.com/ruby-oauth/auth-sanitizer |
|
|
944
|
+
| Source | https://github.com/ruby-oauth/auth-sanitizer/tree/v0.2.0 |
|
|
945
|
+
| License | `MIT` |
|
|
946
|
+
| Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/ruby-oauth, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/auth-sanitizer, https://www.buymeacoffee.com/pboling |
|
|
947
|
+
<!-- kettle-jem:metadata:end -->
|
data/RUBOCOP.md
CHANGED
|
File without changes
|
data/SECURITY.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Version | Supported |
|
|
6
6
|
|----------|-----------|
|
|
7
|
-
|
|
|
7
|
+
| 0.latest | ✅ |
|
|
8
8
|
|
|
9
9
|
## Security contact information
|
|
10
10
|
|
|
@@ -12,8 +12,6 @@ To report a security vulnerability, please use the
|
|
|
12
12
|
[Tidelift security contact](https://tidelift.com/security).
|
|
13
13
|
Tidelift will coordinate the fix and disclosure.
|
|
14
14
|
|
|
15
|
-
More detailed explanation of the process is in [IRP.md][IRP]
|
|
16
|
-
|
|
17
15
|
## Additional Support
|
|
18
16
|
|
|
19
17
|
If you are interested in support for versions older than the latest release,
|
|
@@ -21,4 +19,3 @@ please consider sponsoring the project / maintainer @ https://liberapay.com/pbol
|
|
|
21
19
|
or find other sponsorship links in the [README].
|
|
22
20
|
|
|
23
21
|
[README]: README.md
|
|
24
|
-
[IRP]: IRP.md
|
data/certs/pboling.pem
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
|
|
3
|
+
ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
|
|
4
|
+
A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
|
|
5
|
+
DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
|
|
6
|
+
LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
|
|
7
|
+
uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
|
|
8
|
+
LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
|
|
9
|
+
mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
|
|
10
|
+
coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
|
|
11
|
+
FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
|
|
12
|
+
yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
|
|
13
|
+
to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
|
|
14
|
+
qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
|
|
15
|
+
fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
|
|
16
|
+
HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
|
|
17
|
+
A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
|
|
18
|
+
ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
|
|
19
|
+
wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
|
|
20
|
+
L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
|
|
21
|
+
GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
|
|
22
|
+
kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
|
|
23
|
+
QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
|
|
24
|
+
0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
|
|
25
|
+
DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
|
|
26
|
+
L9nRqA==
|
|
27
|
+
-----END CERTIFICATE-----
|
data/lib/auth/sanitizer/core.rb
CHANGED
|
File without changes
|