oauth2 1.4.11 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,36 +2,43 @@
2
2
 
3
3
  module OAuth2
4
4
  module Version
5
- VERSION = to_s
5
+ VERSION = '2.0.0.rc1'.freeze
6
6
 
7
7
  module_function
8
8
 
9
+ # The version number as a string
10
+ #
11
+ # @return [String]
12
+ def to_s
13
+ VERSION
14
+ end
15
+
9
16
  # The major version
10
17
  #
11
18
  # @return [Integer]
12
19
  def major
13
- 1
20
+ to_a[0].to_i
14
21
  end
15
22
 
16
23
  # The minor version
17
24
  #
18
25
  # @return [Integer]
19
26
  def minor
20
- 4
27
+ to_a[1].to_i
21
28
  end
22
29
 
23
30
  # The patch version
24
31
  #
25
32
  # @return [Integer]
26
33
  def patch
27
- 11
34
+ to_a[2].to_i
28
35
  end
29
36
 
30
37
  # The pre-release version, if any
31
38
  #
32
39
  # @return [String, NilClass]
33
40
  def pre
34
- nil
41
+ to_a[3]
35
42
  end
36
43
 
37
44
  # The version number as a hash
@@ -39,10 +46,10 @@ module OAuth2
39
46
  # @return [Hash]
40
47
  def to_h
41
48
  {
42
- :major => major,
43
- :minor => minor,
44
- :patch => patch,
45
- :pre => pre,
49
+ major: major,
50
+ minor: minor,
51
+ patch: patch,
52
+ pre: pre,
46
53
  }
47
54
  end
48
55
 
@@ -50,16 +57,7 @@ module OAuth2
50
57
  #
51
58
  # @return [Array]
52
59
  def to_a
53
- [major, minor, patch, pre].compact
54
- end
55
-
56
- # The version number as a string
57
- #
58
- # @return [String]
59
- def to_s
60
- v = [major, minor, patch].compact.join('.')
61
- v += "-#{pre}" if pre
62
- v
60
+ VERSION.split('.')
63
61
  end
64
62
  end
65
63
  end
data/lib/oauth2.rb CHANGED
@@ -1,6 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # includes modules from stdlib
4
+ require 'cgi'
5
+ require 'time'
6
+
7
+ # third party gems
8
+ require 'rash'
9
+
10
+ # includes gem files
11
+ require 'oauth2/version'
3
12
  require 'oauth2/error'
13
+ require 'oauth2/snaky_hash'
4
14
  require 'oauth2/authenticator'
5
15
  require 'oauth2/client'
6
16
  require 'oauth2/strategy/base'
@@ -10,5 +20,8 @@ require 'oauth2/strategy/password'
10
20
  require 'oauth2/strategy/client_credentials'
11
21
  require 'oauth2/strategy/assertion'
12
22
  require 'oauth2/access_token'
13
- require 'oauth2/mac_token'
14
23
  require 'oauth2/response'
24
+
25
+ # The namespace of this library
26
+ module OAuth2
27
+ end
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.11
4
+ version: 2.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
8
- - Erik Michaels-Ober
9
8
  - Michael Bleigh
10
- autorequire:
9
+ - Erik Michaels-Ober
10
+ autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2022-09-16 00:00:00.000000000 Z
13
+ date: 2022-06-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday
@@ -53,53 +53,59 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: multi_json
56
+ name: multi_xml
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.3'
61
+ version: '0.5'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.3'
68
+ version: '0.5'
69
69
  - !ruby/object:Gem::Dependency
70
- name: multi_xml
70
+ name: rack
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0.5'
75
+ version: '1.2'
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '3'
76
79
  type: :runtime
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
79
82
  requirements:
80
- - - "~>"
83
+ - - ">="
81
84
  - !ruby/object:Gem::Version
82
- version: '0.5'
85
+ version: '1.2'
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '3'
83
89
  - !ruby/object:Gem::Dependency
