omniauth-jwt2 0.1.0 → 1.0.0

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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +81 -0
  4. data/CITATION.cff +20 -0
  5. data/CODE_OF_CONDUCT.md +134 -0
  6. data/CONTRIBUTING.md +272 -0
  7. data/FUNDING.md +74 -0
  8. data/LICENSE.md +16 -0
  9. data/README.md +499 -58
  10. data/RUBOCOP.md +71 -0
  11. data/SECURITY.md +21 -0
  12. data/certs/pboling.pem +27 -0
  13. data/lib/omniauth/jwt/version.rb +6 -3
  14. data/lib/omniauth/jwt.rb +2 -1
  15. data/lib/omniauth/jwt2/version.rb +10 -0
  16. data/lib/omniauth/jwt2.rb +10 -0
  17. data/lib/omniauth/strategies/jwt.rb +31 -9
  18. data/lib/omniauth-jwt2.rb +3 -0
  19. data/sig/omniauth/jwt/version.rbs +8 -0
  20. data/sig/omniauth/jwt2/version.rbs +8 -0
  21. data.tar.gz.sig +1 -0
  22. metadata +269 -61
  23. metadata.gz.sig +0 -0
  24. data/.github/FUNDING.yml +0 -11
  25. data/.github/dependabot.yml +0 -2
  26. data/.github/workflows/ancient.yml +0 -53
  27. data/.github/workflows/ci.yml +0 -59
  28. data/.github/workflows/coverage.yml +0 -91
  29. data/.github/workflows/legacy.yml +0 -54
  30. data/.github/workflows/style.yml +0 -43
  31. data/.gitignore +0 -18
  32. data/.rspec +0 -2
  33. data/.rubocop.yml +0 -2
  34. data/.rubocop_gradual.lock +0 -39
  35. data/.simplecov +0 -2
  36. data/.tool-versions +0 -1
  37. data/Gemfile +0 -17
  38. data/Guardfile +0 -8
  39. data/LICENSE.txt +0 -23
  40. data/Rakefile +0 -23
  41. data/gemfiles/ancient.gemfile +0 -20
  42. data/gemfiles/contexts/coverage.gemfile +0 -2
  43. data/gemfiles/contexts/debug.gemfile +0 -6
  44. data/gemfiles/contexts/style.gemfile +0 -5
  45. data/gemfiles/contexts/testing.gemfile +0 -8
  46. data/gemfiles/coverage.gemfile +0 -20
  47. data/gemfiles/legacy.gemfile +0 -26
  48. data/gemfiles/style.gemfile +0 -20
  49. data/gemfiles/vanilla.gemfile +0 -20
  50. data/omniauth-jwt2.gemspec +0 -41
  51. data/spec/lib/omniauth/strategies/jwt_spec.rb +0 -213
  52. data/spec/spec_helper.rb +0 -64
  53. data/spec/support/hash.rb +0 -9
  54. data/spec/support/next_instance_of.rb +0 -43
data/README.md CHANGED
@@ -1,71 +1,120 @@
1
- # OmniAuth::JWT
1
+ <a href="https://github.com/omniauth"><img alt="omniauth Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/omniauth/avatar-128px.svg" width="14%" align="right"/></a>
2
2
 
3
- <div id="badges">
3
+ # 🔐 Omniauth::JWT2
4
4
 
