omniauth-jwt2 0.1.0 → 0.1.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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +62 -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 +17 -0
  9. data/README.md +500 -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/sig/omniauth/jwt/version.rbs +8 -0
  19. data/sig/omniauth/jwt2/version.rbs +8 -0
  20. data.tar.gz.sig +0 -0
  21. metadata +263 -58
  22. metadata.gz.sig +0 -0
  23. data/.github/FUNDING.yml +0 -11
  24. data/.github/dependabot.yml +0 -2
  25. data/.github/workflows/ancient.yml +0 -53
  26. data/.github/workflows/ci.yml +0 -59
  27. data/.github/workflows/coverage.yml +0 -91
  28. data/.github/workflows/legacy.yml +0 -54
  29. data/.github/workflows/style.yml +0 -43
  30. data/.gitignore +0 -18
  31. data/.rspec +0 -2
  32. data/.rubocop.yml +0 -2
  33. data/.rubocop_gradual.lock +0 -39
  34. data/.simplecov +0 -2
  35. data/.tool-versions +0 -1
  36. data/Gemfile +0 -17
  37. data/Guardfile +0 -8
  38. data/LICENSE.txt +0 -23
  39. data/Rakefile +0 -23
  40. data/gemfiles/ancient.gemfile +0 -20
  41. data/gemfiles/contexts/coverage.gemfile +0 -2
  42. data/gemfiles/contexts/debug.gemfile +0 -6
  43. data/gemfiles/contexts/style.gemfile +0 -5
  44. data/gemfiles/contexts/testing.gemfile +0 -8
  45. data/gemfiles/coverage.gemfile +0 -20
  46. data/gemfiles/legacy.gemfile +0 -26
  47. data/gemfiles/style.gemfile +0 -20
  48. data/gemfiles/vanilla.gemfile +0 -20
  49. data/omniauth-jwt2.gemspec +0 -41
  50. data/spec/lib/omniauth/strategies/jwt_spec.rb +0 -213
  51. data/spec/spec_helper.rb +0 -64
  52. data/spec/support/hash.rb +0 -9
  53. 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::JWT
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,403 @@ 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) 2020 Osama Sayegh
324
+ - Copyright (c) 2023 Nicolás Hock Isaza
325
+ - Copyright (c) 2023, 2026 Peter Boling
326
+
327
+ </details>
328
+
329
+ ## 🤑 A request for help
330
+
331
+ Maintainers have teeth and need to pay their dentists.
332
+ After getting laid off in an RIF in March, and encountering difficulty finding a new one,
333
+ I began spending most of my time building open source tools.
334
+ I'm hoping to be able to pay for my kids' health insurance this month,
335
+ so if you value the work I am doing, I need your support.
336
+ Please consider sponsoring me or the project.
337
+
338
+ To join the community or get help 👇️ Join the Discord.
339
+
340
+ [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
341
+
342
+ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
343
+
344
+ [![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]
345
+
346
+ ### Please give the project a star ⭐ ♥.
347
+
348
+ 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.
349
+
350
+ Thanks for RTFM. ☺️
351
+
352
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
353
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
354
+ [⛳liberapay]: https://liberapay.com/pboling/donate
355
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/omniauth
356
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/omniauth
357
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/omniauth
358
+ [🖇osc-backers]: https://opencollective.com/omniauth#backer
359
+ [🖇osc-backers-i]: https://opencollective.com/omniauth/backers/badge.svg?style=flat
360
+ [🖇osc-sponsors]: https://opencollective.com/omniauth#sponsor
361
+ [🖇osc-sponsors-i]: https://opencollective.com/omniauth/sponsors/badge.svg?style=flat
362
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/omniauth?style=for-the-badge
363
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/omniauth?style=for-the-badge
364
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/omniauth?style=for-the-badge
365
+ [🖇osc]: https://opencollective.com/omniauth
366
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
367
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
368
+ [🖇sponsor]: https://github.com/sponsors/pboling
369
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
370
+ [🖇polar]: https://polar.sh/pboling
371
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
372
+ [🖇kofi]: https://ko-fi.com/pboling
373
+ [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
374
+ [🖇patreon]: https://patreon.com/galtzo
375
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
376
+ [🖇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
377
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
378
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
379
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
380
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
381
+ [🖇floss-funding.dev]: https://floss-funding.dev
382
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
383
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
384
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
385
+ [✉️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
386
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
387
+
388
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
389
+ [⛳️gem-namespace]: https://github.com/omniauth/omniauth-jwt2
390
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Omniauth::JWT-3C2D2D.svg?style=square&logo=ruby&logoColor=white
391
+ [⛳️gem-name]: https://bestgems.org/gems/omniauth-jwt2
392
+ [⛳️name-img]: https://img.shields.io/badge/name-omniauth--jwt2-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
393
+ [⛳️tag-img]: https://img.shields.io/github/tag/omniauth/omniauth-jwt2.svg
394
+ [⛳️tag]: https://github.com/omniauth/omniauth-jwt2/releases
395
+ [🚂maint-blog]: http://www.railsbling.com/tags/omniauth-jwt2
396
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
397
+ [🚂maint-contact]: http://www.railsbling.com/contact
398
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
399
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
400
+ [💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
401
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
402
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
403
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
404
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
405
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
406
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
407
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
408
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
409
+ [💖🌳linktree]: https://linktr.ee/galtzo
410
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
411
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
412
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
413
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
414
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
415
+ [💖🧊berg]: https://codeberg.org/pboling
416
+ [💖🐙hub]: https://github.org/pboling
417
+ [💖🛖hut]: https://sr.ht/~galtzo/
418
+ [💖🧪lab]: https://gitlab.com/pboling
419
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
420
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
421
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
422
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
423
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-omniauth-jwt2?utm_source=rubygems-omniauth-jwt2&utm_medium=referral&utm_campaign=readme
424
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
425
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
426
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
427
+ [🚂railsbling]: http://www.railsbling.com
428
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
429
+ [📜src-gl]: https://gitlab.com/omniauth/omniauth-jwt2
430
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
431
+ [📜src-cb]: https://codeberg.org/omniauth/omniauth-jwt2
432
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
433
+ [📜src-gh]: https://github.com/omniauth/omniauth-jwt2
434
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
435
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
436
+ [📜gl-wiki]: https://gitlab.com/omniauth/omniauth-jwt2/-/wikis/home
437
+ [📜gh-wiki]: https://github.com/omniauth/omniauth-jwt2/wiki
438
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
439
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
440
+ [👽dl-rank]: https://bestgems.org/gems/omniauth-jwt2
441
+ [👽dl-ranki]: https://img.shields.io/gem/rd/omniauth-jwt2.svg
442
+ [👽version]: https://bestgems.org/gems/omniauth-jwt2
443
+ [👽versioni]: https://img.shields.io/gem/v/omniauth-jwt2.svg
444
+ [🏀codecov]: https://codecov.io/gh/omniauth/omniauth-jwt2
445
+ [🏀codecovi]: https://codecov.io/gh/omniauth/omniauth-jwt2/graph/badge.svg
446
+ [🏀coveralls]: https://coveralls.io/github/omniauth/omniauth-jwt2?branch=main
447
+ [🏀coveralls-img]: https://coveralls.io/repos/github/omniauth/omniauth-jwt2/badge.svg?branch=main
448
+ [🚎ruby-2.4-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-2.4.yml
449
+ [🚎ruby-2.5-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-2.5.yml
450
+ [🚎ruby-2.6-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-2.6.yml
451
+ [🚎ruby-2.7-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-2.7.yml
452
+ [🚎ruby-3.0-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.0.yml
453
+ [🚎ruby-3.1-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.1.yml
454
+ [🚎ruby-3.2-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.2.yml
455
+ [🚎ruby-3.3-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.3.yml
456
+ [🚎ruby-3.4-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/ruby-3.4.yml
457
+ [🚎jruby-9.2-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby-9.2.yml
458
+ [🚎jruby-9.3-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby-9.3.yml
459
+ [🚎jruby-9.4-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby-9.4.yml
460
+ [🚎truby-22.3-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-22.3.yml
461
+ [🚎truby-23.0-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-23.0.yml
462
+ [🚎truby-23.1-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-23.1.yml
463
+ [🚎truby-24.2-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-24.2.yml
464
+ [🚎truby-25.0-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffleruby-25.0.yml
465
+ [🚎2-cov-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/coverage.yml
466
+ [🚎2-cov-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/coverage.yml/badge.svg
467
+ [🚎3-hd-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/heads.yml
468
+ [🚎3-hd-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/heads.yml/badge.svg
469
+ [🚎5-st-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/style.yml
470
+ [🚎5-st-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/style.yml/badge.svg
471
+ [🚎9-t-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffle.yml
472
+ [🚎9-t-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/truffle.yml/badge.svg
473
+ [🚎10-j-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby.yml
474
+ [🚎10-j-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/jruby.yml/badge.svg
475
+ [🚎11-c-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/current.yml
476
+ [🚎11-c-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/current.yml/badge.svg
477
+ [🚎12-crh-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/dep-heads.yml
478
+ [🚎12-crh-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/dep-heads.yml/badge.svg
479
+ [🚎13-🔒️-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/locked_deps.yml
480
+ [🚎13-🔒️-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/locked_deps.yml/badge.svg
481
+ [🚎14-🔓️-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/unlocked_deps.yml
482
+ [🚎14-🔓️-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/unlocked_deps.yml/badge.svg
483
+ [🚎15-🪪-wf]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/license-eye.yml
484
+ [🚎15-🪪-wfi]: https://github.com/omniauth/omniauth-jwt2/actions/workflows/license-eye.yml/badge.svg
485
+ [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
486
+ [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
487
+ [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
488
+ [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
489
+ [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
490
+ [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
491
+ [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
492
+ [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
493
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
494
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
495
+ [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
496
+ [💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
497
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
498
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
499
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
500
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
501
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
502
+ [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
503
+ [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
504
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
505
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
506
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
507
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
508
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
509
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
510
+ [🤝gh-issues]: https://github.com/omniauth/omniauth-jwt2/issues
511
+ [🤝gh-pulls]: https://github.com/omniauth/omniauth-jwt2/pulls
512
+ [🤝gl-issues]: https://gitlab.com/omniauth/omniauth-jwt2/-/issues
513
+ [🤝gl-pulls]: https://gitlab.com/omniauth/omniauth-jwt2/-/merge_requests
514
+ [🤝cb-issues]: https://codeberg.org/omniauth/omniauth-jwt2/issues
515
+ [🤝cb-pulls]: https://codeberg.org/omniauth/omniauth-jwt2/pulls
516
+ [🤝cb-donate]: https://donate.codeberg.org/
517
+ [🤝contributing]: https://github.com/omniauth/omniauth-jwt2/blob/main/CONTRIBUTING.md
518
+ [🏀codecov-g]: https://codecov.io/gh/omniauth/omniauth-jwt2/graph/badge.svg
519
+ [🖐contrib-rocks]: https://contrib.rocks
520
+ [🖐contributors]: https://github.com/omniauth/omniauth-jwt2/graphs/contributors
521
+ [🖐contributors-img]: https://contrib.rocks/image?repo=omniauth/omniauth-jwt2
522
+ [🚎contributors-gl]: https://gitlab.com/omniauth/omniauth-jwt2/-/graphs/main
523
+ [🪇conduct]: https://github.com/omniauth/omniauth-jwt2/blob/main/CODE_OF_CONDUCT.md
524
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
525
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
526
+ [📌semver]: https://semver.org/spec/v2.0.0.html
527
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
528
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
529
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
530
+ [📌changelog]: https://github.com/omniauth/omniauth-jwt2/blob/main/CHANGELOG.md
531
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
532
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
533
+ [📌gitmoji]: https://gitmoji.dev
534
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
535
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
536
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.067-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
537
+ [🔐security]: https://github.com/omniauth/omniauth-jwt2/blob/main/SECURITY.md
538
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
539
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
540
+ [📄license]: LICENSE.md
541
+ [📄license-ref]: MIT.md
542
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
543
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
544
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
545
+
546
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
547
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
548
+ [🚎yard-current]: http://rubydoc.info/gems/omniauth-jwt2
549
+ [🚎yard-head]: https://omniauth-jwt2.galtzo.com
550
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
551
+ [💎SHA_checksums]: https://gitlab.com/omniauth/omniauth-jwt2/-/tree/main/checksums
552
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
553
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
554
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
555
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
556
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
557
+
558
+ <!-- kettle-jem:metadata:start -->
559
+ | Field | Value |
560
+ |---|---|
561
+ | Package | omniauth-jwt2 |
562
+ | Description | 🔐 An OmniAuth strategy to accept JWT-based single sign-on. |
563
+ | Homepage | https://github.com/omniauth/omniauth-jwt2 |
564
+ | Source | https://github.com/omniauth/omniauth-jwt2/tree/v0.1.0 |
565
+ | License | `MIT` |
566
+ | 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 |
567
+ <!-- kettle-jem:metadata:end -->