oauth 0.5.13 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -3
- data/CONTRIBUTING.md +1 -1
- data/LICENSE +2 -1
- data/README.md +66 -53
- data/SECURITY.md +9 -6
- data/bin/oauth +8 -4
- data/lib/oauth/cli/authorize_command.rb +58 -54
- data/lib/oauth/cli/base_command.rb +163 -159
- data/lib/oauth/cli/help_command.rb +9 -5
- data/lib/oauth/cli/query_command.rb +26 -17
- data/lib/oauth/cli/sign_command.rb +56 -52
- data/lib/oauth/cli/version_command.rb +8 -4
- data/lib/oauth/cli.rb +2 -0
- data/lib/oauth/client/action_controller_request.rb +4 -1
- data/lib/oauth/client/em_http.rb +4 -4
- data/lib/oauth/client/helper.rb +76 -72
- data/lib/oauth/client/net_http.rb +111 -104
- data/lib/oauth/client.rb +2 -0
- data/lib/oauth/consumer.rb +38 -28
- data/lib/oauth/errors/error.rb +2 -0
- data/lib/oauth/errors/problem.rb +3 -0
- data/lib/oauth/errors/unauthorized.rb +4 -0
- data/lib/oauth/errors.rb +2 -0
- data/lib/oauth/helper.rb +9 -5
- data/lib/oauth/oauth.rb +4 -2
- data/lib/oauth/oauth_test_helper.rb +2 -0
- data/lib/oauth/request_proxy/action_controller_request.rb +3 -24
- data/lib/oauth/request_proxy/base.rb +3 -3
- data/lib/oauth/request_proxy/mock_request.rb +1 -1
- data/lib/oauth/request_proxy/net_http.rb +5 -7
- data/lib/oauth/request_proxy/rest_client_request.rb +4 -3
- data/lib/oauth/request_proxy.rb +4 -1
- data/lib/oauth/server.rb +8 -4
- data/lib/oauth/signature/base.rb +71 -65
- data/lib/oauth/signature/hmac/sha1.rb +15 -9
- data/lib/oauth/signature/hmac/sha256.rb +15 -9
- data/lib/oauth/signature/plaintext.rb +18 -20
- data/lib/oauth/signature/rsa/sha1.rb +46 -38
- data/lib/oauth/signature.rb +3 -0
- data/lib/oauth/token.rb +2 -0
- data/lib/oauth/tokens/access_token.rb +2 -0
- data/lib/oauth/tokens/consumer_token.rb +2 -0
- data/lib/oauth/tokens/request_token.rb +5 -2
- data/lib/oauth/tokens/server_token.rb +2 -0
- data/lib/oauth/tokens/token.rb +2 -0
- data/lib/oauth/version.rb +5 -1
- data/lib/oauth.rb +8 -2
- metadata +32 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a742c9fad7615c19f25dc2b780f8811029314827b05f91bf803b2a4b92805e10
|
4
|
+
data.tar.gz: dda3f9afdca321d3613bc6344d71a4cfffa43e19c380f3d86325aeaed09cc388
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4abeba00e6da594572d2e74c974ac8658c947aa43fd9ea06f6e600df9a0b7b73d31bd8051cddab35749b8ed37346482c00653f29b9882d3b88a10d0716108403
|
7
|
+
data.tar.gz: cdd3b2015294fef30bd722804486c50dc1b19f566b6ae5ddc65e4ceb83e284439ff7059d9a6d5c098bb945122663223b0e383a3732f298b46a5bef1946aa9a39
|
data/CHANGELOG.md
CHANGED
@@ -13,6 +13,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
13
13
|
|
14
14
|
### Removed
|
15
15
|
|
16
|
+
## [1.0.0] 2022-08-23
|
17
|
+
### Changed
|
18
|
+
* Dropped support for Ruby < 2.7
|
19
|
+
|
20
|
+
### Added
|
21
|
+
* New EOL Policy
|
22
|
+
* Non-commercial support for the oldest version of Ruby (which itself is going EOL) will be dropped each year in April
|
23
|
+
|
24
|
+
## [0.6.1] 2022-08-23
|
25
|
+
### Changed
|
26
|
+
* Fixed documentation in SECURITY.md
|
27
|
+
* Change references to master => main
|
28
|
+
|
29
|
+
### Added
|
30
|
+
* Post install note about v0.6.x EOL approaching in April, 2024
|
31
|
+
|
32
|
+
## [0.6.0] 2022-08-23
|
33
|
+
### Added
|
34
|
+
* New option `body_hash_enabled` which defaults to true to maintain backward compatibility with prior releases. Setting to `false` disables generation of a `oauth_body_hash` component as part of the signature computation.
|
35
|
+
* Improved documentation of support policy via Tidelift
|
36
|
+
* Stop testing against active_support v2
|
37
|
+
|
38
|
+
### Changed
|
39
|
+
* Utilize version_gem extracted from oauth2 gem for VERSION
|
40
|
+
* Added new `OAuth::Version` namespace
|
41
|
+
* VERSION constant now at `OAuth::Version::VERSION`
|
42
|
+
|
43
|
+
### Removed
|
44
|
+
* Ruby 2.0, 2.1, 2.2, and 2.3 are no longer valid install targets
|
45
|
+
|
16
46
|
## [0.5.13] 2022-08-23
|
17
47
|
The "I think I caught 'em all!" Release
|
18
48
|
|
@@ -29,7 +59,7 @@ The "Typoes are just the worst!" Release
|
|
29
59
|
The "Is this the last release with a silly name?" Release
|
30
60
|
|
31
61
|
### Added
|
32
|
-
* Post install note about EOL approaching in April, 2023
|
62
|
+
* Post install note about v0.5.x EOL approaching in April, 2023
|
33
63
|
|
34
64
|
### Changed
|
35
65
|
* Improved documentation
|
@@ -311,7 +341,7 @@ The "Can it be the end of the line for 0.5.x?" Release
|
|
311
341
|
|
312
342
|
## [0.3.4] 2009-05-06
|
313
343
|
### Changed
|
314
|
-
* OAuth::Client::Helper uses OAuth::VERSION (chadisfaction)
|
344
|
+
* OAuth::Client::Helper uses OAuth::Version::VERSION (chadisfaction)
|
315
345
|
|
316
346
|
### Fixed
|
317
347
|
* Fix OAuth::RequestProxy::ActionControllerRequest's handling of params (Tristan Groléat)
|
@@ -409,7 +439,10 @@ but please have a look at the unit tests.
|
|
409
439
|
* Moved all non-Rails functionality from the Rails plugin:
|
410
440
|
http://code.google.com/p/oauth-plugin/
|
411
441
|
|
412
|
-
[Unreleased]: https://github.com/oauth-xx/oauth-ruby/compare/
|
442
|
+
[Unreleased]: https://github.com/oauth-xx/oauth-ruby/compare/v1.0.0...main
|
443
|
+
[1.0.0]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v1.0.0
|
444
|
+
[0.6.1]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v0.6.1
|
445
|
+
[0.6.0]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v0.6.0
|
413
446
|
[0.5.13]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v0.5.13
|
414
447
|
[0.5.12]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v0.5.12
|
415
448
|
[0.5.11]: https://github.com/oauth-xx/oauth-ruby/releases/tag/v0.5.11
|
data/CONTRIBUTING.md
CHANGED
@@ -17,7 +17,7 @@ Made with [contributors-img][contrib-rocks].
|
|
17
17
|
[comment]: <> (Following links are used by README, CONTRIBUTING, Homepage)
|
18
18
|
|
19
19
|
[conduct]: https://github.com/oauth-xx/oauth-ruby/blob/main/CODE_OF_CONDUCT.md
|
20
|
-
[contributing]: https://github.com/oauth-xx/oauth-ruby/blob/main/CONTRIBUTING.md
|
21
20
|
[contributors]: https://github.com/oauth-xx/oauth-ruby/graphs/contributors
|
22
21
|
[mailinglist]: http://groups.google.com/group/oauth-ruby
|
23
22
|
[source]: https://github.com/oauth-xx/oauth-ruby/
|
23
|
+
[contrib-rocks]: https://contrib.rocks
|
data/LICENSE
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2007-2012, 2016-2017
|
3
|
+
Copyright (c) 2007-2012, 2016-2017 Blaine Cook, Larry Halff, Pelle Braendgaard
|
4
|
+
Copyright (c) 2020-2022 Peter Boling
|
4
5
|
|
5
6
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
7
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -20,11 +20,17 @@ See the sibling `oauth2` gem for OAuth 2.0 implementations in Ruby.
|
|
20
20
|
[oauth1-spec]: http://oauth.net/core/1.0/
|
21
21
|
[sibling-gem]: https://github.com/oauth-xx/oauth-ruby
|
22
22
|
|
23
|
-
**
|
23
|
+
**New EOL Policy**
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
Versions 1.0.x will be EOL no later than April, 2025.
|
26
|
+
Versions 0.6.x will be EOL no later than April, 2024.
|
27
|
+
Versions 0.5.x will be EOL no later than April, 2023.
|
28
|
+
|
29
|
+
This will facilitate dropping support for old, dead, and crusty versions of Ruby.
|
30
|
+
|
31
|
+
Non-commercial support for the oldest version of Ruby (which itself is going EOL) will be dropped each year in April.
|
32
|
+
|
33
|
+
Please upgrade to version 1.0. The only breaking change in 1.0 is dropping old Rubies.
|
28
34
|
|
29
35
|
## Status
|
30
36
|
|
@@ -55,15 +61,15 @@ appended indicators:
|
|
55
61
|
♻️ - URL needs to be updated from SASS integration. Find / Replace is insufficient.
|
56
62
|
-->
|
57
63
|
|
58
|
-
| | Project | bundle add oauth
|
59
|
-
|
60
|
-
| 1️⃣ | name, license, docs | [![RubyGems.org][⛳️name-img]][⛳️gem] [![License: MIT][🖇src-license-img]][🖇src-license] [![
|
61
|
-
| 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] |
|
62
|
-
| 3️⃣ | maintenance & 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]
|
63
|
-
| 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] [![
|
64
|
-
| 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]
|
65
|
-
| 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]
|
66
|
-
| 7️⃣ | spread 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Tweet @ Peter][🏘tweet-img]][🏘tweet] [🌏][aboutme] [👼][angelme] [💻][coderme]
|
64
|
+
| | Project | bundle add oauth |
|
65
|
+
|:----|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
66
|
+
| 1️⃣ | name, license, docs | [![RubyGems.org][⛳️name-img]][⛳️gem] [![License: MIT][🖇src-license-img]][🖇src-license] [![RubyDoc.info][🚎yard-img]][🚎yard] |
|
67
|
+
| 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]--> |
|
68
|
+
| 3️⃣ | maintenance & 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] |
|
69
|
+
| 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] [![MacOS][🧮mac-wf-img]][🧮mac-wf] [![Windows][📗win-wf-img]][📗win-wf] |
|
70
|
+
| 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] |
|
71
|
+
| 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] |
|
72
|
+
| 7️⃣ | spread 💖 | [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Sponsor Me][🖇sponsor-img]][🖇sponsor] [![Tweet @ Peter][🏘tweet-img]][🏘tweet] [🌏][aboutme] [👼][angelme] [💻][coderme] |
|
67
73
|
|
68
74
|
<!--
|
69
75
|
The link tokens in the following sections should be kept ordered by the row and badge numbering scheme
|
@@ -74,11 +80,8 @@ The link tokens in the following sections should be kept ordered by the row and
|
|
74
80
|
[⛳️name-img]: https://img.shields.io/badge/name-oauth-brightgreen.svg?style=flat
|
75
81
|
[🖇src-license]: https://opensource.org/licenses/MIT
|
76
82
|
[🖇src-license-img]: https://img.shields.io/badge/License-MIT-green.svg
|
77
|
-
[🏘fossa]: https://app.fossa.io/projects/git%2Bgithub.com%2Foauth-xx%2Foauth-ruby?ref=badge_shield
|
78
|
-
[🏘fossa-img]: https://app.fossa.io/api/projects/git%2Bgithub.com%2Foauth-xx%2Foauth-ruby.svg?type=shield
|
79
83
|
[🚎yard]: https://www.rubydoc.info/github/oauth-xx/oauth-ruby
|
80
84
|
[🚎yard-img]: https://img.shields.io/badge/documentation-rubydoc-brightgreen.svg?style=flat
|
81
|
-
[🖐inch-ci-img]: http://inch-ci.org/github/oauth-xx/oauth-ruby.png
|
82
85
|
|
83
86
|
<!-- 2️⃣ version & activity -->
|
84
87
|
[⛳️version-img]: http://img.shields.io/gem/v/oauth.svg
|
@@ -116,8 +119,6 @@ The link tokens in the following sections should be kept ordered by the row and
|
|
116
119
|
[🏘sup-wf-img]: https://github.com/oauth-xx/oauth-ruby/actions/workflows/supported.yml/badge.svg
|
117
120
|
[🚎heads-wf]: https://github.com/oauth-xx/oauth-ruby/actions/workflows/heads.yml
|
118
121
|
[🚎heads-wf-img]: https://github.com/oauth-xx/oauth-ruby/actions/workflows/heads.yml/badge.svg
|
119
|
-
[🖐uns-wf]: https://github.com/oauth-xx/oauth-ruby/actions/workflows/unsupported.yml
|
120
|
-
[🖐uns-wf-img]: https://github.com/oauth-xx/oauth-ruby/actions/workflows/unsupported.yml/badge.svg
|
121
122
|
[🧮mac-wf]: https://github.com/oauth-xx/oauth-ruby/actions/workflows/macos.yml
|
122
123
|
[🧮mac-wf-img]: https://github.com/oauth-xx/oauth-ruby/actions/workflows/macos.yml/badge.svg
|
123
124
|
[📗win-wf]: https://github.com/oauth-xx/oauth-ruby/actions/workflows/windows.yml
|
@@ -187,12 +188,14 @@ For more see [SECURITY.md][🚎sec-pol].
|
|
187
188
|
## Compatibility
|
188
189
|
|
189
190
|
Targeted ruby compatibility is non-EOL versions of Ruby, currently 2.7, 3.0, and
|
190
|
-
3.1. Ruby is limited to 2.
|
191
|
+
3.1. Ruby is limited to 2.7+ in the gemspec, and this will change with minor version bumps,
|
192
|
+
while the gem is still in 0.x, in accordance with the SemVer spec.
|
191
193
|
|
192
|
-
The `
|
193
|
-
See `v0.
|
194
|
+
The `main` branch now targets 1.0.x releases, for Ruby >= 2.7.
|
195
|
+
See `v0.6-maintenance` (EOL April, 2024) branch for Ruby >= 2.4.
|
196
|
+
See `v0.5-maintenance` (EOL April, 2023) branch for Ruby >= 2.0.
|
194
197
|
|
195
|
-
NOTE: No further releases of
|
198
|
+
NOTE: No further releases of version < 1.0.x are anticipated.
|
196
199
|
|
197
200
|
<details>
|
198
201
|
<summary>Ruby Engine Compatibility Policy</summary>
|
@@ -222,17 +225,18 @@ fashion. If critical issues for a particular implementation exist at the time
|
|
222
225
|
of a major release, support for that Ruby version may be dropped.
|
223
226
|
</details>
|
224
227
|
|
225
|
-
| | Ruby OAuth Version | Maintenance Branch | 🚂 Compatibility | Official 💎 | Unofficial 💎
|
226
|
-
|
227
|
-
| 1️⃣ | 1.0.x | `main` | Rails 6, 7 | 2.7, 3.0, 3.1 | sorry, not sorry
|
228
|
-
| 2️⃣ | 0.6.x | `v0.6-maintenance` | Rails 5, 6, 7 | 2.7, 3.0, 3.1 | 2.5, 2.6
|
229
|
-
| 3️⃣ | 0.5.x | `v0.5-maintenance` | Rails 2, 3, 4, 5, 6, 7 | 2.7, 3.0, 3.1 | 2.2, 2.3, 2.4, 2.5, 2.6 | 2.0
|
230
|
-
| 4️⃣ | older | N/A | | Best of luck to you! | Please upgrade!
|
228
|
+
| | Ruby OAuth Version | Maintenance Branch | EOL | 🚂 Compatibility | Official 💎 | Unofficial 💎 | Incidental 💎 |
|
229
|
+
|:----|--------------------|--------------------|-----------|------------------------|----------------------|------------------------------|---------------|
|
230
|
+
| 1️⃣ | 1.0.x | `main` | | Rails 6, 7 | 2.7, 3.0, 3.1 | sorry, not sorry | nope |
|
231
|
+
| 2️⃣ | 0.6.x | `v0.6-maintenance` | 04/2024 | Rails 5, 6, 7 | 2.7, 3.0, 3.1 | 2.5, 2.6 | 2.4 |
|
232
|
+
| 3️⃣ | 0.5.x | `v0.5-maintenance` | 04/2023 | Rails 2, 3, 4, 5, 6, 7 | 2.7, 3.0, 3.1 | 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 | 2.0 |
|
233
|
+
| 4️⃣ | older | N/A | yesterday | | Best of luck to you! | Please upgrade! | noop |
|
231
234
|
|
232
|
-
NOTE: Support for version 0.5.x will end in April, 2023
|
233
235
|
NOTE: Once 1.0 is released, the 0.x series will only receive critical bug and security updates.
|
234
236
|
See [SECURITY.md][🚎sec-pol]
|
235
237
|
|
238
|
+
🚂 NOTE: See notes on Rails in next section.
|
239
|
+
|
236
240
|
## Basics
|
237
241
|
|
238
242
|
This is a ruby library which is intended to be used in creating Ruby Consumer
|
@@ -257,38 +261,46 @@ callback_url = "http://127.0.0.1:3000/oauth/callback"
|
|
257
261
|
|
258
262
|
Create a new `OAuth::Consumer` instance by passing it a configuration hash:
|
259
263
|
|
260
|
-
|
264
|
+
```ruby
|
265
|
+
oauth_consumer = OAuth::Consumer.new("key", "secret", site: "https://agree2")
|
266
|
+
```
|
261
267
|
|
262
268
|
Start the process by requesting a token
|
263
269
|
|
264
|
-
|
270
|
+
```ruby
|
271
|
+
request_token = oauth_consumer.get_request_token(oauth_callback: callback_url)
|
265
272
|
|
266
|
-
|
267
|
-
|
268
|
-
|
273
|
+
session[:token] = request_token.token
|
274
|
+
session[:token_secret] = request_token.secret
|
275
|
+
redirect_to request_token.authorize_url(oauth_callback: callback_url)
|
276
|
+
```
|
269
277
|
|
270
278
|
When user returns create an access_token
|
271
279
|
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
280
|
+
```ruby
|
281
|
+
hash = { oauth_token: session[:token], oauth_token_secret: session[:token_secret] }
|
282
|
+
request_token = OAuth::RequestToken.from_hash(oauth_consumer, hash)
|
283
|
+
access_token = request_token.get_access_token
|
284
|
+
# For 3-legged authorization, flow oauth_verifier is passed as param in callback
|
285
|
+
# access_token = request_token.get_access_token(oauth_verifier: params[:oauth_verifier])
|
286
|
+
@photos = access_token.get("/photos.xml")
|
287
|
+
```
|
278
288
|
|
279
289
|
Now that you have an access token, you can use Typhoeus to interact with the
|
280
290
|
OAuth provider if you choose.
|
281
291
|
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
+
```ruby
|
293
|
+
require "typhoeus"
|
294
|
+
require "oauth/request_proxy/typhoeus_request"
|
295
|
+
oauth_params = { consumer: oauth_consumer, token: access_token }
|
296
|
+
hydra = Typhoeus::Hydra.new
|
297
|
+
req = Typhoeus::Request.new(uri, options) # :method needs to be specified in options
|
298
|
+
oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(request_uri: uri))
|
299
|
+
req.options[:headers]["Authorization"] = oauth_helper.header # Signs the request
|
300
|
+
hydra.queue(req)
|
301
|
+
hydra.run
|
302
|
+
@response = req.response
|
303
|
+
```
|
292
304
|
|
293
305
|
## More Information
|
294
306
|
|
@@ -308,6 +320,8 @@ See [CONTRIBUTING.md][contributing]
|
|
308
320
|
|
309
321
|
Made with [contributors-img][contrib-rocks].
|
310
322
|
|
323
|
+
[contrib-rocks]: https://contrib.rocks
|
324
|
+
|
311
325
|
## Versioning
|
312
326
|
|
313
327
|
This library aims to adhere to [Semantic Versioning 2.0.0][semver]. Violations of this scheme should be reported as
|
@@ -316,13 +330,12 @@ immediately released that restores compatibility. Breaking changes to the public
|
|
316
330
|
major versions. Compatibility with a major and minor versions of Ruby will only be changed with a major version bump.
|
317
331
|
|
318
332
|
As a result of this policy, you can (and should) specify a dependency on this gem using
|
319
|
-
the [Pessimistic Version Constraint][pvc] with two digits of precision
|
320
|
-
While on 0.x releases three digits of precision should be used.
|
333
|
+
the [Pessimistic Version Constraint][pvc] with two digits of precision.
|
321
334
|
|
322
335
|
For example:
|
323
336
|
|
324
337
|
```ruby
|
325
|
-
spec.add_dependency "oauth", "~> 0
|
338
|
+
spec.add_dependency "oauth", "~> 1.0"
|
326
339
|
```
|
327
340
|
|
328
341
|
## License
|
data/SECURITY.md
CHANGED
@@ -2,13 +2,16 @@
|
|
2
2
|
|
3
3
|
## Supported Versions
|
4
4
|
|
5
|
-
| Version | Supported |
|
6
|
-
|
7
|
-
| 0.
|
8
|
-
| 0.
|
9
|
-
|
|
5
|
+
| Version | Supported | EOL |
|
6
|
+
|---------|--------------------|---------|
|
7
|
+
| 1.0.x | :white_check_mark: | 04/2025 |
|
8
|
+
| 0.6.x | :white_check_mark: | 04/2024 |
|
9
|
+
| 0.5.x | :white_check_mark: | 04/2023 |
|
10
|
+
| <= 0.5 | :x: | :x: |
|
10
11
|
|
11
|
-
|
12
|
+
### EOL Policy
|
13
|
+
|
14
|
+
Non-commercial support for the oldest version of Ruby (which itself is going EOL) will be dropped each year in April.
|
12
15
|
|
13
16
|
## Reporting a Vulnerability
|
14
17
|
|
data/bin/oauth
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
|
4
|
+
require "oauth"
|
4
5
|
require "oauth/cli"
|
5
6
|
|
6
|
-
|
7
|
-
|
7
|
+
# don't dump a backtrace on a ^C
|
8
|
+
Signal.trap("INT") do
|
9
|
+
puts
|
10
|
+
exit(1)
|
11
|
+
end
|
8
12
|
ARGV << "help" if ARGV.empty?
|
9
13
|
command = ARGV.shift
|
10
14
|
|
11
|
-
OAuth::CLI.new(
|
15
|
+
OAuth::CLI.new($stdout, $stdin, $stderr, command, ARGV).run
|
@@ -1,69 +1,73 @@
|
|
1
|
-
|
2
|
-
class AuthorizeCommand < BaseCommand
|
3
|
-
def required_options
|
4
|
-
[:uri]
|
5
|
-
end
|
6
|
-
|
7
|
-
def _run
|
8
|
-
request_token = get_request_token
|
1
|
+
# frozen_string_literal: true
|
9
2
|
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
module OAuth
|
4
|
+
class CLI
|
5
|
+
class AuthorizeCommand < BaseCommand
|
6
|
+
def required_options
|
7
|
+
[:uri]
|
13
8
|
end
|
14
9
|
|
15
|
-
|
16
|
-
|
10
|
+
def _run
|
11
|
+
request_token = get_request_token
|
17
12
|
|
18
|
-
|
19
|
-
|
13
|
+
if request_token.callback_confirmed?
|
14
|
+
puts "Server appears to support OAuth 1.0a; enabling support."
|
15
|
+
options[:version] = "1.0a"
|
16
|
+
end
|
20
17
|
|
21
|
-
|
22
|
-
|
18
|
+
puts "Please visit this url to authorize:"
|
19
|
+
puts request_token.authorize_url
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
scope_options = options[:scope] ? { "scope" => options[:scope] } : {}
|
27
|
-
consumer.get_request_token({ oauth_callback: options[:oauth_callback] }, scope_options)
|
28
|
-
rescue OAuth::Unauthorized => e
|
29
|
-
alert "A problem occurred while attempting to authorize:"
|
30
|
-
alert e
|
31
|
-
alert e.request.body
|
32
|
-
end
|
21
|
+
# parameters for OAuth 1.0a
|
22
|
+
oauth_verifier = ask_user_for_verifier
|
33
23
|
|
34
|
-
|
35
|
-
|
36
|
-
options[:oauth_consumer_key],
|
37
|
-
options[:oauth_consumer_secret],
|
38
|
-
access_token_url: options[:access_token_url],
|
39
|
-
authorize_url: options[:authorize_url],
|
40
|
-
request_token_url: options[:request_token_url],
|
41
|
-
scheme: options[:scheme],
|
42
|
-
http_method: options[:method].to_s.downcase.to_sym
|
43
|
-
end
|
24
|
+
verbosely_get_access_token(request_token, oauth_verifier)
|
25
|
+
end
|
44
26
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
27
|
+
def get_request_token
|
28
|
+
consumer = get_consumer
|
29
|
+
scope_options = options[:scope] ? { "scope" => options[:scope] } : {}
|
30
|
+
consumer.get_request_token({ oauth_callback: options[:oauth_callback] }, scope_options)
|
31
|
+
rescue OAuth::Unauthorized => e
|
32
|
+
alert "A problem occurred while attempting to authorize:"
|
33
|
+
alert e
|
34
|
+
alert e.request.body
|
35
|
+
end
|
36
|
+
|
37
|
+
def get_consumer
|
38
|
+
OAuth::Consumer.new \
|
39
|
+
options[:oauth_consumer_key],
|
40
|
+
options[:oauth_consumer_secret],
|
41
|
+
access_token_url: options[:access_token_url],
|
42
|
+
authorize_url: options[:authorize_url],
|
43
|
+
request_token_url: options[:request_token_url],
|
44
|
+
scheme: options[:scheme],
|
45
|
+
http_method: options[:method].to_s.downcase.to_sym
|
46
|
+
end
|
47
|
+
|
48
|
+
def ask_user_for_verifier
|
49
|
+
if options[:version] == "1.0a"
|
50
|
+
puts "Please enter the verification code provided by the SP (oauth_verifier):"
|
51
|
+
@stdin.gets.chomp
|
52
|
+
else
|
53
|
+
puts "Press return to continue..."
|
54
|
+
@stdin.gets
|
55
|
+
nil
|
56
|
+
end
|
53
57
|
end
|
54
|
-
end
|
55
58
|
|
56
|
-
|
57
|
-
|
59
|
+
def verbosely_get_access_token(request_token, oauth_verifier)
|
60
|
+
access_token = request_token.get_access_token(oauth_verifier: oauth_verifier)
|
58
61
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
puts "Response:"
|
63
|
+
access_token.params.each do |k, v|
|
64
|
+
puts " #{k}: #{v}" unless k.is_a?(Symbol)
|
65
|
+
end
|
66
|
+
rescue OAuth::Unauthorized => e
|
67
|
+
alert "A problem occurred while attempting to obtain an access token:"
|
68
|
+
alert e
|
69
|
+
alert e.request.body
|
62
70
|
end
|
63
|
-
rescue OAuth::Unauthorized => e
|
64
|
-
alert "A problem occurred while attempting to obtain an access token:"
|
65
|
-
alert e
|
66
|
-
alert e.request.body
|
67
71
|
end
|
68
72
|
end
|
69
73
|
end
|