84
- name: rack
90
+ name: rash_alt
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - ">="
88
94
  - !ruby/object:Gem::Version
89
- version: '1.2'
95
+ version: '0.4'
90
96
  - - "<"
91
97
  - !ruby/object:Gem::Version
92
- version: '4'
98
+ version: '1'
93
99
  type: :runtime
94
100
  prerelease: false
95
101
  version_requirements: !ruby/object:Gem::Requirement
96
102
  requirements:
97
103
  - - ">="
98
104
  - !ruby/object:Gem::Version
99
- version: '1.2'
105
+ version: '0.4'
100
106
  - - "<"
101
107
  - !ruby/object:Gem::Version
102
- version: '4'
108
+ version: '1'
103
109
  - !ruby/object:Gem::Dependency
104
110
  name: addressable
105
111
  requirement: !ruby/object:Gem::Requirement
@@ -114,20 +120,34 @@ dependencies:
114
120
  - - ">="
115
121
  - !ruby/object:Gem::Version
116
122
  version: '2'
123
+ - !ruby/object:Gem::Dependency
124
+ name: backports
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '3'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '3'
117
137
  - !ruby/object:Gem::Dependency
118
138
  name: bundler
119
139
  requirement: !ruby/object:Gem::Requirement
120
140
  requirements:
121
141
  - - ">="
122
142
  - !ruby/object:Gem::Version
123
- version: '1.16'
143
+ version: '2'
124
144
  type: :development
125
145
  prerelease: false
126
146
  version_requirements: !ruby/object:Gem::Requirement
127
147
  requirements:
128
148
  - - ">="
129
149
  - !ruby/object:Gem::Version
130
- version: '1.16'
150
+ version: '2'
131
151
  - !ruby/object:Gem::Dependency
132
152
  name: rake
133
153
  requirement: !ruby/object:Gem::Requirement
@@ -216,22 +236,16 @@ dependencies:
216
236
  name: rubocop-lts
217
237
  requirement: !ruby/object:Gem::Requirement
218
238
  requirements:
219
- - - ">="
220
- - !ruby/object:Gem::Version
221
- version: 2.0.3
222
239
  - - "~>"
223
240
  - !ruby/object:Gem::Version
224
- version: '2.0'
241
+ version: '8.0'
225
242
  type: :development
226
243
  prerelease: false
227
244
  version_requirements: !ruby/object:Gem::Requirement
228
245
  requirements:
229
- - - ">="
230
- - !ruby/object:Gem::Version
231
- version: 2.0.3
232
246
  - - "~>"
233
247
  - !ruby/object:Gem::Version
234
- version: '2.0'
248
+ version: '8.0'
235
249
  - !ruby/object:Gem::Dependency
236
250
  name: silent_stream
237
251
  requirement: !ruby/object:Gem::Requirement
@@ -265,8 +279,8 @@ files:
265
279
  - lib/oauth2/authenticator.rb
266
280
  - lib/oauth2/client.rb
267
281
  - lib/oauth2/error.rb
268
- - lib/oauth2/mac_token.rb
269
282
  - lib/oauth2/response.rb
283
+ - lib/oauth2/snaky_hash.rb
270
284
  - lib/oauth2/strategy/assertion.rb
271
285
  - lib/oauth2/strategy/auth_code.rb
272
286
  - lib/oauth2/strategy/base.rb
@@ -274,37 +288,18 @@ files:
274
288
  - lib/oauth2/strategy/implicit.rb
275
289
  - lib/oauth2/strategy/password.rb
276
290
  - lib/oauth2/version.rb
277
- homepage: https://gitlab.com/oauth-xx/oauth2
291
+ homepage: https://github.com/oauth-xx/oauth2
278
292
  licenses:
279
293
  - MIT
280
294
  metadata:
281
- homepage_uri: https://gitlab.com/oauth-xx/oauth2
282
- source_code_uri: https://gitlab.com/oauth-xx/oauth2/-/tree/v1.4.11
283
- changelog_uri: https://gitlab.com/oauth-xx/oauth2/-/blob/v1.4.11/CHANGELOG.md
284
- bug_tracker_uri: https://gitlab.com/oauth-xx/oauth2/-/issues
285
- documentation_uri: https://www.rubydoc.info/gems/oauth2/1.4.11
286
- wiki_uri: https://gitlab.com/oauth-xx/oauth2/-/wiki
287
- funding_uri: https://liberapay.com/pboling
295
+ homepage_uri: https://github.com/oauth-xx/oauth2
296
+ source_code_uri: https://github.com/oauth-xx/oauth2/tree/v2.0.0.rc1
297
+ changelog_uri: https://github.com/oauth-xx/oauth2/blob/v2.0.0.rc1/CHANGELOG.md
298
+ bug_tracker_uri: https://github.com/oauth-xx/oauth2/issues
299
+ documentation_uri: https://www.rubydoc.info/gems/oauth2/2.0.0.rc1
300
+ wiki_uri: https://github.com/oauth-xx/oauth2/wiki
288
301
  rubygems_mfa_required: 'true'
289
- post_install_message: |2+
290
-
291
- You have installed oauth2 version 1.4.11, which is EOL.
292
- No further support is anticipated for the 1.4.x series.
293
-
294
- OAuth2 version 2 is released.
295
- There are BREAKING changes, but most will not encounter them, and upgrading should be easy!
296
-
297
- We have made two other major migrations:
298
- 1. master branch renamed to main
299
- 2. Github has been replaced with Gitlab
300
-
301
- Please see:
302
- • https://gitlab.com/oauth-xx/oauth2#what-is-new-for-v20
303
- • https://gitlab.com/oauth-xx/oauth2/-/blob/main/CHANGELOG.md
304
- • https://groups.google.com/g/oauth-ruby/c/QA_dtrXWXaE
305
-
306
- Please upgrade, report issues, and support the project! Thanks, |7eter l-|. l3oling
307
-
302
+ post_install_message:
308
303
  rdoc_options: []
309
304
  require_paths:
310
305
  - lib
@@ -312,16 +307,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
312
307
  requirements:
313
308
  - - ">="
314
309
  - !ruby/object:Gem::Version
315
- version: 1.9.0
310
+ version: 2.2.0
316
311
  required_rubygems_version: !ruby/object:Gem::Requirement
317
312
  requirements:
318
- - - ">="
313
+ - - ">"
319
314
  - !ruby/object:Gem::Version
320
- version: '0'
315
+ version: 1.3.1
321
316
  requirements: []
322
- rubygems_version: 3.3.21
323
- signing_key:
317
+ rubygems_version: 3.3.15
318
+ signing_key:
324
319
  specification_version: 4
325
320
  summary: A Ruby wrapper for the OAuth 2.0 protocol.
326
321
  test_files: []