5
- [![Current][🚎ciwfi]][🚎ciwf] [![Coverage][🖐cowfi]][🖐cowf] [![Style][🧮swfi]][🧮swf]
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] [![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
- [![Legacy][🧮lwfi]][🧮lwf] [![Ancient][🧮awfi]][🧮awf]
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
8
8
 
9
9
  ---
10
10
 
11
- [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay]
12
- <span class="badge-buymeacoffee">
13
- [![Sponsor Me][🖇sponsor-img]][🖇sponsor]
14
- <a href="https://ko-fi.com/O5O86SNP4" target='_blank' title="Donate to my FLOSS or refugee efforts at ko-fi.com"><img src="https://img.shields.io/badge/buy%20me%20coffee-donate-yellow.svg" alt="Buy Me Coffee donation button" /></a>
15
- </span>
16
- <span class="badge-patreon">
17
- <a href="https://patreon.com/galtzo" title="Donate to my FLOSS or refugee efforts using Patreon"><img src="https://img.shields.io/badge/patreon-donate-yellow.svg" alt="Patreon donate button" /></a>
18
- </span>
19
-
20
- </div>
21
-
22
- [🚎ciwf]: https://github.com/pboling/omniauth-jwt2/actions/workflows/ci.yml
23
- [🚎ciwfi]: https://github.com/pboling/omniauth-jwt2/actions/workflows/ci.yml/badge.svg
24
- [🖐cowf]: https://github.com/pboling/omniauth-jwt2/actions/workflows/coverage.yml
25
- [🖐cowfi]: https://github.com/pboling/omniauth-jwt2/actions/workflows/coverage.yml/badge.svg
26
- [🧮swf]: https://github.com/pboling/omniauth-jwt2/actions/workflows/style.yml
27
- [🧮swfi]: https://github.com/pboling/omniauth-jwt2/actions/workflows/style.yml/badge.svg
28
- [🧮lwf]: https://github.com/pboling/omniauth-jwt2/actions/workflows/legacy.yml
29
- [🧮lwfi]: https://github.com/pboling/omniauth-jwt2/actions/workflows/legacy.yml/badge.svg
30
- [🧮awf]: https://github.com/pboling/omniauth-jwt2/actions/workflows/ancient.yml
31
- [🧮awfi]: https://github.com/pboling/omniauth-jwt2/actions/workflows/ancient.yml/badge.svg
32
-
33
- [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
34
- [⛳liberapay]: https://liberapay.com/pboling/donate
35
- [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
36
- [🖇sponsor]: https://github.com/sponsors/pboling
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
+
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]
14
+
15
+ <details>
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
17
+
18
+ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
19
+
20
+ </details>
21
+
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>
23
+
24
+ `omniauth-jwt2` is the maintained OmniAuth JWT strategy package. It provides
25
+ the `OmniAuth::Strategies::JWT` strategy and keeps the public require path as
26
+ `require "omniauth/jwt"` while the gem name remains `omniauth-jwt2`.
27
+
28
+ The strategy is useful when an application needs to accept JWT-based SSO from
29
+ another trusted application. The provider redirects back to `/auth/jwt/callback`
30
+ with a signed JWT, and the strategy maps configured claims into OmniAuth's auth
31
+ hash.
32
+
33
+ ## 💡 Info you can shake a stick at
34
+
35
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
36
+ |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
37
+ | 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]|
38
+ | 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]|
39
+ | 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]|
40
+ | 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]|
41
+ | 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]|
42
+ | 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] |
43
+ | 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] |
44
+ | 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] |
45
+ | 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] |
46
+ | 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] |
47
+ | 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] |
48
+ | `...` 💖 | [![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] |
49
+
50
+ ### Compatibility
37
51
 
38
- [JSON Web Token](http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html) (JWT) is a simple
39
- way to send verified information between two parties online. This can be useful as a mechanism for
40
- providing Single Sign-On (SSO) to an application by allowing an authentication server to send a validated
41
- claim and log the user in. This is how [Zendesk does SSO](https://support.zendesk.com/hc/en-us/articles/4408845838874-Enabling-JWT-JSON-Web-Token-single-sign-on),
42
- for example.
52
+ Compatible with MRI Ruby 2.2+, and concordant releases of JRuby, and TruffleRuby.
53
+ CI workflows and Appraisals are generated for MRI Ruby 2.4+.
54
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
55
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
56
+ not practical for the current toolchain.
43
57
 
44
- OmniAuth::JWT provides a clean, simple wrapper on top of JWT so that you can easily implement this kind
45
- of SSO either between your own applications or allow third parties to delegate authentication.
58
+ | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
59
+ |------------------------------------------------|--------------------------------------------------------|
60
+ | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
46
61
 
47
- ## History
62
+ ### Federated DVCS
48
63
 
49
- This library is a fork of the [original](https://github.com/mbleigh/omniauth-jwt)
50
- by Michael Bleigh which stopped development in 2013.
51
- It incorporates *all* of the fixes and features from the main forks by Aha, Discourse,
52
- and GitLab (which has been vendored inside GitLab, and isn't even in the fork network).
64
+ <details markdown="1">
65
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
53
66
 
54
- ## Installation
67
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
68
+ |-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
69
+ | 🧪 [omniauth/omniauth-jwt2 on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
70
+ | 🧊 [omniauth/omniauth-jwt2 on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
71
+ | 🐙 [omniauth/omniauth-jwt2 on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
72
+ | 🎮️ [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] |
55
73
 
56
- Add this line to your application's Gemfile:
74
+ </details>
57
75
 
58
- gem 'omniauth-jwt2'
76
+ [gh-discussions]: https://github.com/omniauth/omniauth-jwt2/discussions
59
77
 
60
- And then execute:
78
+ ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/omniauth-jwt2)](https://tidelift.com/subscription/pkg/rubygems-omniauth-jwt2?utm_source=rubygems-omniauth-jwt2&utm_medium=referral&utm_campaign=readme)
79
+
80
+ Available as part of the Tidelift Subscription.
81
+
82
+ <details markdown="1">
83
+ <summary>Need enterprise-level guarantees?</summary>
84
+
85
+ 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.
86
+
87
+ [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
88
+
89
+ - 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
90
+ - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
91
+ - 💡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
92
+
93
+ Alternatively:
94
+
95
+ - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
96
+ - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
97
+ - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
98
+
99
+ </details>
100
+
101
+ ## ✨ Installation
102
+
103
+ Install the gem and add to the application's Gemfile by executing:
104
+
105
+ ```console
106
+ bundle add omniauth-jwt2
107
+ ```
61
108
 
62
- $ bundle
109
+ If bundler is not being used to manage dependencies, install the gem by executing:
63
110
 
64
- Or install it yourself as:
111
+ ```console
112
+ gem install omniauth-jwt2
113
+ ```
65
114
 
66
- $ gem install omniauth-jwt2
115
+ ## ⚙️ Configuration
67
116
 
68
- ## Usage
117
+ ## 🔧 Basic Usage
69
118
 
70
119
  You use OmniAuth::JWT just like you do any other OmniAuth strategy:
71
120
 
@@ -91,7 +140,7 @@ in. Other available options are:
91
140
 
92
141
  ### Authentication Process
93
142
 
94
- When you authenticate through `omniauth-jwt` you can send users to `/auth/jwt` and it will redirect
143
+ When you authenticate through this strategy you can send users to `/auth/jwt` and it will redirect
95
144
  them to the URL specified in the `auth_url` option. From there, the provider must generate a JWT
96
145
  and send it to the `/auth/jwt/callback` URL as a "jwt" parameter:
97
146
 
@@ -108,7 +157,7 @@ get "/login/sso/other-app" do
108
157
  id: current_user.id,
109
158
  name: current_user.name,
110
159
  email: current_user.email,
111
- iat: Time.now.to_i,
160
+ iat: Time.now.to_i
112
161
  }
113
162
 
114
163
  payload = JWT.encode(claims, ENV["SSO_SECRET"])
@@ -116,10 +165,402 @@ get "/login/sso/other-app" do
116
165
  end
117
166
  ```
118
167
 
119
- ## Contributing
168
+ ## 🦷 FLOSS Funding
169
+
170
+ While omniauth tools are free software and will always be, the project would benefit immensely from some funding.
171
+ Raising a monthly budget of... "dollars" would make the project more sustainable.
172
+
173
+ We welcome both individual and corporate sponsors! We also offer a
174
+ wide array of funding channels to account for your preferences.
175
+ Currently, [Open Collective][🖇osc] is our preferred funding platform.
176
+
177
+ **If you're working in a company that's making significant use of omniauth tools we'd
178
+ appreciate it if you suggest to your company to become a omniauth sponsor.**
179
+
180
+ You can support the development of omniauth tools via
181
+ [GitHub Sponsors][🖇sponsor],
182
+ [Liberapay][⛳liberapay],
183
+ [PayPal][🖇paypal],
184
+ [Open Collective][🖇osc]
185
+ and [Tidelift][🏙️entsup-tidelift].
186
+
187
+ | 📍 NOTE |
188
+ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
189
+ | 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. |
190
+
191
+ ### Open Collective for Individuals
192
+
193
+ Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/omniauth#backer)]
194
+
195
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
196
+
197
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
198
+ No backers yet. Be the first!
199
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
200
+
201
+ ### Open Collective for Organizations
202
+
203
+ Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/omniauth#sponsor)]
204
+
205
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
206
+
207
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
208
+ No sponsors yet. Be the first!
209
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
210
+
211
+ [kettle-readme-backers]: https://github.com/omniauth/omniauth-jwt2/blob/main/exe/kettle-readme-backers
212
+
213
+ ### Another way to support open-source
214
+
215
+ 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).
216
+
217
+ 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`.
218
+
219
+ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look.
220
+
221
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
222
+
223
+ [![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 to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS efforts using Patreon][🖇patreon-img]][🖇patreon]
224
+
225
+ ## 🔐 Security
226
+
227
+ See [SECURITY.md][🔐security].
228
+
229
+ ## 🤝 Contributing
230
+
231
+ If you need some ideas of where to help, you could work on adding more code coverage,
232
+ or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
233
+ or use the gem and think about how it could be better.
120
234
 
121
- 1. Fork it
122
- 2. Create your feature branch (`git checkout -b my-new-feature`)
123
- 3. Commit your changes (`git commit -am 'Add some feature'`)
124
- 4. Push to the branch (`git push origin my-new-feature`)
125
- 5. Create new Pull Request
235
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
236
+
237
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
238
+
239
+ ### 🚀 Release Instructions
240
+
241
+ See [CONTRIBUTING.md][🤝contributing].
242
+
243
+ ### Code Coverage
244
+
245
+ <details markdown="1">
246
+ <summary>Coverage service badges</summary>
247
+
248
+ [![Coverage Graph][🏀codecov-g]][🏀codecov]
249
+
250
+ [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
251
+
252
+ </details>
253
+
254
+ ### 🪇 Code of Conduct
255
+
256
+ Everyone interacting with this project's codebases, issue trackers,
257
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
258
+
259
+ ## 🌈 Contributors
260
+
261
+ [![Contributors][🖐contributors-img]][🖐contributors]
262
+
263
+ Made with [contributors-img][🖐contrib-rocks].
264
+
265
+ Also see GitLab Contributors: [https://gitlab.com/omniauth/omniauth-jwt2/-/graphs/main][🚎contributors-gl]
266
+
267
+ <details>
268
+ <summary>⭐️ Star History</summary>
269
+
270
+ <a href="https://star-history.com/omniauth/omniauth-jwt2&Date">
271
+ <picture>
272
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=omniauth/omniauth-jwt2&type=Date&theme=dark" />
273
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=omniauth/omniauth-jwt2&type=Date" />
274
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=omniauth/omniauth-jwt2&type=Date" />
275
+ </picture>
276
+ </a>
277
+
278
+ </details>
279
+
280
+ ## 📌 Versioning
281
+
282
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
283
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
284
+
285
+ For example:
286
+
287
+ ```ruby
288
+ spec.add_dependency("omniauth-jwt2", "~> 0.0")
289
+ ```
290
+
291
+ <details markdown="1">
292
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
293
+
294
+ Dropping support for a platform can be a breaking change for affected users.
295
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
296
+
297
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
298
+ read this article from the creator of SemVer:
299
+
300
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
301
+
302
+ </details>
303
+
304
+ See [CHANGELOG.md][📌changelog] for a list of releases.
305
+
306
+ ## 📄 License
307
+
308
+ The gem is available as open source under the terms of
309
+ the [MIT](MIT.md) [![License: MIT][📄license-img]][📄license-ref].
310
+
311
+ ### © Copyright
312
+
313
+ See [LICENSE.md][📄license] for the official copyright notice.
314
+
315
+ <details markdown="1">
316
+ <summary>Copyright holders</summary>
317
+
318
+ - Copyright (c) 2013 Michael Bleigh
319
+ - Copyright (c) 2014 Chris Waters
320
+ - Copyright (c) 2015 Robin Ward
321
+ - Copyright (c) 2015 Zach Schneider
322
+ - Copyright (c) 2020 Marcin Koziej
323
+ - Copyright (c) 2023 Nicolás Hock Isaza
324
+ - Copyright (c) 2023, 2026 Peter H. Boling
325
+
326
+ </details>
327
+
328
+ ## 🤑 A request for help
329
+
330
+ Maintainers have teeth and need to pay their dentists.
331
+ After getting laid off in an RIF in March, and encountering difficulty finding a new one,
332
+ I began spending most of my time building open source tools.
333
+ I'm hoping to be able to pay for my kids' health insurance this month,
334
+ so if you value the work I am doing, I need your support.
335
+ Please consider sponsoring me or the project.
336
+
337
+ To join the community or get help 👇️ Join the Discord.
338
+
339
+ [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
340
+
341
+ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
342
+
343
+ [![Sponsor omniauth/omniauth-jwt2 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]
344
+
345
+ ### Please give the project a star ⭐ ♥.
346
+
347
+ 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.
348
+
349
+ Thanks for RTFM. ☺️
350
+
351
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
352
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
353
+ [⛳liberapay]: https://liberapay.com/pboling/donate
354
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/omniauth
355
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/omniauth
356
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/omniauth
357
+ [🖇osc-backers]: https://opencollective.com/omniauth#backer
358
+ [🖇osc-backers-i]: https://opencollective.com/omniauth/backers/badge.svg?style=flat
359
+ [🖇osc-sponsors]: https://opencollective.com/omniauth#sponsor
360
+ [🖇osc-sponsors-i]: https://opencollective.com/omniauth/sponsors/badge.svg?style=flat
361
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/omniauth?style=for-the-badge
362
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/omniauth?style=for-the-badge
363
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/omniauth?style=for-the-badge
364
+ [🖇osc]: https://opencollective.com/omniauth
365
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
366
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
367
+ [🖇sponsor]: https://github.com/sponsors/pboling
368
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
369
+ [🖇polar]: https://polar.sh/pboling
370
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
371
+ [🖇kofi]: https://ko-fi.com/pboling
372
+ [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
373
+ [🖇patreon]: https://patreon.com/galtzo
374
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
375
+ [🖇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
376
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
377
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
378
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
379
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
380
+ [🖇floss-funding.dev]: https://floss-funding.dev
381
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
382
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
383
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
384
+ [✉️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
385
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
386
+
387
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
388
+ [⛳️gem-namespace]: https://github.com/omniauth/omniauth-jwt2
389
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Omniauth::JWT2-3C2D2D.svg?style=square&logo=ruby&logoColor=white
390
+ [⛳️gem-name]: https://bestgems.org/gems/omniauth-jwt2
391
+ [⛳️name-img]: https://img.shields.io/badge/name-omniauth--jwt2-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
392
+ [⛳️tag-img]: https://img.shields.io/github/tag/omniauth/omniauth-jwt2.svg
393
+ [⛳️tag]: https://github.com/omniauth/omniauth-jwt2/releases
394
+ [🚂maint-blog]: http://www.railsbling.com/tags/omniauth-jwt2
395
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
396
+ [🚂maint-contact]: http://www.railsbling.com/contact
397
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
398
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
399
+ [💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
400
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
401
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
402
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
403
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
404
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
405
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
406
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
407
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
408
+ [💖🌳linktree]: https://linktr.ee/galtzo
409
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
410
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
411
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
412
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
413
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
414
+ [💖🧊berg]: https://codeberg.org/pboling
415
+ [💖🐙hub]: https://github.org/pboling
416
+ [💖🛖hut]: https://sr.ht/~galtzo/
417
+ [💖🧪lab]: https://gitlab.com/pboling
418
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
419
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
420
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
421
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
422
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-omniauth-jwt2?utm_source=rubygems-omniauth-jwt2&utm_medium=referral&utm_campaign=readme
423
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
424
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
425
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
426
+ [🚂railsbling]: http://www.railsbling.com
427
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
428
+ [📜src-gl]: https://gitlab.com/omniauth/omniauth-jwt2
429
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
430
+ [📜src-cb]: https://codeberg.org/omniauth/omniauth-jwt2
431
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
432
+ [📜src-gh]: https://github.com/omniauth/omniauth-jwt2
433
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
434
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
435
+ [📜gl-wiki]: https://gitlab.com/omniauth/omniauth-jwt2/-/wikis/home
436
+ [📜gh-wiki]: https://github.com/omniauth/omniauth-jwt2/wiki
437
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
438
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
439
+ [👽dl-rank]: https://bestgems.org/gems/omniauth-jwt2
440
+ [👽dl-ranki]: https://img.shields.io/gem/rd/omniauth-jwt2.svg
441
+ [👽version]: https://bestgems.org/gems/omniauth-jwt2
442
+ [👽versioni]: https://img.shields.io/gem/v/omniauth-jwt2.svg
443
+ [🏀codecov]: https://codecov.io/gh/omniauth/omniauth-jwt2
444
+ [🏀codecovi]: https://codecov.io/gh/omniauth/omniauth-jwt2/graph/badge.svg
445
+ [🏀coveralls]: https://coveralls.io/github/omniauth/omniauth-jwt2?branch=main
446
+ [🏀coveralls-img]: https://coveralls.io/repos/github/omniauth/omniauth-jwt2/badge.svg?branch=main
447
+ [🚎ruby-2.4-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-2.4.yml
448
+ [🚎ruby-2.5-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-2.5.yml
449
+ [🚎ruby-2.6-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-2.6.yml
450
+ [🚎ruby-2.7-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-2.7.yml
451
+ [🚎ruby-3.0-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.0.yml
452
+ [🚎ruby-3.1-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.1.yml
453
+ [🚎ruby-3.2-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.2.yml
454
+ [🚎ruby-3.3-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.3.yml
455
+ [🚎ruby-3.4-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.4.yml
456
+ [🚎jruby-9.2-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby-9.2.yml
457
+ [🚎jruby-9.3-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby-9.3.yml
458
+ [🚎jruby-9.4-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby-9.4.yml
459
+ [🚎truby-22.3-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-22.3.yml
460
+ [🚎truby-23.0-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-23.0.yml
461
+ [🚎truby-23.1-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-23.1.yml
462
+ [🚎truby-24.2-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-24.2.yml
463
+ [🚎truby-25.0-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-25.0.yml
464
+ [🚎2-cov-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/coverage.yml
465
+ [🚎2-cov-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/coverage.yml/badge.svg
466
+ [🚎3-hd-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/heads.yml
467
+ [🚎3-hd-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/heads.yml/badge.svg
468
+ [🚎5-st-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/style.yml
469
+ [🚎5-st-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/style.yml/badge.svg
470
+ [🚎9-t-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffle.yml
471
+ [🚎9-t-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffle.yml/badge.svg
472
+ [🚎10-j-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby.yml
473
+ [🚎10-j-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby.yml/badge.svg
474
+ [🚎11-c-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/current.yml
475
+ [🚎11-c-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/current.yml/badge.svg
476
+ [🚎12-crh-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/dep-heads.yml
477
+ [🚎12-crh-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/dep-heads.yml/badge.svg
478
+ [🚎13-🔒️-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/locked_deps.yml
479
+ [🚎13-🔒️-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/locked_deps.yml/badge.svg
480
+ [🚎14-🔓️-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/unlocked_deps.yml
481
+ [🚎14-🔓️-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/unlocked_deps.yml/badge.svg
482
+ [🚎15-🪪-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/license-eye.yml
483
+ [🚎15-🪪-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/license-eye.yml/badge.svg
484
+ [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
485
+ [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
486
+ [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
487
+ [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
488
+ [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
489
+ [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
490
+ [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
491
+ [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
492
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
493
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
494
+ [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
495
+ [💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
496
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
497
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
498
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
499
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
500
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
501
+ [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
502
+ [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
503
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
504
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
505
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
506
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
507
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
508
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
509
+ [🤝gh-issues]: https://github.com/omniauth/omniauth-jwt2/issues
510
+ [🤝gh-pulls]: https://github.com/omniauth/omniauth-jwt2/pulls
511
+ [🤝gl-issues]: https://gitlab.com/omniauth/omniauth-jwt2/-/issues
512
+ [🤝gl-pulls]: https://gitlab.com/omniauth/omniauth-jwt2/-/merge_requests
513
+ [🤝cb-issues]: https://codeberg.org/omniauth/omniauth-jwt2/issues
514
+ [🤝cb-pulls]: https://codeberg.org/omniauth/omniauth-jwt2/pulls
515
+ [🤝cb-donate]: https://donate.codeberg.org/
516
+ [🤝contributing]: https://github.com/omniauth/omniauth-jwt2/blob/main/CONTRIBUTING.md
517
+ [🏀codecov-g]: https://codecov.io/gh/omniauth/omniauth-jwt2/graph/badge.svg
518
+ [🖐contrib-rocks]: https://contrib.rocks
519
+ [🖐contributors]: https://github.com/omniauth/omniauth-jwt2/graphs/contributors
520
+ [🖐contributors-img]: https://contrib.rocks/image?repo=omniauth/omniauth-jwt2
521
+ [🚎contributors-gl]: https://gitlab.com/omniauth/omniauth-jwt2/-/graphs/main
522
+ [🪇conduct]: https://github.com/omniauth/omniauth-jwt2/blob/main/CODE_OF_CONDUCT.md
523
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
524
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
525
+ [📌semver]: https://semver.org/spec/v2.0.0.html
526
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
527
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
528
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
529
+ [📌changelog]: https://github.com/omniauth/omniauth-jwt2/blob/main/CHANGELOG.md
530
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
531
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
532
+ [📌gitmoji]: https://gitmoji.dev
533
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
534
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
535
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.086-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
536
+ [🔐security]: https://github.com/omniauth/omniauth-jwt2/blob/main/SECURITY.md
537
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
538
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
539
+ [📄license]: LICENSE.md
540
+ [📄license-ref]: MIT.md
541
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
542
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
543
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
544
+
545
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
546
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
547
+ [🚎yard-current]: http://rubydoc.info/gems/omniauth-jwt2
548
+ [🚎yard-head]: https://omniauth-jwt2.galtzo.com
549
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
550
+ [💎SHA_checksums]: https://gitlab.com/omniauth/omniauth-jwt2/-/tree/main/checksums
551
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
552
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
553
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
554
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
555
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
556
+
557
+ <!-- kettle-jem:metadata:start -->
558
+ | Field | Value |
559
+ |---|---|
560
+ | Package | omniauth-jwt2 |
561
+ | Description | 🔐 An OmniAuth strategy to accept JWT-based single sign-on. |
562
+ | Homepage | https://github.com/omniauth/omniauth-jwt2 |
563
+ | Source | https://github.com/omniauth/omniauth-jwt2 |
564
+ | License | `MIT` |
565
+ | Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/omniauth, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/omniauth-jwt2, https://www.buymeacoffee.com/pboling |
566
+ <!-- kettle-jem:metadata:end -->