oauth2 2.0.24 → 2.0.26
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 +147 -3
- data/README.md +79 -99
- data/lib/oauth2/access_token.rb +13 -8
- data/lib/oauth2/client.rb +34 -15
- data/lib/oauth2/sanitized_log_formatter.rb +198 -0
- data/lib/oauth2/version.rb +4 -1
- data/lib/oauth2.rb +11 -1
- data/sig/oauth2.rbs +206 -0
- data.tar.gz.sig +0 -0
- metadata +40 -60
- metadata.gz.sig +0 -0
- data/CITATION.cff +0 -20
- data/CODE_OF_CONDUCT.md +0 -134
- data/CONTRIBUTING.md +0 -272
- data/FUNDING.md +0 -74
- data/RUBOCOP.md +0 -71
- data/SECURITY.md +0 -21
- data/certs/pboling.pem +0 -27
- data/sig/oauth2/access_token.rbs +0 -25
- data/sig/oauth2/authenticator.rbs +0 -22
- data/sig/oauth2/client.rbs +0 -52
- data/sig/oauth2/error.rbs +0 -8
- data/sig/oauth2/filtered_attributes.rbs +0 -11
- data/sig/oauth2/response.rbs +0 -18
- data/sig/oauth2/sanitized_logger.rbs +0 -32
- data/sig/oauth2/strategy.rbs +0 -34
- data/sig/oauth2/thing_filter.rbs +0 -10
- data/sig/oauth2/version.rbs +0 -6
data/README.md
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
<a href="https://github.com/ruby-oauth"><img alt="ruby-oauth Logo by
|
|
1
|
+
<a href="https://github.com/ruby-oauth"><img alt="ruby-oauth Logo by GitHub" src="https://github.com/ruby-oauth.png?size=192" width="14%" align="right"/></a>
|
|
2
2
|
|
|
3
3
|
# 🔐 OAuth2
|
|
4
4
|
|
|
5
|
-
[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![
|
|
5
|
+
[![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Total downloads][👽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]
|
|
6
6
|
|
|
7
|
-
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the
|
|
7
|
+
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
`if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
|
|
12
12
|
|
|
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
|
|
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 at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
14
|
+
<p><sub>Corporate sponsors: <a href="https://alpha-omega.dev"><img alt="Alpha-Omega" src="https://alpha-omega.dev/wp-content/uploads/sites/22/2023/05/logo.svg" height="24"/></a> <a href="https://serpapi.com"><img alt="SerpApi" src="https://serpapi.com/assets/media_kit/logo-with-wordmark.svg" height="24"/></a> <a href="#-floss-funding">Become a sponsor</a></sub></p>
|
|
14
15
|
|
|
15
|
-
<details>
|
|
16
|
+
<details markdown="1">
|
|
16
17
|
<summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
|
|
17
18
|
|
|
18
19
|
I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
|
|
@@ -150,13 +151,13 @@ See also the [OAuth 2.0 Spec][oauth2-spec], the [OpenID Connect Spec][oidc-spec]
|
|
|
150
151
|
|
|
151
152
|
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
|
|
152
153
|
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
153
|
-
| 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]|
|
|
154
|
-
| Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.
|
|
155
|
-
| Works with MRI Ruby 4 | [![Ruby
|
|
154
|
+
| 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 10.0 Compat][💎jruby-10.0i]][🚎jruby-10.0-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
|
|
155
|
+
| Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-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 33.0 Compat][💎truby-33.0i]][🚎truby-33.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf]|
|
|
156
|
+
| Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
|
|
156
157
|
| 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]|
|
|
157
158
|
| 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]|
|
|
158
|
-
| 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] |
|
|
159
|
-
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on
|
|
159
|
+
| Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![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] |
|
|
160
|
+
| 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] |
|
|
160
161
|
| 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] |
|
|
161
162
|
| 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] |
|
|
162
163
|
| 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] |
|
|
@@ -165,26 +166,30 @@ See also the [OAuth 2.0 Spec][oauth2-spec], the [OpenID Connect Spec][oidc-spec]
|
|
|
165
166
|
|
|
166
167
|
### Compatibility
|
|
167
168
|
|
|
168
|
-
Compatible with MRI Ruby 2.2.0+,
|
|
169
|
+
Compatible with MRI Ruby 2.2.0+, JRuby, and TruffleRuby.
|
|
169
170
|
CI workflows and Appraisals are generated for MRI Ruby 2.4+.
|
|
171
|
+
The current MRI CI lane runs on Linux and macOS.
|
|
170
172
|
This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
|
|
171
173
|
may be higher than the gem's runtime compatibility floor when legacy Rubies are
|
|
172
174
|
not practical for the current toolchain.
|
|
173
175
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
+
<a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
|
|
177
|
+
|
|
178
|
+
The _amazing_ test matrix is powered by the kettle-dev stack.
|
|
176
179
|
|
|
177
|
-
<details>
|
|
178
|
-
<summary>How
|
|
180
|
+
<details markdown="1">
|
|
181
|
+
<summary>How kettle-dev manages complexity in tests</summary>
|
|
179
182
|
|
|
180
|
-
| Gem | Source | Role |
|
|
183
|
+
| Gem | Source | Role | Total downloads |
|
|
181
184
|
|-----|--------|------|---------------------|
|
|
182
|
-
| [appraisal2](https://
|
|
183
|
-
| [appraisal2-rubocop](https://
|
|
184
|
-
| [
|
|
185
|
-
| [kettle-
|
|
186
|
-
| [kettle-soup-cover](https://
|
|
187
|
-
| [
|
|
185
|
+
| [appraisal2](https://clickgems.clickhouse.com/dashboard/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [](https://clickgems.clickhouse.com/dashboard/appraisal2) |
|
|
186
|
+
| [appraisal2-rubocop](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) |
|
|
187
|
+
| [kettle-dev](https://clickgems.clickhouse.com/dashboard/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [](https://clickgems.clickhouse.com/dashboard/kettle-dev) |
|
|
188
|
+
| [kettle-jem](https://clickgems.clickhouse.com/dashboard/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [](https://clickgems.clickhouse.com/dashboard/kettle-jem) |
|
|
189
|
+
| [kettle-soup-cover](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) |
|
|
190
|
+
| [kettle-test](https://clickgems.clickhouse.com/dashboard/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [](https://clickgems.clickhouse.com/dashboard/kettle-test) |
|
|
191
|
+
| [rubocop-lts](https://clickgems.clickhouse.com/dashboard/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [](https://clickgems.clickhouse.com/dashboard/rubocop-lts) |
|
|
192
|
+
| [turbo_tests2](https://clickgems.clickhouse.com/dashboard/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [](https://clickgems.clickhouse.com/dashboard/turbo_tests2) |
|
|
188
193
|
|
|
189
194
|
</details>
|
|
190
195
|
|
|
@@ -193,39 +198,22 @@ not practical for the current toolchain.
|
|
|
193
198
|
<details markdown="1">
|
|
194
199
|
<summary>Find this repo on federated forges (Coming soon!)</summary>
|
|
195
200
|
|
|
196
|
-
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
|
|
197
|
-
|
|
198
|
-
| 🧪 [ruby-oauth/oauth2 on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
|
|
199
|
-
| 🧊 [ruby-oauth/oauth2 on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
|
|
200
|
-
| 🐙 [ruby-oauth/oauth2 on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
|
|
201
|
-
| 🎮️ [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] |
|
|
201
|
+
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
|
|
202
|
+
|-------------------------------------------------|-------------------------------------------|-------------------|------------------|-----------------|----------------|
|
|
203
|
+
| 🧪 [ruby-oauth/oauth2 on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
|
|
204
|
+
| 🧊 [ruby-oauth/oauth2 on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
|
|
205
|
+
| 🐙 [ruby-oauth/oauth2 on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
|
|
202
206
|
|
|
203
207
|
</details>
|
|
204
208
|
|
|
205
|
-
|
|
209
|
+
### Enterprise Support
|
|
206
210
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
Available as part of the Tidelift Subscription.
|
|
210
|
-
|
|
211
|
-
<details markdown="1">
|
|
212
|
-
<summary>Need enterprise-level guarantees?</summary>
|
|
211
|
+
For enterprise support from the maintainer, use [Upwork][👨🏼🏫expsup-upwork] or [CodeMentor][👨🏼🏫expsup-codementor].
|
|
213
212
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
[![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
|
|
217
|
-
|
|
218
|
-
- 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
|
|
219
|
-
- 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
|
|
220
|
-
- 💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers
|
|
221
|
-
|
|
222
|
-
Alternatively:
|
|
213
|
+
Other support channels:
|
|
223
214
|
|
|
215
|
+
- [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
|
|
224
216
|
- [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
225
|
-
- [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork]
|
|
226
|
-
- [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor]
|
|
227
|
-
|
|
228
|
-
</details>
|
|
229
217
|
|
|
230
218
|
## ✨ Installation
|
|
231
219
|
|
|
@@ -641,19 +629,21 @@ We welcome both individual and corporate sponsors! We also offer a
|
|
|
641
629
|
wide array of funding channels to account for your preferences.
|
|
642
630
|
Currently, [Open Collective][🖇osc] is our preferred funding platform.
|
|
643
631
|
|
|
632
|
+
### Corporate Sponsorship
|
|
633
|
+
|
|
634
|
+
- <a href="https://alpha-omega.dev"><img alt="Alpha-Omega" src="https://alpha-omega.dev/wp-content/uploads/sites/22/2023/05/logo.svg" height="32"/></a> [Alpha-Omega](https://alpha-omega.dev) — backed by [Amazon Web Services](https://aws.amazon.com), [Google](https://www.google.com), [Microsoft](https://www.microsoft.com), [Anthropic](https://www.anthropic.com), [OpenAI](https://openai.com), [Citi](https://www.citigroup.com), [GitHub](https://github.com)
|
|
635
|
+
- <a href="https://serpapi.com"><img alt="SerpApi" src="https://serpapi.com/assets/media_kit/logo-with-wordmark.svg" height="32"/></a> [SerpApi](https://serpapi.com)
|
|
636
|
+
|
|
644
637
|
**If you're working in a company that's making significant use of ruby-oauth tools we'd
|
|
645
638
|
appreciate it if you suggest to your company to become a ruby-oauth sponsor.**
|
|
646
639
|
|
|
640
|
+
### Individual Support
|
|
641
|
+
|
|
647
642
|
You can support the development of ruby-oauth tools via
|
|
648
643
|
[GitHub Sponsors][🖇sponsor],
|
|
649
644
|
[Liberapay][⛳liberapay],
|
|
650
|
-
[
|
|
651
|
-
[
|
|
652
|
-
and [Tidelift][🏙️entsup-tidelift].
|
|
653
|
-
|
|
654
|
-
| 📍 NOTE |
|
|
655
|
-
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
656
|
-
| 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. |
|
|
645
|
+
[Open Collective][🖇osc],
|
|
646
|
+
and [PayPal][🖇paypal].
|
|
657
647
|
|
|
658
648
|
### Open Collective for Individuals
|
|
659
649
|
|
|
@@ -673,10 +663,6 @@ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day
|
|
|
673
663
|
|
|
674
664
|
<!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
|
|
675
665
|
No sponsors yet. Be the first!
|
|
676
|
-
|
|
677
|
-
### Open Collective for Donors
|
|
678
|
-
|
|
679
|
-
[Bill Woika](https://opencollective.com/bill-woika) [Philipp Ebneter](https://opencollective.com/guest-e77282f7) [Grigoriy](https://opencollective.com/guest-c93e0c48)
|
|
680
666
|
<!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
|
|
681
667
|
|
|
682
668
|
[kettle-readme-backers]: https://github.com/ruby-oauth/oauth2/blob/main/bin/kettle-readme-backers
|
|
@@ -691,7 +677,7 @@ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed
|
|
|
691
677
|
|
|
692
678
|
**[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
|
|
693
679
|
|
|
694
|
-
[![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
|
|
680
|
+
[![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 to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
695
681
|
|
|
696
682
|
## 🔐 Security
|
|
697
683
|
|
|
@@ -700,8 +686,7 @@ See [SECURITY.md][🔐security].
|
|
|
700
686
|
## 🤝 Contributing
|
|
701
687
|
|
|
702
688
|
If you need some ideas of where to help, you could work on adding more code coverage,
|
|
703
|
-
|
|
704
|
-
or use the gem and think about how it could be better.
|
|
689
|
+
check [issues][🤝gh-issues] or [PRs][🤝gh-pulls], or use the gem and think about how it could be better.
|
|
705
690
|
|
|
706
691
|
We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
|
|
707
692
|
|
|
@@ -737,14 +722,14 @@ Made with [contributors-img][🖐contrib-rocks].
|
|
|
737
722
|
|
|
738
723
|
Also see GitLab Contributors: [https://gitlab.com/ruby-oauth/oauth2/-/graphs/main][🚎contributors-gl]
|
|
739
724
|
|
|
740
|
-
<details>
|
|
725
|
+
<details markdown="1">
|
|
741
726
|
<summary>⭐️ Star History</summary>
|
|
742
727
|
|
|
743
|
-
<a href="https://star-history.
|
|
728
|
+
<a href="https://star-history.dera.page/#ruby-oauth/oauth2&type=date&legend=top-left">
|
|
744
729
|
<picture>
|
|
745
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://
|
|
746
|
-
<source media="(prefers-color-scheme: light)" srcset="https://
|
|
747
|
-
<img alt="Star History Chart" src="https://
|
|
730
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://star-history.dera.page/svg?repos=ruby-oauth/oauth2&type=date&theme=dark&legend=top-left" />
|
|
731
|
+
<source media="(prefers-color-scheme: light)" srcset="https://star-history.dera.page/svg?repos=ruby-oauth/oauth2&type=date&legend=top-left" />
|
|
732
|
+
<img alt="Star History Chart" src="https://star-history.dera.page/svg?repos=ruby-oauth/oauth2&type=date&legend=top-left" />
|
|
748
733
|
</picture>
|
|
749
734
|
</a>
|
|
750
735
|
|
|
@@ -779,7 +764,7 @@ See [CHANGELOG.md][📌changelog] for a list of releases.
|
|
|
779
764
|
## 📄 License
|
|
780
765
|
|
|
781
766
|
The gem is available as open source under the terms of
|
|
782
|
-
the [MIT](MIT.md) [![License: MIT][📄license-img]][📄license-ref].
|
|
767
|
+
the [MIT](https://github.com/ruby-oauth/oauth2/blob/main/MIT.md) [![License: MIT][📄license-img]][📄license-ref].
|
|
783
768
|
|
|
784
769
|
### © Copyright
|
|
785
770
|
|
|
@@ -790,17 +775,15 @@ See [LICENSE.md][📄license] for the official copyright notice.
|
|
|
790
775
|
|
|
791
776
|
- Copyright (c) 2010-2014, 2016-2017 Erik Michaels-Ober
|
|
792
777
|
- Copyright (c) 2010 Jeremy Kemper
|
|
793
|
-
- Copyright (c) 2010-2011 Michael Bleigh
|
|
778
|
+
- Copyright (c) 2010-2011, 2014 Michael Bleigh
|
|
794
779
|
- Copyright (c) 2010-2011 Paul Walker
|
|
795
780
|
- Copyright (c) 2010 rick
|
|
796
781
|
- Copyright (c) 2010 Tim Habermaas
|
|
797
782
|
- Copyright (c) 2010 Wynn Netherland
|
|
798
783
|
- Copyright (c) 2011 Alexander Lang
|
|
799
|
-
- Copyright (c) 2011 Alexander Lang
|
|
800
784
|
- Copyright (c) 2011 Greg Spurrier
|
|
801
785
|
- Copyright (c) 2011 Jay Adkisson
|
|
802
786
|
- Copyright (c) 2011 Luke Saunders
|
|
803
|
-
- Copyright (c) 2011 Paul Walker
|
|
804
787
|
- Copyright (c) 2011 Simon Gate
|
|
805
788
|
- Copyright (c) 2012 Bas Vodde
|
|
806
789
|
- Copyright (c) 2012 Damian Janowski
|
|
@@ -823,7 +806,6 @@ See [LICENSE.md][📄license] for the official copyright notice.
|
|
|
823
806
|
- Copyright (c) 2014 Dave Stevens
|
|
824
807
|
- Copyright (c) 2014 Ellis Berner
|
|
825
808
|
- Copyright (c) 2014 Frank Macreery
|
|
826
|
-
- Copyright (c) 2014 Michael Bleigh
|
|
827
809
|
- Copyright (c) 2014 Olivier Lacan
|
|
828
810
|
- Copyright (c) 2014 Peter Souter
|
|
829
811
|
- Copyright (c) 2014 Ryan Williams
|
|
@@ -836,7 +818,7 @@ See [LICENSE.md][📄license] for the official copyright notice.
|
|
|
836
818
|
- Copyright (c) 2016 Linus Pettersson
|
|
837
819
|
- Copyright (c) 2016 Motoshi Nishihira
|
|
838
820
|
- Copyright (c) 2017 Adrian Setyadi
|
|
839
|
-
- Copyright (c) 2017-2018 Benjamin Quorning
|
|
821
|
+
- Copyright (c) 2017-2018, 2022 Benjamin Quorning
|
|
840
822
|
- Copyright (c) 2017 Christoph Petschnig
|
|
841
823
|
- Copyright (c) 2017, 2022 Nathaniel Bibler
|
|
842
824
|
- Copyright (c) 2017 Oleg
|
|
@@ -848,10 +830,8 @@ See [LICENSE.md][📄license] for the official copyright notice.
|
|
|
848
830
|
- Copyright (c) 2018 David Christensen
|
|
849
831
|
- Copyright (c) 2018 fossabot
|
|
850
832
|
- Copyright (c) 2018 Jeff Moore
|
|
851
|
-
- Copyright (c) 2018 Jeff Moore
|
|
852
833
|
- Copyright (c) 2018 Jonathan del Strother
|
|
853
834
|
- Copyright (c) 2018 Joseph Page
|
|
854
|
-
- Copyright (c) 2018 Joseph Page
|
|
855
835
|
- Copyright (c) 2018 Lomey
|
|
856
836
|
- Copyright (c) 2018 Markus Bengts
|
|
857
837
|
- Copyright (c) 2018 Mathias Klippinge
|
|
@@ -872,24 +852,26 @@ See [LICENSE.md][📄license] for the official copyright notice.
|
|
|
872
852
|
- Copyright (c) 2021 Jan Zaydowicz
|
|
873
853
|
- Copyright (c) 2021 Nicholas Palaniuk
|
|
874
854
|
- Copyright (c) 2021-2022 Stan Hu
|
|
875
|
-
- Copyright (c) 2022 Benjamin Quorning
|
|
876
855
|
- Copyright (c) 2022 Bouke van der Bijl
|
|
877
856
|
- Copyright (c) 2022 nov
|
|
878
857
|
- Copyright (c) 2022 Rick Selby
|
|
879
858
|
- Copyright (c) 2022 Ryo Takahashi
|
|
880
859
|
- Copyright (c) 2023 Jessie Young
|
|
881
860
|
- Copyright (c) 2023 Карим Гимадеев
|
|
882
|
-
- Copyright (c) 2024
|
|
861
|
+
- Copyright (c) 2024-2026 Annibelle Boling
|
|
883
862
|
- Copyright (c) 2024 Elise Wood
|
|
884
863
|
- Copyright (c) 2024 Manuel van Rijn
|
|
885
|
-
- Copyright (c) 2025-2026 Annibelle Boling
|
|
886
864
|
- Copyright (c) 2025 Mark James
|
|
887
865
|
- Copyright (c) 2025 Mridang Agarwalla
|
|
888
866
|
- Copyright (c) 2025 Sasa Rosic
|
|
867
|
+
- Copyright (c) 2026 Daniel Pepper
|
|
868
|
+
- Copyright (c) 2026 iamibi
|
|
889
869
|
- Copyright (c) 2026 Jonathan Grinstead
|
|
890
870
|
- Copyright (c) 2026 kain
|
|
871
|
+
- Copyright (c) 2026 makssein
|
|
872
|
+
- Copyright (c) 2026 Martin Vlach
|
|
873
|
+
- Copyright (c) 2026 Mubelotix
|
|
891
874
|
- Copyright (c) 2026 Rob Zolkos
|
|
892
|
-
- Copyright (c) 2026 StepSecurity Bot
|
|
893
875
|
|
|
894
876
|
</details>
|
|
895
877
|
|
|
@@ -902,11 +884,12 @@ I'm hoping to be able to pay for my kids' health insurance this month,
|
|
|
902
884
|
so if you value the work I am doing, I need your support.
|
|
903
885
|
Please consider sponsoring me or the project.
|
|
904
886
|
|
|
905
|
-
To join the community or get help
|
|
887
|
+
To join the community or get help, use the RubyForum or Discord.
|
|
906
888
|
|
|
889
|
+
[![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
|
|
907
890
|
[![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
908
891
|
|
|
909
|
-
To say "thanks!" ☝️ Join the
|
|
892
|
+
To say "thanks!" ☝️ Join the community or 👇️ send money.
|
|
910
893
|
|
|
911
894
|
[![Sponsor ruby-oauth/oauth2 on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
|
|
912
895
|
|
|
@@ -933,12 +916,8 @@ Thanks for RTFM. ☺️
|
|
|
933
916
|
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
|
|
934
917
|
[🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
|
|
935
918
|
[🖇sponsor]: https://github.com/sponsors/pboling
|
|
936
|
-
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
|
|
937
|
-
[🖇polar]: https://polar.sh/pboling
|
|
938
919
|
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
|
|
939
920
|
[🖇kofi]: https://ko-fi.com/pboling
|
|
940
|
-
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
|
|
941
|
-
[🖇patreon]: https://patreon.com/galtzo
|
|
942
921
|
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
|
|
943
922
|
[🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
|
|
944
923
|
[🖇buyme]: https://www.buymeacoffee.com/pboling
|
|
@@ -951,11 +930,14 @@ Thanks for RTFM. ☺️
|
|
|
951
930
|
[✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
|
|
952
931
|
[✉️ruby-friends-img]: https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white
|
|
953
932
|
[✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
|
|
933
|
+
[✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https://www.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
|
|
934
|
+
[✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https://www.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
|
|
935
|
+
[✉️ruby-forum]: https://www.rubyforum.org/tag/oauth2
|
|
954
936
|
|
|
955
937
|
[✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
|
|
956
938
|
[⛳️gem-namespace]: https://github.com/ruby-oauth/oauth2
|
|
957
939
|
[⛳️namespace-img]: https://img.shields.io/badge/namespace-OAuth2-3C2D2D.svg?style=square&logo=ruby&logoColor=white
|
|
958
|
-
[⛳️gem-name]: https://
|
|
940
|
+
[⛳️gem-name]: https://clickgems.clickhouse.com/dashboard/oauth2
|
|
959
941
|
[⛳️name-img]: https://img.shields.io/badge/name-oauth2-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
|
|
960
942
|
[⛳️tag-img]: https://img.shields.io/github/tag/ruby-oauth/oauth2.svg
|
|
961
943
|
[⛳️tag]: https://github.com/ruby-oauth/oauth2/releases
|
|
@@ -987,16 +969,13 @@ Thanks for RTFM. ☺️
|
|
|
987
969
|
[👨🏼🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
|
|
988
970
|
[👨🏼🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
|
|
989
971
|
[👨🏼🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
|
|
990
|
-
[🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-oauth2?utm_source=rubygems-oauth2&utm_medium=referral&utm_campaign=readme
|
|
991
|
-
[🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
|
|
992
|
-
[🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
|
|
993
972
|
[💁🏼♂️peterboling]: http://www.peterboling.com
|
|
994
973
|
[🚂railsbling]: http://www.railsbling.com
|
|
995
974
|
[📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
|
|
996
975
|
[📜src-gl]: https://gitlab.com/ruby-oauth/oauth2
|
|
997
976
|
[📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
|
|
998
977
|
[📜src-cb]: https://codeberg.org/ruby-oauth/oauth2
|
|
999
|
-
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=
|
|
978
|
+
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
|
|
1000
979
|
[📜src-gh]: https://github.com/ruby-oauth/oauth2
|
|
1001
980
|
[📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
1002
981
|
[📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
@@ -1004,9 +983,9 @@ Thanks for RTFM. ☺️
|
|
|
1004
983
|
[📜gh-wiki]: https://github.com/ruby-oauth/oauth2/wiki
|
|
1005
984
|
[📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
|
|
1006
985
|
[📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
|
|
1007
|
-
[👽dl-rank]: https://
|
|
1008
|
-
[👽dl-ranki]: https://img.shields.io/gem/
|
|
1009
|
-
[👽version]: https://
|
|
986
|
+
[👽dl-rank]: https://clickgems.clickhouse.com/dashboard/oauth2
|
|
987
|
+
[👽dl-ranki]: https://img.shields.io/gem/dt/oauth2.svg
|
|
988
|
+
[👽version]: https://clickgems.clickhouse.com/dashboard/oauth2
|
|
1010
989
|
[👽versioni]: https://img.shields.io/gem/v/oauth2.svg
|
|
1011
990
|
[🏀qlty-mnt]: https://qlty.sh/gh/ruby-oauth/projects/oauth2
|
|
1012
991
|
[🏀qlty-mnti]: https://qlty.sh/gh/ruby-oauth/projects/oauth2/maintainability.svg
|
|
@@ -1028,11 +1007,12 @@ Thanks for RTFM. ☺️
|
|
|
1028
1007
|
[🚎jruby-9.2-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby-9.2.yml
|
|
1029
1008
|
[🚎jruby-9.3-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby-9.3.yml
|
|
1030
1009
|
[🚎jruby-9.4-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby-9.4.yml
|
|
1010
|
+
[🚎jruby-10.0-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby-10.0.yml
|
|
1031
1011
|
[🚎truby-22.3-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/truffleruby-22.3.yml
|
|
1032
|
-
[🚎truby-23.0-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/truffleruby-23.0.yml
|
|
1033
1012
|
[🚎truby-23.1-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/truffleruby-23.1.yml
|
|
1034
1013
|
[🚎truby-24.2-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/truffleruby-24.2.yml
|
|
1035
1014
|
[🚎truby-25.0-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/truffleruby-25.0.yml
|
|
1015
|
+
[🚎truby-33.0-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/truffleruby-33.0.yml
|
|
1036
1016
|
[🚎2-cov-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/coverage.yml
|
|
1037
1017
|
[🚎2-cov-wfi]: https://github.com/ruby-oauth/oauth2/actions/workflows/coverage.yml/badge.svg
|
|
1038
1018
|
[🚎3-hd-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/heads.yml
|
|
@@ -1064,18 +1044,18 @@ Thanks for RTFM. ☺️
|
|
|
1064
1044
|
[💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
1065
1045
|
[💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
1066
1046
|
[💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
1067
|
-
[💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
1068
1047
|
[💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
|
|
1069
1048
|
[💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
|
|
1070
1049
|
[💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
1071
|
-
[💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
1072
1050
|
[💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
1073
1051
|
[💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
1074
1052
|
[💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
1053
|
+
[💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
1075
1054
|
[💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
|
|
1076
1055
|
[💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
1077
1056
|
[💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
1078
1057
|
[💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
1058
|
+
[💎jruby-10.0i]: https://img.shields.io/badge/JRuby-10.0-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
1079
1059
|
[💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
|
|
1080
1060
|
[💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
|
|
1081
1061
|
[🤝gh-issues]: https://github.com/ruby-oauth/oauth2/issues
|
|
@@ -1104,12 +1084,12 @@ Thanks for RTFM. ☺️
|
|
|
1104
1084
|
[📌gitmoji]: https://gitmoji.dev
|
|
1105
1085
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1106
1086
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1107
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
1087
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.657-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1108
1088
|
[🔐security]: https://github.com/ruby-oauth/oauth2/blob/main/SECURITY.md
|
|
1109
1089
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1110
1090
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
1111
1091
|
[📄license]: LICENSE.md
|
|
1112
|
-
[📄license-ref]: MIT.md
|
|
1092
|
+
[📄license-ref]: https://github.com/ruby-oauth/oauth2/blob/main/MIT.md
|
|
1113
1093
|
[📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
|
|
1114
1094
|
[📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
|
|
1115
1095
|
[📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
|
|
@@ -1134,5 +1114,5 @@ Thanks for RTFM. ☺️
|
|
|
1134
1114
|
| Homepage | https://github.com/ruby-oauth/oauth2 |
|
|
1135
1115
|
| Source | https://github.com/ruby-oauth/oauth2 |
|
|
1136
1116
|
| License | `MIT` |
|
|
1137
|
-
| Funding | https://github.com/sponsors/pboling, https://
|
|
1117
|
+
| Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/ruby-oauth, https://thanks.dev/u/gh/pboling, https://www.buymeacoffee.com/pboling |
|
|
1138
1118
|
<!-- kettle-jem:metadata:end -->
|
data/lib/oauth2/access_token.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# :
|
|
3
|
+
# simplecov:disable
|
|
4
4
|
begin
|
|
5
5
|
# The first version of hashie that has a version file was 1.1.0
|
|
6
6
|
# The first version of hashie that required the version file at runtime was 3.2.0
|
|
@@ -13,7 +13,7 @@ begin
|
|
|
13
13
|
rescue LoadError
|
|
14
14
|
nil
|
|
15
15
|
end
|
|
16
|
-
# :
|
|
16
|
+
# simplecov:enable
|
|
17
17
|
|
|
18
18
|
module OAuth2
|
|
19
19
|
class AccessToken # rubocop:disable Metrics/ClassLength
|
|
@@ -66,10 +66,10 @@ module OAuth2
|
|
|
66
66
|
t_key = supported_keys[0]
|
|
67
67
|
extra_tokens_warning(supported_keys, t_key)
|
|
68
68
|
end
|
|
69
|
-
# :
|
|
69
|
+
# simplecov:disable
|
|
70
70
|
# TODO: Get rid of this branching logic when dropping Hashie < v3.2
|
|
71
71
|
token = extract_token_value(fresh, t_key)
|
|
72
|
-
# :
|
|
72
|
+
# simplecov:enable
|
|
73
73
|
new(client, token, fresh)
|
|
74
74
|
end
|
|
75
75
|
|
|
@@ -103,7 +103,7 @@ You may need to set `snaky: false`. See inline documentation for more info.
|
|
|
103
103
|
])
|
|
104
104
|
end
|
|
105
105
|
|
|
106
|
-
# :
|
|
106
|
+
# simplecov:disable
|
|
107
107
|
def extract_token_value(fresh, key)
|
|
108
108
|
token_value = fresh.delete(key)
|
|
109
109
|
return token_value || "" if defined?(Hashie::VERSION)
|
|
@@ -112,7 +112,7 @@ You may need to set `snaky: false`. See inline documentation for more info.
|
|
|
112
112
|
# There is a bug in Hashie v0, which this accounts for.
|
|
113
113
|
token_value || fresh[key] || ""
|
|
114
114
|
end
|
|
115
|
-
# :
|
|
115
|
+
# simplecov:enable
|
|
116
116
|
end
|
|
117
117
|
|
|
118
118
|
# Initialize an AccessToken
|
|
@@ -157,9 +157,14 @@ You may need to set `snaky: false`. See inline documentation for more info.
|
|
|
157
157
|
no_tokens = (@token.nil? || @token.empty?) && (@refresh_token.nil? || @refresh_token.empty?)
|
|
158
158
|
if no_tokens
|
|
159
159
|
if @client.options[:raise_errors]
|
|
160
|
+
sanitized_opts = OAuth2::AUTH_SANITIZER.sanitize(
|
|
161
|
+
opts,
|
|
162
|
+
filtered_keys: OAuth2.config[:filtered_debug_keys],
|
|
163
|
+
label: OAuth2.config[:filtered_label]
|
|
164
|
+
)
|
|
160
165
|
raise Error.new({
|
|
161
166
|
error: "OAuth2::AccessToken has no token",
|
|
162
|
-
error_description: "Options are: #{
|
|
167
|
+
error_description: "Options are: #{sanitized_opts.inspect}",
|
|
163
168
|
})
|
|
164
169
|
elsif !OAuth2.config.silence_no_tokens_warning
|
|
165
170
|
warn("OAuth2::AccessToken has no token")
|
|
@@ -171,7 +176,7 @@ You may need to set `snaky: false`. See inline documentation for more info.
|
|
|
171
176
|
@expires_at &&= convert_expires_at(@expires_at)
|
|
172
177
|
@expires_latency &&= @expires_latency.to_i
|
|
173
178
|
@expires_at ||= Time.now.to_i + @expires_in if @expires_in && !@expires_in.zero?
|
|
174
|
-
@expires_at -= @expires_latency if @expires_latency
|
|
179
|
+
@expires_at -= @expires_latency if @expires_at && @expires_latency
|
|
175
180
|
@options = {
|
|
176
181
|
mode: opts.delete(:mode) || :header,
|
|
177
182
|
header_format: opts.delete(:header_format) || "Bearer %s",
|
data/lib/oauth2/client.rb
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
require "faraday"
|
|
4
4
|
require "logger"
|
|
5
5
|
|
|
6
|
-
# :
|
|
6
|
+
# simplecov:disable since coverage tracking only runs on the builds with Faraday v2
|
|
7
7
|
# We do run builds on Faraday v0 (and v1!), so this code is actually covered!
|
|
8
8
|
# This is the only nocov in the whole project!
|
|
9
9
|
if Faraday::Utils.respond_to?(:default_space_encoding)
|
|
10
10
|
# This setting doesn't exist in faraday 0.x
|
|
11
11
|
Faraday::Utils.default_space_encoding = "%20"
|
|
12
12
|
end
|
|
13
|
-
# :
|
|
13
|
+
# simplecov:enable
|
|
14
14
|
|
|
15
15
|
module OAuth2
|
|
16
16
|
ConnectionError = Class.new(Faraday::ConnectionFailed)
|
|
@@ -491,13 +491,21 @@ module OAuth2
|
|
|
491
491
|
def sanitize_redirect_options(req_opts, current_location, next_location)
|
|
492
492
|
return req_opts unless cross_origin_redirect?(current_location, next_location)
|
|
493
493
|
|
|
494
|
-
headers = req_opts[:headers]
|
|
495
|
-
return req_opts unless headers && headers.any? { |key, _value| authorization_header?(key) }
|
|
496
|
-
|
|
497
494
|
safe_opts = req_opts.dup
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
495
|
+
|
|
496
|
+
[:headers, "headers"].each do |key|
|
|
497
|
+
headers = safe_opts[key]
|
|
498
|
+
next unless headers && headers.any? { |header, _value| authorization_header?(header) }
|
|
499
|
+
|
|
500
|
+
safe_headers = headers.dup
|
|
501
|
+
safe_headers.delete_if { |header, _value| authorization_header?(header) }
|
|
502
|
+
safe_opts[key] = safe_headers
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
safe_opts.delete(:body)
|
|
506
|
+
safe_opts.delete("body")
|
|
507
|
+
safe_opts.delete(:params)
|
|
508
|
+
safe_opts.delete("params")
|
|
501
509
|
safe_opts
|
|
502
510
|
end
|
|
503
511
|
|
|
@@ -600,17 +608,28 @@ module OAuth2
|
|
|
600
608
|
#
|
|
601
609
|
# @api private
|
|
602
610
|
def build_access_token_legacy(response, access_token_opts, extract_access_token)
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
611
|
+
parsed = response.parsed
|
|
612
|
+
begin
|
|
613
|
+
extract_access_token.call(self, parsed.merge(access_token_opts))
|
|
614
|
+
rescue
|
|
615
|
+
# An error will be raised by the called if nil is returned and options[:raise_errors] is truthy, so this rescue is but temporary.
|
|
616
|
+
# Unfortunately, it does hide the real error, but this is deprecated legacy code,
|
|
617
|
+
# and this was effectively the long-standing pre-existing behavior, so there is little point in changing it.
|
|
618
|
+
nil
|
|
619
|
+
end
|
|
609
620
|
end
|
|
610
621
|
|
|
611
622
|
def oauth_debug_logging(builder)
|
|
612
623
|
if OAuth2::OAUTH_DEBUG
|
|
613
624
|
config = OAuth2.config
|
|
625
|
+
logger_options = {bodies: true}
|
|
626
|
+
# Faraday >= 1.0 supports pluggable formatters; use ours to redact
|
|
627
|
+
# structured (Hash/Array) bodies before Faraday renders them.
|
|
628
|
+
if defined?(OAuth2::SanitizedLogFormatter)
|
|
629
|
+
# Faraday instantiates the formatter with (logger:, options:); the
|
|
630
|
+
# formatter snapshots redaction config from OAuth2.config at that point.
|
|
631
|
+
logger_options[:formatter] = OAuth2::SanitizedLogFormatter
|
|
632
|
+
end
|
|
614
633
|
builder.response(
|
|
615
634
|
:logger,
|
|
616
635
|
OAuth2::AUTH_SANITIZER::SanitizedLogger.new(
|
|
@@ -618,7 +637,7 @@ module OAuth2
|
|
|
618
637
|
filtered_keys: config[:filtered_debug_keys],
|
|
619
638
|
label: config[:filtered_label]
|
|
620
639
|
),
|
|
621
|
-
|
|
640
|
+
**logger_options
|
|
622
641
|
)
|
|
623
642
|
end
|
|
624
643
|
end
|