327
- ...
@@ -1,130 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'base64'
4
- require 'digest'
5
- require 'openssl'
6
- require 'securerandom'
7
-
8
- module OAuth2
9
- class MACToken < AccessToken
10
- # Generates a MACToken from an AccessToken and secret
11
- #
12
- # @param [AccessToken] token the OAuth2::Token instance
13
- # @option [String] secret the secret key value
14
- # @param [Hash] opts the options to create the Access Token with
15
- # @see MACToken#initialize
16
- def self.from_access_token(token, secret, options = {})
17
- new(token.client, token.token, secret, token.params.merge(:refresh_token => token.refresh_token, :expires_in => token.expires_in, :expires_at => token.expires_at).merge(options))
18
- end
19
-
20
- attr_reader :secret, :algorithm
21
-
22
- # Initalize a MACToken
23
- #
24
- # @param [Client] client the OAuth2::Client instance
25
- # @param [String] token the Access Token value
26
- # @option [String] secret the secret key value
27
- # @param [Hash] opts the options to create the Access Token with
28
- # @option opts [String] :refresh_token (nil) the refresh_token value
29
- # @option opts [FixNum, String] :expires_in (nil) the number of seconds in which the AccessToken will expire
30
- # @option opts [FixNum, String] :expires_at (nil) the epoch time in seconds in which AccessToken will expire
31
- # @option opts [FixNum, String] :algorithm (hmac-sha-256) the algorithm to use for the HMAC digest (one of 'hmac-sha-256', 'hmac-sha-1')
32
- def initialize(client, token, secret, opts = {})
33
- @secret = secret
34
- self.algorithm = opts.delete(:algorithm) || 'hmac-sha-256'
35
-
36
- super(client, token, opts)
37
- end
38
-
39
- # Make a request with the MAC Token
40
- #
41
- # @param [Symbol] verb the HTTP request method
42
- # @param [String] path the HTTP URL path of the request
43
- # @param [Hash] opts the options to make the request with
44
- # @see Client#request
45
- def request(verb, path, opts = {}, &block)
46
- url = client.connection.build_url(path, opts[:params]).to_s
47
-
48
- opts[:headers] ||= {}
49
- opts[:headers]['Authorization'] = header(verb, url)
50
-
51
- @client.request(verb, path, opts, &block)
52
- end
53
-
54
- # Get the headers hash (always an empty hash)
55
- def headers
56
- {}
57
- end
58
-
59
- # Generate the MAC header
60
- #
61
- # @param [Symbol] verb the HTTP request method
62
- # @param [String] url the HTTP URL path of the request
63
- def header(verb, url)
64
- timestamp = Time.now.utc.to_i
65
- nonce = Digest::SHA256.hexdigest([timestamp, SecureRandom.hex].join(':'))
66
-
67
- uri = URI.parse(url)
68
-
69
- raise(ArgumentError, "could not parse \"#{url}\" into URI") unless uri.is_a?(URI::HTTP)
70
-
71
- mac = signature(timestamp, nonce, verb, uri)
72
-
73
- "MAC id=\"#{token}\", ts=\"#{timestamp}\", nonce=\"#{nonce}\", mac=\"#{mac}\""
74
- end
75
-
76
- # Generate the Base64-encoded HMAC digest signature
77
- #
78
- # @param [Fixnum] timestamp the timestamp of the request in seconds since epoch
79
- # @param [String] nonce the MAC header nonce
80
- # @param [Symbol] verb the HTTP request method
81
- # @param [String] url the HTTP URL path of the request
82
- def signature(timestamp, nonce, verb, uri)
83
- signature = [
84
- timestamp,
85
- nonce,
86
- verb.to_s.upcase,
87
- uri.request_uri,
88
- uri.host,
89
- uri.port,
90
- '', nil
91
- ].join("\n")
92
-
93
- strict_encode64(OpenSSL::HMAC.digest(@algorithm, secret, signature))
94
- end
95
-
96
- # Set the HMAC algorithm
97
- #
98
- # @param [String] alg the algorithm to use (one of 'hmac-sha-1', 'hmac-sha-256')
99
- def algorithm=(alg)
100
- @algorithm = case alg.to_s
101
- when 'hmac-sha-1'
102
- begin
103
- OpenSSL::Digest('SHA1').new
104
- rescue StandardError
105
- OpenSSL::Digest.new('SHA1')
106
- end
107
- when 'hmac-sha-256'
108
- begin
109
- OpenSSL::Digest('SHA256').new
110
- rescue StandardError
111
- OpenSSL::Digest.new('SHA256')
112
- end
113
- else
114
- raise(ArgumentError, 'Unsupported algorithm')
115
- end
116
- end
117
-
118
- private
119
-
120
- # No-op since we need the verb and path
121
- # and the MAC always goes in a header
122
- def token=(_noop)
123
- end
124
-
125
- # Base64.strict_encode64 is not available on Ruby 1.8.7
126
- def strict_encode64(str)
127
- Base64.encode64(str).delete("\n")
128
- end
129
- end
130
- end