oauth2 1.4.9 → 1.4.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -3
- data/CONTRIBUTING.md +18 -0
- data/README.md +77 -52
- data/SECURITY.md +20 -0
- data/lib/oauth2/client.rb +2 -2
- data/lib/oauth2/mac_token.rb +1 -1
- data/lib/oauth2/version.rb +1 -1
- metadata +50 -46
- data/spec/fixtures/README.md +0 -11
- data/spec/fixtures/RS256/jwtRS256.key +0 -51
- data/spec/fixtures/RS256/jwtRS256.key.pub +0 -14
- data/spec/helper.rb +0 -33
- data/spec/oauth2/access_token_spec.rb +0 -218
- data/spec/oauth2/authenticator_spec.rb +0 -86
- data/spec/oauth2/client_spec.rb +0 -556
- data/spec/oauth2/mac_token_spec.rb +0 -122
- data/spec/oauth2/response_spec.rb +0 -96
- data/spec/oauth2/strategy/assertion_spec.rb +0 -113
- data/spec/oauth2/strategy/auth_code_spec.rb +0 -108
- data/spec/oauth2/strategy/base_spec.rb +0 -7
- data/spec/oauth2/strategy/client_credentials_spec.rb +0 -71
- data/spec/oauth2/strategy/implicit_spec.rb +0 -28
- data/spec/oauth2/strategy/password_spec.rb +0 -58
- data/spec/oauth2/version_spec.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b117fa1389074159407828a31fc676387c5c5fa0a7be9c4836a139eb4624cdb
|
4
|
+
data.tar.gz: 4589a4cf05d759353585673dd7b042ccc73ed144e5c3e2501c58a35da582c71c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acf8d75b54a65226a5bb782d692a55d2c1f078cf3f5dc2de1553b3dcad4b3e99f4bf638ef9040b90f209ba501b4547b6a087546ecfc2a8babf35ca3800e3bac3
|
7
|
+
data.tar.gz: c3ba6e85735d1ab6dbd5d0c27e40b19d0e9051d15987faba7f34d3c807d43f91e2b109b1104de64980bd75869f417f6025d919ab9dc67940369313ac859ae2b2
|
data/CHANGELOG.md
CHANGED
@@ -3,9 +3,14 @@ All notable changes to this project will be documented in this file.
|
|
3
3
|
|
4
4
|
## unreleased
|
5
5
|
|
6
|
+
|
7
|
+
## [1.4.10] - 2022-07-01
|
8
|
+
|
9
|
+
- FIPS Compatibility [#587](https://github.com/oauth-xx/oauth2/pull/587) (@akostadinov)
|
10
|
+
|
6
11
|
## [1.4.9] - 2022-02-20
|
7
12
|
|
8
|
-
- Fixes compatibility with Faraday v2 [572](https://github.com/oauth-xx/oauth2/issues/572)
|
13
|
+
- Fixes compatibility with Faraday v2 [#572](https://github.com/oauth-xx/oauth2/issues/572)
|
9
14
|
- Includes supported versions of Faraday in test matrix:
|
10
15
|
- Faraday ~> 2.2.0 with Ruby >= 2.6
|
11
16
|
- Faraday ~> 1.10 with Ruby >= 2.4
|
@@ -15,7 +20,7 @@ All notable changes to this project will be documented in this file.
|
|
15
20
|
## [1.4.8] - 2022-02-18
|
16
21
|
|
17
22
|
- MFA is now required to push new gem versions (@pboling)
|
18
|
-
- README overhaul w/ new Ruby
|
23
|
+
- README overhaul w/ new Ruby Version and Engine compatibility policies (@pboling)
|
19
24
|
- [#569](https://github.com/oauth-xx/oauth2/pull/569) Backport fixes ([#561](https://github.com/oauth-xx/oauth2/pull/561) by @ryogift), and add more fixes, to allow faraday 1.x and 2.x (@jrochkind)
|
20
25
|
- Improve Code Coverage tracking (Coveralls, CodeCov, CodeClimate), and enable branch coverage (@pboling)
|
21
26
|
- Add CodeQL, Security Policy, Funding info (@pboling)
|
@@ -193,4 +198,6 @@ All notable changes to this project will be documented in this file.
|
|
193
198
|
[1.4.6]: https://github.com/oauth-xx/oauth2/compare/v1.4.5...v1.4.6
|
194
199
|
[1.4.7]: https://github.com/oauth-xx/oauth2/compare/v1.4.6...v1.4.7
|
195
200
|
[1.4.8]: https://github.com/oauth-xx/oauth2/compare/v1.4.7...v1.4.8
|
196
|
-
[
|
201
|
+
[1.4.9]: https://github.com/oauth-xx/oauth2/compare/v1.4.8...v1.4.9
|
202
|
+
[1.4.10]: https://github.com/oauth-xx/oauth2/compare/v1.4.9...v1.4.10
|
203
|
+
[unreleased]: https://github.com/oauth-xx/oauth2/compare/v1.4.10...HEAD
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
## Submitting a Pull Request
|
2
|
+
1. [Fork the repository.][fork]
|
3
|
+
2. [Create a topic branch.][branch]
|
4
|
+
3. Add specs for your unimplemented feature or bug fix.
|
5
|
+
4. Run `bundle exec rake spec`. If your specs pass, return to step 3.
|
6
|
+
5. Implement your feature or bug fix.
|
7
|
+
6. Run `bundle exec rake`. If your specs fail, return to step 5.
|
8
|
+
7. Run `open coverage/index.html`. If your changes are not completely covered
|
9
|
+
by your tests, return to step 3.
|
10
|
+
8. Add documentation for your feature or bug fix.
|
11
|
+
9. Run `bundle exec rake verify_measurements`. If your changes are not 100%
|
12
|
+
documented, go back to step 8.
|
13
|
+
10. Commit and push your changes.
|
14
|
+
11. [Submit a pull request.][pr]
|
15
|
+
|
16
|
+
[fork]: http://help.github.com/fork-a-repo/
|
17
|
+
[branch]: http://learn.github.com/p/branching.html
|
18
|
+
[pr]: http://help.github.com/send-pull-requests/
|
data/README.md
CHANGED
@@ -15,38 +15,40 @@ OAuth 2.0 focuses on client developer simplicity while providing specific author
|
|
15
15
|
This is a RubyGem for implementing OAuth 2.0 clients and servers in Ruby applications.
|
16
16
|
See the sibling `oauth` gem for OAuth 1.0 implementations in Ruby.
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
⚠️⚠️⚠️ **_WARNING_**: You are viewing the `README` of the
|
19
|
+
[supported-only-for-critical-enterprise-security-issues](#oauth2-for-enterprise) `1-4-stable`
|
20
|
+
branch. Please do not use this, and instead upgrade to version 2! ⚠️⚠️⚠️
|
21
|
+
|
22
|
+
No further releases of 1.x series are planned! [Version 2](https://github.com/oauth-xx/oauth2#what-is-new-for-v20) has *tons* of improvements!
|
23
|
+
|
24
|
+
If you must continue using 1.4.x please consider purchasing an open source security maintenance contract from [Tidelift][tidelift-ref].
|
20
25
|
|
21
26
|
---
|
22
27
|
|
23
28
|
* [OAuth 2.0 Spec][oauth2-spec]
|
24
29
|
* [OAuth 1.0 sibling gem][sibling-gem]
|
25
|
-
* Help us finish release [![2.0.0 release milestone][next-milestone-pct-img]][next-milestone-pct] by submitting or reviewing PRs and issues.
|
26
|
-
* Oauth2 gem is _always_ looking for additional maintainers. See [#307][maintainers-discussion].
|
27
30
|
|
28
31
|
[oauth2-spec]: https://oauth.net/2/
|
29
32
|
[sibling-gem]: https://github.com/oauth-xx/oauth-ruby
|
30
|
-
[next-milestone-pct]: https://github.com/oauth-xx/oauth2/milestone/1
|
31
|
-
[next-milestone-pct-img]: https://img.shields.io/github/milestones/progress-percent/oauth-xx/oauth2/1
|
32
|
-
[maintainers-discussion]: https://github.com/oauth-xx/oauth2/issues/307
|
33
33
|
|
34
34
|
## Release Documentation
|
35
35
|
|
36
36
|
<details>
|
37
37
|
<summary>1.4.x Readmes</summary>
|
38
38
|
|
39
|
-
| Version | Release Date | Readme
|
40
|
-
|
41
|
-
| 1.4.
|
42
|
-
| 1.4.
|
43
|
-
| 1.4.
|
44
|
-
| 1.4.
|
45
|
-
| 1.4.
|
46
|
-
| 1.4.
|
47
|
-
| 1.4.
|
48
|
-
| 1.4.
|
49
|
-
| 1.4.
|
39
|
+
| Version | Release Date | Readme |
|
40
|
+
|---------|--------------|-----------------------------------------------------------|
|
41
|
+
| 1.4.10 | Jul 1, 2022 | https://github.com/oauth-xx/oauth2/blob/v1.4.10/README.md |
|
42
|
+
| 1.4.9 | Feb 20, 2022 | https://github.com/oauth-xx/oauth2/blob/v1.4.9/README.md |
|
43
|
+
| 1.4.8 | Feb 18, 2022 | https://github.com/oauth-xx/oauth2/blob/v1.4.8/README.md |
|
44
|
+
| 1.4.7 | Mar 19, 2021 | https://github.com/oauth-xx/oauth2/blob/v1.4.7/README.md |
|
45
|
+
| 1.4.6 | Mar 19, 2021 | https://github.com/oauth-xx/oauth2/blob/v1.4.6/README.md |
|
46
|
+
| 1.4.5 | Mar 18, 2021 | https://github.com/oauth-xx/oauth2/blob/v1.4.5/README.md |
|
47
|
+
| 1.4.4 | Feb 12, 2020 | https://github.com/oauth-xx/oauth2/blob/v1.4.4/README.md |
|
48
|
+
| 1.4.3 | Jan 29, 2020 | https://github.com/oauth-xx/oauth2/blob/v1.4.3/README.md |
|
49
|
+
| 1.4.2 | Oct 1, 2019 | https://github.com/oauth-xx/oauth2/blob/v1.4.2/README.md |
|
50
|
+
| 1.4.1 | Oct 13, 2018 | https://github.com/oauth-xx/oauth2/blob/v1.4.1/README.md |
|
51
|
+
| 1.4.0 | Jun 9, 2017 | https://github.com/oauth-xx/oauth2/blob/v1.4.0/README.md |
|
50
52
|
</details>
|
51
53
|
|
52
54
|
<details>
|
@@ -93,15 +95,15 @@ badge #s:
|
|
93
95
|
📗
|
94
96
|
-->
|
95
97
|
|
96
|
-
| | Project | oauth2
|
97
|
-
|
98
|
-
| 1️⃣ | name, license, docs | [![RubyGems.org][⛳️name-img]][⛳️gem] [![License: MIT][🖇src-license-img]][🖇src-license] [![FOSSA][🏘fossa-img]][🏘fossa] [![RubyDoc.info][🚎yard-img]][🚎yard] [![InchCI][🖐inch-ci-img]][🚎yard]
|
99
|
-
| 2️⃣ | version & activity | [![Gem Version][⛳️version-img]][⛳️gem] [![Total Downloads][🖇DL-total-img]][⛳️gem] [![Download Rank][🏘DL-rank-img]][⛳️gem] [![Source Code][🚎src-home-img]][🚎src-home] [![Open PRs][🖐prs-
|
100
|
-
| 3️⃣ | maintanence & linting | [![Maintainability][⛳cclim-maint-img]][⛳cclim-maint] [![Helpers][🖇triage-help-img]][🖇triage-help] [![Depfu][🏘depfu-img]][🏘depfu] [![Contributors][🚎contributors-img]][🚎contributors] [![Style][🖐style-wf-img]][🖐style-wf] [![Kloc Roll][🧮kloc-img]][🧮kloc]
|
101
|
-
| 4️⃣ | testing | [![
|
102
|
-
| 5️⃣ | coverage & security | [![CodeClimate][⛳cclim-cov-img]][⛳cclim-cov] [![CodeCov][🖇codecov-img]][🖇codecov] [![Coveralls][🏘coveralls-img]][🏘coveralls] [![Security Policy][🚎sec-pol-img]][🚎sec-pol] [![CodeQL][🖐codeQL-img]][🖐codeQL]
|
103
|
-
| 6️⃣ | resources | [![Discussion][⛳gh-discussions-img]][⛳gh-discussions] [![Get help on Codementor][🖇codementor-img]][🖇codementor] [![Chat][🏘chat-img]][🏘chat] [![Blog][🚎blog-img]][🚎blog] [![Blog][🖐wiki-img]][🖐wiki]
|
104
|
-
| 7️⃣ | spread 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Tweet @ Peter][🏘tweet-img]][🏘tweet] [🌏][aboutme] [👼][angelme] [💻][coderme] [🌹][politicme]
|
98
|
+
| | Project | oauth2 |
|
99
|
+
|:----|-----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
100
|
+
| 1️⃣ | name, license, docs | [![RubyGems.org][⛳️name-img]][⛳️gem] [![License: MIT][🖇src-license-img]][🖇src-license] [![FOSSA][🏘fossa-img]][🏘fossa] [![RubyDoc.info][🚎yard-img]][🚎yard] [![InchCI][🖐inch-ci-img]][🚎yard] |
|
101
|
+
| 2️⃣ | version & activity | [![Gem Version][⛳️version-img]][⛳️gem] [![Total Downloads][🖇DL-total-img]][⛳️gem] [![Download Rank][🏘DL-rank-img]][⛳️gem] [![Source Code][🚎src-home-img]][🚎src-home] [![Open PRs][🖐prs-o-img]][🖐prs-o] [![Closed PRs][🧮prs-c-img]][🧮prs-c] [![Next Version][📗next-img]][📗next] |
|
102
|
+
| 3️⃣ | maintanence & linting | [![Maintainability][⛳cclim-maint-img]][⛳cclim-maint] [![Helpers][🖇triage-help-img]][🖇triage-help] [![Depfu][🏘depfu-img]][🏘depfu] [![Contributors][🚎contributors-img]][🚎contributors] [![Style][🖐style-wf-img]][🖐style-wf] [![Kloc Roll][🧮kloc-img]][🧮kloc] |
|
103
|
+
| 4️⃣ | testing | [![Open Issues][⛳iss-o-img]][⛳iss-o] [![Closed Issues][🖇iss-c-img]][🖇iss-c] [![Supported][🏘sup-wf-img]][🏘sup-wf] [![Heads][🚎heads-wf-img]][🚎heads-wf] [![Unofficial Support][🖐uns-wf-img]][🖐uns-wf] [![MacOS][🧮mac-wf-img]][🧮mac-wf] [![Windows][📗win-wf-img]][📗win-wf] |
|
104
|
+
| 5️⃣ | coverage & security | [![CodeClimate][⛳cclim-cov-img]][⛳cclim-cov] [![CodeCov][🖇codecov-img]][🖇codecov] [![Coveralls][🏘coveralls-img]][🏘coveralls] [![Security Policy][🚎sec-pol-img]][🚎sec-pol] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Code Coverage][🧮cov-wf-img]][🧮cov-wf] |
|
105
|
+
| 6️⃣ | resources | [![Discussion][⛳gh-discussions-img]][⛳gh-discussions] [![Get help on Codementor][🖇codementor-img]][🖇codementor] [![Chat][🏘chat-img]][🏘chat] [![Blog][🚎blog-img]][🚎blog] [![Blog][🖐wiki-img]][🖐wiki] |
|
106
|
+
| 7️⃣ | spread 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Tweet @ Peter][🏘tweet-img]][🏘tweet] [🌏][aboutme] [👼][angelme] [💻][coderme] [🌹][politicme] |
|
105
107
|
|
106
108
|
<!--
|
107
109
|
The link tokens in the following sections should be kept ordered by the row and badge numbering scheme
|
@@ -124,12 +126,14 @@ The link tokens in the following sections should be kept ordered by the row and
|
|
124
126
|
[🏘DL-rank-img]: https://img.shields.io/gem/rt/oauth2.svg
|
125
127
|
[🚎src-home]: https://github.com/oauth-xx/oauth2
|
126
128
|
[🚎src-home-img]: https://img.shields.io/badge/source-github-brightgreen.svg?style=flat
|
127
|
-
[🖐prs-
|
128
|
-
[🖐prs-
|
129
|
-
[🧮prs-
|
130
|
-
[🧮prs-
|
131
|
-
|
132
|
-
|
129
|
+
[🖐prs-o]: https://github.com/oauth-xx/oauth2/pulls
|
130
|
+
[🖐prs-o-img]: https://img.shields.io/github/issues-pr/oauth-xx/oauth2
|
131
|
+
[🧮prs-c]: https://github.com/oauth-xx/oauth2/pulls?q=is%3Apr+is%3Aclosed
|
132
|
+
[🧮prs-c-img]: https://img.shields.io/github/issues-pr-closed/oauth-xx/oauth2
|
133
|
+
[📗next]: https://github.com/oauth-xx/oauth2/milestone/1
|
134
|
+
[📗next-img]: https://img.shields.io/github/milestones/progress/oauth-xx/oauth2/1?label=Next%20Version
|
135
|
+
|
136
|
+
<!-- 3️⃣ maintenance & linting -->
|
133
137
|
[⛳cclim-maint]: https://codeclimate.com/github/oauth-xx/oauth2/maintainability
|
134
138
|
[⛳cclim-maint-img]: https://api.codeclimate.com/v1/badges/688c612528ff90a46955/maintainability
|
135
139
|
[🖇triage-help]: https://www.codetriage.com/oauth-xx/oauth2
|
@@ -144,16 +148,20 @@ The link tokens in the following sections should be kept ordered by the row and
|
|
144
148
|
[🧮kloc-img]: https://img.shields.io/tokei/lines/github.com/oauth-xx/oauth2
|
145
149
|
|
146
150
|
<!-- 4️⃣ testing -->
|
147
|
-
[
|
148
|
-
[
|
149
|
-
[🖇
|
150
|
-
[🖇
|
151
|
-
[🏘
|
152
|
-
[🏘
|
153
|
-
[🚎
|
154
|
-
[🚎
|
155
|
-
[🖐
|
156
|
-
[🖐
|
151
|
+
[⛳iss-o]: https://github.com/oauth-xx/oauth2/issues
|
152
|
+
[⛳iss-o-img]: https://img.shields.io/github/issues-raw/oauth-xx/oauth2
|
153
|
+
[🖇iss-c]: https://github.com/oauth-xx/oauth2/issues?q=is%3Aissue+is%3Aclosed
|
154
|
+
[🖇iss-c-img]: https://img.shields.io/github/issues-closed-raw/oauth-xx/oauth2
|
155
|
+
[🏘sup-wf]: https://github.com/oauth-xx/oauth2/actions/workflows/supported.yml
|
156
|
+
[🏘sup-wf-img]: https://github.com/oauth-xx/oauth2/actions/workflows/supported.yml/badge.svg
|
157
|
+
[🚎heads-wf]: https://github.com/oauth-xx/oauth2/actions/workflows/heads.yml
|
158
|
+
[🚎heads-wf-img]: https://github.com/oauth-xx/oauth2/actions/workflows/heads.yml/badge.svg
|
159
|
+
[🖐uns-wf]: https://github.com/oauth-xx/oauth2/actions/workflows/unsupported.yml
|
160
|
+
[🖐uns-wf-img]: https://github.com/oauth-xx/oauth2/actions/workflows/unsupported.yml/badge.svg
|
161
|
+
[🧮mac-wf]: https://github.com/oauth-xx/oauth2/actions/workflows/macos.yml
|
162
|
+
[🧮mac-wf-img]: https://github.com/oauth-xx/oauth2/actions/workflows/macos.yml/badge.svg
|
163
|
+
[📗win-wf]: https://github.com/oauth-xx/oauth2/actions/workflows/windows.yml
|
164
|
+
[📗win-wf-img]: https://github.com/oauth-xx/oauth2/actions/workflows/windows.yml/badge.svg
|
157
165
|
|
158
166
|
<!-- 5️⃣ coverage & security -->
|
159
167
|
[⛳cclim-cov]: https://codeclimate.com/github/oauth-xx/oauth2/test_coverage
|
@@ -166,6 +174,8 @@ The link tokens in the following sections should be kept ordered by the row and
|
|
166
174
|
[🚎sec-pol-img]: https://img.shields.io/badge/security-policy-brightgreen.svg?style=flat
|
167
175
|
[🖐codeQL]: https://github.com/oauth-xx/oauth2/security/code-scanning
|
168
176
|
[🖐codeQL-img]: https://github.com/oauth-xx/oauth2/actions/workflows/codeql-analysis.yml/badge.svg
|
177
|
+
[🧮cov-wf]: https://github.com/oauth-xx/oauth2/actions/workflows/coverage.yml
|
178
|
+
[🧮cov-wf-img]: https://github.com/oauth-xx/oauth2/actions/workflows/coverage.yml/badge.svg
|
169
179
|
|
170
180
|
<!-- 6️⃣ resources -->
|
171
181
|
[⛳gh-discussions]: https://github.com/oauth-xx/oauth2/discussions
|
@@ -212,12 +222,27 @@ And then execute in a shell:
|
|
212
222
|
bundle
|
213
223
|
```
|
214
224
|
|
225
|
+
## OAuth2 for Enterprise
|
226
|
+
|
227
|
+
Available as part of the Tidelift Subscription.
|
228
|
+
|
229
|
+
The maintainers of OAuth2 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. [Learn more.][tidelift-ref]
|
230
|
+
|
231
|
+
[tidelift-ref]: https://tidelift.com/subscription/pkg/rubygems-oauth2?utm_source=rubygems-oauth2&utm_medium=referral&utm_campaign=enterprise
|
232
|
+
|
233
|
+
## Security contact information
|
234
|
+
|
235
|
+
To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security).
|
236
|
+
Tidelift will coordinate the fix and disclosure.
|
237
|
+
|
238
|
+
For more see [SECURITY.md][🚎sec-pol].
|
215
239
|
|
216
240
|
## Compatibility
|
217
241
|
|
218
|
-
Targeted ruby compatibility is
|
219
|
-
|
220
|
-
|
242
|
+
Targeted ruby compatibility is 2.7, 3.0 and 3.1. Compatibility is further distinguished by
|
243
|
+
supported and unsupported versions of Ruby.
|
244
|
+
This gem will work with Ruby versions back to 1.9, though it remains unsupported.
|
245
|
+
Ruby is limited to 1.9+ in the gemspec for the 1.4.x series and is be 2.2+ for next major version releases (see `master` branch).
|
221
246
|
|
222
247
|
<details>
|
223
248
|
<summary>Ruby Engine Compatibility Policy</summary>
|
@@ -247,13 +272,13 @@ fashion. If critical issues for a particular implementation exist at the time
|
|
247
272
|
of a major release, support for that Ruby version may be dropped.
|
248
273
|
</details>
|
249
274
|
|
250
|
-
| | Ruby
|
251
|
-
|
252
|
-
| 1️⃣ | 2.0.x
|
253
|
-
| 2️⃣ | 1.4.x
|
254
|
-
| 3️⃣ | older
|
275
|
+
| | Ruby OAuth2 Version | Maintenance Branch | Supported Officially | Supported Unofficially | Supported Incidentally |
|
276
|
+
|:----|---------------------|--------------------|-------------------------|------------------------|------------------------|
|
277
|
+
| 1️⃣ | 2.0.x | `master` | 2.7, 3.0, 3.1 | 2.5, 2.6 | 2.2, 2.3, 2.4 |
|
278
|
+
| 2️⃣ | 1.4.x | `1-4-stable` | 2.5, 2.6, 2.7, 3.0, 3.1 | 2.1, 2.2, 2.3, 2.4 | 1.9, 2.0 |
|
279
|
+
| 3️⃣ | older | N/A | Best of luck to you! | Please upgrade! | |
|
255
280
|
|
256
|
-
NOTE:
|
281
|
+
NOTE: The 1.4 series will only receive critical security updates.
|
257
282
|
See [SECURITY.md][🚎sec-pol]
|
258
283
|
|
259
284
|
## Usage Examples
|
data/SECURITY.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Security Policy
|
2
|
+
|
3
|
+
## Supported Versions
|
4
|
+
|
5
|
+
| Version | Supported |
|
6
|
+
|----------|------------------------------------|
|
7
|
+
| 2.latest | ✅ |
|
8
|
+
| 1.latest | ✅ (critical security updates only) |
|
9
|
+
| older | ⛔️ |
|
10
|
+
|
11
|
+
## Reporting a Vulnerability
|
12
|
+
|
13
|
+
To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security).
|
14
|
+
Tidelift will coordinate the fix and disclosure.
|
15
|
+
|
16
|
+
## OAuth2 for Enterprise
|
17
|
+
|
18
|
+
Available as part of the Tidelift Subscription.
|
19
|
+
|
20
|
+
The maintainers of oauth2 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. [Learn more.](https://tidelift.com/subscription/pkg/rubygems-oauth2?utm_source=rubygems-oauth2&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
|
data/lib/oauth2/client.rb
CHANGED
@@ -100,7 +100,7 @@ module OAuth2
|
|
100
100
|
# code response for this request. Will default to client option
|
101
101
|
# @option opts [Symbol] :parse @see Response::initialize
|
102
102
|
# @yield [req] The Faraday request
|
103
|
-
def request(verb, url, opts = {}) # rubocop:disable Metrics/
|
103
|
+
def request(verb, url, opts = {}) # rubocop:disable Metrics/AbcSize
|
104
104
|
url = connection.build_url(url).to_s
|
105
105
|
|
106
106
|
begin
|
@@ -185,7 +185,7 @@ module OAuth2
|
|
185
185
|
response_contains_token = access_token || (
|
186
186
|
response.parsed.is_a?(Hash) &&
|
187
187
|
(response.parsed['access_token'] || response.parsed['id_token'])
|
188
|
-
|
188
|
+
)
|
189
189
|
|
190
190
|
if options[:raise_errors] && !response_contains_token
|
191
191
|
error = Error.new(response)
|
data/lib/oauth2/mac_token.rb
CHANGED
@@ -62,7 +62,7 @@ module OAuth2
|
|
62
62
|
# @param [String] url the HTTP URL path of the request
|
63
63
|
def header(verb, url)
|
64
64
|
timestamp = Time.now.utc.to_i
|
65
|
-
nonce = Digest::
|
65
|
+
nonce = Digest::SHA256.hexdigest([timestamp, SecureRandom.hex].join(':'))
|
66
66
|
|
67
67
|
uri = URI.parse(url)
|
68
68
|
|
data/lib/oauth2/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oauth2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
8
|
-
- Michael Bleigh
|
9
8
|
- Erik Michaels-Ober
|
10
|
-
|
9
|
+
- Michael Bleigh
|
10
|
+
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-07-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
@@ -132,14 +132,14 @@ dependencies:
|
|
132
132
|
name: rake
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
134
134
|
requirements:
|
135
|
-
- - "
|
135
|
+
- - ">="
|
136
136
|
- !ruby/object:Gem::Version
|
137
137
|
version: '12.3'
|
138
138
|
type: :development
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- - "
|
142
|
+
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '12.3'
|
145
145
|
- !ruby/object:Gem::Dependency
|
@@ -212,6 +212,26 @@ dependencies:
|
|
212
212
|
- - ">="
|
213
213
|
- !ruby/object:Gem::Version
|
214
214
|
version: '0'
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: rubocop-lts
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 2.0.3
|
222
|
+
- - "~>"
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
version: '2.0'
|
225
|
+
type: :development
|
226
|
+
prerelease: false
|
227
|
+
version_requirements: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - ">="
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: 2.0.3
|
232
|
+
- - "~>"
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: '2.0'
|
215
235
|
- !ruby/object:Gem::Dependency
|
216
236
|
name: silent_stream
|
217
237
|
requirement: !ruby/object:Gem::Requirement
|
@@ -236,8 +256,10 @@ extra_rdoc_files: []
|
|
236
256
|
files:
|
237
257
|
- CHANGELOG.md
|
238
258
|
- CODE_OF_CONDUCT.md
|
259
|
+
- CONTRIBUTING.md
|
239
260
|
- LICENSE
|
240
261
|
- README.md
|
262
|
+
- SECURITY.md
|
241
263
|
- lib/oauth2.rb
|
242
264
|
- lib/oauth2/access_token.rb
|
243
265
|
- lib/oauth2/authenticator.rb
|
@@ -252,33 +274,31 @@ files:
|
|
252
274
|
- lib/oauth2/strategy/implicit.rb
|
253
275
|
- lib/oauth2/strategy/password.rb
|
254
276
|
- lib/oauth2/version.rb
|
255
|
-
- spec/fixtures/README.md
|
256
|
-
- spec/fixtures/RS256/jwtRS256.key
|
257
|
-
- spec/fixtures/RS256/jwtRS256.key.pub
|
258
|
-
- spec/helper.rb
|
259
|
-
- spec/oauth2/access_token_spec.rb
|
260
|
-
- spec/oauth2/authenticator_spec.rb
|
261
|
-
- spec/oauth2/client_spec.rb
|
262
|
-
- spec/oauth2/mac_token_spec.rb
|
263
|
-
- spec/oauth2/response_spec.rb
|
264
|
-
- spec/oauth2/strategy/assertion_spec.rb
|
265
|
-
- spec/oauth2/strategy/auth_code_spec.rb
|
266
|
-
- spec/oauth2/strategy/base_spec.rb
|
267
|
-
- spec/oauth2/strategy/client_credentials_spec.rb
|
268
|
-
- spec/oauth2/strategy/implicit_spec.rb
|
269
|
-
- spec/oauth2/strategy/password_spec.rb
|
270
|
-
- spec/oauth2/version_spec.rb
|
271
277
|
homepage: https://github.com/oauth-xx/oauth2
|
272
278
|
licenses:
|
273
279
|
- MIT
|
274
280
|
metadata:
|
275
281
|
bug_tracker_uri: https://github.com/oauth-xx/oauth2/issues
|
276
|
-
changelog_uri: https://github.com/oauth-xx/oauth2/blob/v1.4.
|
277
|
-
documentation_uri: https://www.rubydoc.info/gems/oauth2/1.4.
|
278
|
-
source_code_uri: https://github.com/oauth-xx/oauth2/tree/v1.4.
|
282
|
+
changelog_uri: https://github.com/oauth-xx/oauth2/blob/v1.4.10/CHANGELOG.md
|
283
|
+
documentation_uri: https://www.rubydoc.info/gems/oauth2/1.4.10
|
284
|
+
source_code_uri: https://github.com/oauth-xx/oauth2/tree/v1.4.10
|
279
285
|
wiki_uri: https://github.com/oauth-xx/oauth2/wiki
|
286
|
+
funding_uri: https://github.com/sponsors/pboling
|
280
287
|
rubygems_mfa_required: 'true'
|
281
|
-
post_install_message:
|
288
|
+
post_install_message: |2+
|
289
|
+
|
290
|
+
You have installed oauth2 version 1.4.10, which is EOL.
|
291
|
+
No further support is anticipated for the 1.4.x series.
|
292
|
+
|
293
|
+
OAuth2 version 2 is released.
|
294
|
+
There are BREAKING changes, but most will not encounter them, and upgrading should be easy!
|
295
|
+
|
296
|
+
Please see:
|
297
|
+
• https://github.com/oauth-xx/oauth2#what-is-new-for-v20
|
298
|
+
• https://github.com/oauth-xx/oauth2/blob/master/CHANGELOG.md
|
299
|
+
|
300
|
+
Please upgrade, report issues, and support the project! Thanks, |7eter l-|. l3oling
|
301
|
+
|
282
302
|
rdoc_options: []
|
283
303
|
require_paths:
|
284
304
|
- lib
|
@@ -291,26 +311,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
291
311
|
requirements:
|
292
312
|
- - ">="
|
293
313
|
- !ruby/object:Gem::Version
|
294
|
-
version:
|
314
|
+
version: '0'
|
295
315
|
requirements: []
|
296
|
-
rubygems_version: 3.3.
|
297
|
-
signing_key:
|
316
|
+
rubygems_version: 3.3.16
|
317
|
+
signing_key:
|
298
318
|
specification_version: 4
|
299
319
|
summary: A Ruby wrapper for the OAuth 2.0 protocol.
|
300
|
-
test_files:
|
301
|
-
- spec/fixtures/README.md
|
302
|
-
- spec/fixtures/RS256/jwtRS256.key
|
303
|
-
- spec/fixtures/RS256/jwtRS256.key.pub
|
304
|
-
- spec/helper.rb
|
305
|
-
- spec/oauth2/access_token_spec.rb
|
306
|
-
- spec/oauth2/authenticator_spec.rb
|
307
|
-
- spec/oauth2/client_spec.rb
|
308
|
-
- spec/oauth2/mac_token_spec.rb
|
309
|
-
- spec/oauth2/response_spec.rb
|
310
|
-
- spec/oauth2/strategy/assertion_spec.rb
|
311
|
-
- spec/oauth2/strategy/auth_code_spec.rb
|
312
|
-
- spec/oauth2/strategy/base_spec.rb
|
313
|
-
- spec/oauth2/strategy/client_credentials_spec.rb
|
314
|
-
- spec/oauth2/strategy/implicit_spec.rb
|
315
|
-
- spec/oauth2/strategy/password_spec.rb
|
316
|
-
- spec/oauth2/version_spec.rb
|
320
|
+
test_files: []
|
data/spec/fixtures/README.md
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
# RS256
|
2
|
-
|
3
|
-
## How keys were made
|
4
|
-
|
5
|
-
```shell
|
6
|
-
# No passphrase
|
7
|
-
# Generates the public and private keys:
|
8
|
-
ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key
|
9
|
-
# Converts the key to PEM format
|
10
|
-
openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub
|
11
|
-
```
|
@@ -1,51 +0,0 @@
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
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
-
+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
-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
-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
-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
-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
-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
-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
-
cmyjDyBgKVuQmt5E1ycFeteOVdPD/CG/fPYhthvc4UytEFwsMdNy3iD6/wuUH68t
|
11
|
-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
-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
-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
-
C72Aeh452gCgiUeZrf4t4jdCFHhrBg8q9dHaEiTTHocwVPPZ6zd4hH8sCrpnVYth
|
15
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
F1xN+gxnWGPUKDVRPYBpVzDR036w65ODgg2FROK2vIxlStiAC/rc0JLsvaWfb1Rn
|
29
|
-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
-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
-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
-
q9bX95YFqZ7yFE3aBCR6CENo2tXpMN96CLQGpwa0bwt3xNzC4MhZMXbGR3DdBYbD
|
33
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
51
|
-
-----END RSA PRIVATE KEY-----
|
@@ -1,14 +0,0 @@
|
|
1
|
-
-----BEGIN PUBLIC KEY-----
|
2
|
-
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5hdXV/4YSymY1T9VNvK2
|
3
|
-
bWRfulwIty1RnAPNINQmfh3aRRkV+PNrbC2Crji9G0AHmQwgW1bZ3kgkkpIm6RVn
|
4
|
-
44fHvBvuXkZ9ABgXw0d2cLIHmwOFxSKmWAm/EW//GszUTLLLsMZUe2udtFJW0jxX
|
5
|
-
B2GRY0WVYuo6Oo58RCeP719lw3Ags0YF9/IobxKkGd4BautUPw6ZszAa3o+j0zR7
|
6
|
-
4x7ouPxybZAOuPsMxqanyeYJeH4osJjLMYV9qem9uG2sj7GENJ8UszcpmGbqxBhe
|
7
|
-
xPEB7mgDeONIF0XJF23zdOf8ANE5mAU2h2v7M6moAfkdUzJ+j48+VT2omHAzAL5y
|
8
|
-
Ncmrl2xiWdyoxOw1Y1UmfEmJYV5VgGYyZ12JZRKY+szPT+vR+MDuYxbquF40O7kv
|
9
|
-
kFNBfL1yCpzfSQCLnEs4rX8qRzZXciLeyq4Ht5FLuRFgxjA//XI8LAmp0u7gk+Q7
|
10
|
-
FUH1UgW3kmJDTG0XaxQxYTBSIO7mcmyjDyBgKVuQmt5E1ycFeteOVdPD/CG/fPYh
|
11
|
-
thvc4UytEFwsMdNy3iD6/wuUH68tAKam28UZaOb0qK+00cQQD8fulY9rKtSL10Lv
|
12
|
-
JFWUOa/SJyLvk9vUmfvFn182il1nX6GpyxyMmE/FCnH4CT/DjrSZf08mOO8eL5of
|
13
|
-
YHMK/oiXr1eODqx+pOwClNsCAwEAAQ==
|
14
|
-
-----END PUBLIC KEY-----
|
data/spec/helper.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
DEBUG = ENV['DEBUG'] == 'true'
|
4
|
-
RUN_COVERAGE = ENV['CI_CODECOV'] || ENV['CI'].nil?
|
5
|
-
|
6
|
-
ruby_version = Gem::Version.new(RUBY_VERSION)
|
7
|
-
minimum_version = ->(version) { ruby_version >= Gem::Version.new(version) && RUBY_ENGINE == 'ruby' }
|
8
|
-
coverage = minimum_version.call('2.7') && RUN_COVERAGE
|
9
|
-
debug = minimum_version.call('2.5') && DEBUG
|
10
|
-
|
11
|
-
require 'simplecov' if coverage
|
12
|
-
require 'byebug' if debug
|
13
|
-
|
14
|
-
require 'oauth2'
|
15
|
-
require 'addressable/uri'
|
16
|
-
require 'rspec'
|
17
|
-
require 'rspec/stubbed_env'
|
18
|
-
require 'rspec/pending_for'
|
19
|
-
require 'silent_stream'
|
20
|
-
|
21
|
-
RSpec.configure do |config|
|
22
|
-
config.expect_with :rspec do |c|
|
23
|
-
c.syntax = :expect
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
Faraday.default_adapter = :test
|
28
|
-
|
29
|
-
RSpec.configure do |conf|
|
30
|
-
conf.include SilentStream
|
31
|
-
end
|
32
|
-
|
33
|
-
VERBS = [:get, :post, :put, :delete].freeze
|