rack-oauth2 1.19.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +3 -0
  3. data/.github/workflows/spec.yml +31 -0
  4. data/CHANGELOG.md +31 -0
  5. data/README.rdoc +1 -20
  6. data/VERSION +1 -1
  7. data/lib/rack/oauth2/access_token/authenticator.rb +1 -10
  8. data/lib/rack/oauth2/access_token/bearer.rb +1 -1
  9. data/lib/rack/oauth2/access_token/mtls.rb +2 -2
  10. data/lib/rack/oauth2/access_token.rb +4 -6
  11. data/lib/rack/oauth2/client.rb +86 -38
  12. data/lib/rack/oauth2/server/abstract/error.rb +1 -1
  13. data/lib/rack/oauth2/server/extension/pkce.rb +1 -1
  14. data/lib/rack/oauth2/server/rails/response_ext.rb +3 -3
  15. data/lib/rack/oauth2/server/resource/error.rb +4 -4
  16. data/lib/rack/oauth2/server/resource.rb +0 -1
  17. data/lib/rack/oauth2/server/token/error.rb +1 -1
  18. data/lib/rack/oauth2/server/token.rb +3 -3
  19. data/lib/rack/oauth2.rb +11 -15
  20. data/rack-oauth2.gemspec +6 -4
  21. data/spec/helpers/webmock_helper.rb +8 -2
  22. data/spec/rack/oauth2/access_token/authenticator_spec.rb +2 -22
  23. data/spec/rack/oauth2/access_token/bearer_spec.rb +2 -2
  24. data/spec/rack/oauth2/access_token_spec.rb +0 -17
  25. data/spec/rack/oauth2/client_spec.rb +135 -75
  26. data/spec/rack/oauth2/oauth2_spec.rb +0 -43
  27. data/spec/rack/oauth2/server/authorize/error_spec.rb +6 -6
  28. data/spec/rack/oauth2/server/resource/bearer/error_spec.rb +2 -2
  29. data/spec/rack/oauth2/server/resource/bearer_spec.rb +9 -9
  30. data/spec/rack/oauth2/server/resource/error_spec.rb +14 -14
  31. data/spec/rack/oauth2/server/token/authorization_code_spec.rb +2 -2
  32. data/spec/rack/oauth2/server/token/error_spec.rb +5 -5
  33. data/spec/rack/oauth2/server/token_spec.rb +2 -2
  34. metadata +43 -47
  35. data/.travis.yml +0 -8
  36. data/lib/rack/oauth2/access_token/legacy.rb +0 -19
  37. data/lib/rack/oauth2/access_token/mac/sha256_hex_verifier.rb +0 -17
  38. data/lib/rack/oauth2/access_token/mac/signature.rb +0 -34
  39. data/lib/rack/oauth2/access_token/mac/verifier.rb +0 -44
  40. data/lib/rack/oauth2/access_token/mac.rb +0 -103
  41. data/lib/rack/oauth2/debugger/request_filter.rb +0 -30
  42. data/lib/rack/oauth2/debugger.rb +0 -3
  43. data/lib/rack/oauth2/server/resource/mac/error.rb +0 -24
  44. data/lib/rack/oauth2/server/resource/mac.rb +0 -36
  45. data/spec/mock_response/tokens/legacy.json +0 -5
  46. data/spec/mock_response/tokens/legacy.txt +0 -1
  47. data/spec/mock_response/tokens/legacy_without_expires_in.txt +0 -1
  48. data/spec/mock_response/tokens/mac.json +0 -8
  49. data/spec/rack/oauth2/access_token/legacy_spec.rb +0 -23
  50. data/spec/rack/oauth2/access_token/mac/sha256_hex_verifier_spec.rb +0 -28
  51. data/spec/rack/oauth2/access_token/mac/signature_spec.rb +0 -59
  52. data/spec/rack/oauth2/access_token/mac/verifier_spec.rb +0 -25
  53. data/spec/rack/oauth2/access_token/mac_spec.rb +0 -141
  54. data/spec/rack/oauth2/debugger/request_filter_spec.rb +0 -33
  55. data/spec/rack/oauth2/server/resource/mac/error_spec.rb +0 -52
  56. data/spec/rack/oauth2/server/resource/mac_spec.rb +0 -119
  57. /data/spec/mock_response/{blank → blank.txt} +0 -0
@@ -7,9 +7,9 @@ describe Rack::OAuth2::Server::Token::BadRequest do
7
7
 
8
8
  describe '#finish' do
9
9
  it 'should respond in JSON' do
10
- status, header, response = error.finish
10
+ status, headers, response = error.finish
11
11
  status.should == 400
12
- header['Content-Type'].should == 'application/json'
12
+ headers['Content-Type'].should == 'application/json'
13
13
  response.should == ['{"error":"invalid_request"}']
14
14
  end
15
15
  end
@@ -22,10 +22,10 @@ describe Rack::OAuth2::Server::Token::Unauthorized do
22
22
 
23
23
  describe '#finish' do
24
24
  it 'should respond in JSON' do
25
- status, header, response = error.finish
25
+ status, headers, response = error.finish
26
26
  status.should == 401
27
- header['Content-Type'].should == 'application/json'
28
- header['WWW-Authenticate'].should == 'Basic realm="OAuth2 Token Endpoint"'
27
+ headers['Content-Type'].should == 'application/json'
28
+ headers['WWW-Authenticate'].should == 'Basic realm="OAuth2 Token Endpoint"'
29
29
  response.should == ['{"error":"invalid_request"}']
30
30
  end
31
31
  end
@@ -28,7 +28,7 @@ describe Rack::OAuth2::Server::Token do
28
28
  )
29
29
  end
30
30
  it 'should fail with unsupported_grant_type' do
31
- status, header, response = app.call(env)
31
+ status, headers, response = app.call(env)
32
32
  status.should == 400
33
33
  response.first.should include '"error":"invalid_request"'
34
34
  end
@@ -43,7 +43,7 @@ describe Rack::OAuth2::Server::Token do
43
43
  )
44
44
  end
45
45
  it 'should ignore duplicates' do
46
- status, header, response = app.call(env)
46
+ status, headers, response = app.call(env)
47
47
  status.should == 200
48
48
  end
49
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.19.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - nov matake
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-01 00:00:00.000000000 Z
11
+ date: 2023-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -25,7 +25,21 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.1.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: httpclient
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday-follow_redirects
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
@@ -150,8 +164,21 @@ dependencies:
150
164
  - - ">="
151
165
  - !ruby/object:Gem::Version
152
166
  version: '0'
153
- description: OAuth 2.0 Server & Client Library. Both Bearer and MAC token type are
154
- supported.
167
+ - !ruby/object:Gem::Dependency
168
+ name: rexml
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ description: OAuth 2.0 Server & Client Library. Both Bearer token type are supported.
155
182
  email: nov@matake.jp
156
183
  executables: []
157
184
  extensions: []
@@ -160,9 +187,11 @@ extra_rdoc_files:
160
187
  - README.rdoc
161
188
  files:
162
189
  - ".document"
190
+ - ".github/FUNDING.yml"
191
+ - ".github/workflows/spec.yml"
163
192
  - ".gitignore"
164
193
  - ".rspec"
165
- - ".travis.yml"
194
+ - CHANGELOG.md
166
195
  - Gemfile
167
196
  - LICENSE
168
197
  - README.rdoc
@@ -172,11 +201,6 @@ files:
172
201
  - lib/rack/oauth2/access_token.rb
173
202
  - lib/rack/oauth2/access_token/authenticator.rb
174
203
  - lib/rack/oauth2/access_token/bearer.rb
175
- - lib/rack/oauth2/access_token/legacy.rb
176
- - lib/rack/oauth2/access_token/mac.rb
177
- - lib/rack/oauth2/access_token/mac/sha256_hex_verifier.rb
178
- - lib/rack/oauth2/access_token/mac/signature.rb
179
- - lib/rack/oauth2/access_token/mac/verifier.rb
180
204
  - lib/rack/oauth2/access_token/mtls.rb
181
205
  - lib/rack/oauth2/client.rb
182
206
  - lib/rack/oauth2/client/error.rb
@@ -188,8 +212,6 @@ files:
188
212
  - lib/rack/oauth2/client/grant/refresh_token.rb
189
213
  - lib/rack/oauth2/client/grant/saml2_bearer.rb
190
214
  - lib/rack/oauth2/client/grant/token_exchange.rb
191
- - lib/rack/oauth2/debugger.rb
192
- - lib/rack/oauth2/debugger/request_filter.rb
193
215
  - lib/rack/oauth2/server.rb
194
216
  - lib/rack/oauth2/server/abstract.rb
195
217
  - lib/rack/oauth2/server/abstract/error.rb
@@ -212,8 +234,6 @@ files:
212
234
  - lib/rack/oauth2/server/resource/bearer.rb
213
235
  - lib/rack/oauth2/server/resource/bearer/error.rb
214
236
  - lib/rack/oauth2/server/resource/error.rb
215
- - lib/rack/oauth2/server/resource/mac.rb
216
- - lib/rack/oauth2/server/resource/mac/error.rb
217
237
  - lib/rack/oauth2/server/token.rb
218
238
  - lib/rack/oauth2/server/token/authorization_code.rb
219
239
  - lib/rack/oauth2/server/token/client_credentials.rb
@@ -229,23 +249,14 @@ files:
229
249
  - rack-oauth2.gemspec
230
250
  - spec/helpers/time.rb
231
251
  - spec/helpers/webmock_helper.rb
232
- - spec/mock_response/blank
252
+ - spec/mock_response/blank.txt
233
253
  - spec/mock_response/errors/invalid_request.json
234
254
  - spec/mock_response/resources/fake.txt
235
255
  - spec/mock_response/tokens/_Bearer.json
236
256
  - spec/mock_response/tokens/bearer.json
237
- - spec/mock_response/tokens/legacy.json
238
- - spec/mock_response/tokens/legacy.txt
239
- - spec/mock_response/tokens/legacy_without_expires_in.txt
240
- - spec/mock_response/tokens/mac.json
241
257
  - spec/mock_response/tokens/unknown.json
242
258
  - spec/rack/oauth2/access_token/authenticator_spec.rb
243
259
  - spec/rack/oauth2/access_token/bearer_spec.rb
244
- - spec/rack/oauth2/access_token/legacy_spec.rb
245
- - spec/rack/oauth2/access_token/mac/sha256_hex_verifier_spec.rb
246
- - spec/rack/oauth2/access_token/mac/signature_spec.rb
247
- - spec/rack/oauth2/access_token/mac/verifier_spec.rb
248
- - spec/rack/oauth2/access_token/mac_spec.rb
249
260
  - spec/rack/oauth2/access_token_spec.rb
250
261
  - spec/rack/oauth2/client/error_spec.rb
251
262
  - spec/rack/oauth2/client/grant/authorization_code_spec.rb
@@ -255,7 +266,6 @@ files:
255
266
  - spec/rack/oauth2/client/grant/refresh_token_spec.rb
256
267
  - spec/rack/oauth2/client/grant/saml2_bearer_spec.rb
257
268
  - spec/rack/oauth2/client_spec.rb
258
- - spec/rack/oauth2/debugger/request_filter_spec.rb
259
269
  - spec/rack/oauth2/oauth2_spec.rb
260
270
  - spec/rack/oauth2/server/abstract/error_spec.rb
261
271
  - spec/rack/oauth2/server/authorize/code_spec.rb
@@ -268,8 +278,6 @@ files:
268
278
  - spec/rack/oauth2/server/resource/bearer/error_spec.rb
269
279
  - spec/rack/oauth2/server/resource/bearer_spec.rb
270
280
  - spec/rack/oauth2/server/resource/error_spec.rb
271
- - spec/rack/oauth2/server/resource/mac/error_spec.rb
272
- - spec/rack/oauth2/server/resource/mac_spec.rb
273
281
  - spec/rack/oauth2/server/resource_spec.rb
274
282
  - spec/rack/oauth2/server/token/authorization_code_spec.rb
275
283
  - spec/rack/oauth2/server/token/client_credentials_spec.rb
@@ -281,11 +289,11 @@ files:
281
289
  - spec/rack/oauth2/server/token_spec.rb
282
290
  - spec/rack/oauth2/util_spec.rb
283
291
  - spec/spec_helper.rb
284
- homepage: http://github.com/nov/rack-oauth2
292
+ homepage: https://github.com/nov/rack-oauth2
285
293
  licenses:
286
294
  - MIT
287
295
  metadata: {}
288
- post_install_message:
296
+ post_install_message:
289
297
  rdoc_options:
290
298
  - "--charset=UTF-8"
291
299
  require_paths:
@@ -301,30 +309,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
301
309
  - !ruby/object:Gem::Version
302
310
  version: '0'
303
311
  requirements: []
304
- rubygems_version: 3.1.4
305
- signing_key:
312
+ rubygems_version: 3.4.10
313
+ signing_key:
306
314
  specification_version: 4
307
- summary: OAuth 2.0 Server & Client Library - Both Bearer and MAC token type are supported
315
+ summary: OAuth 2.0 Server & Client Library - Both Bearer token type are supported
308
316
  test_files:
309
317
  - spec/helpers/time.rb
310
318
  - spec/helpers/webmock_helper.rb
311
- - spec/mock_response/blank
319
+ - spec/mock_response/blank.txt
312
320
  - spec/mock_response/errors/invalid_request.json
313
321
  - spec/mock_response/resources/fake.txt
314
322
  - spec/mock_response/tokens/_Bearer.json
315
323
  - spec/mock_response/tokens/bearer.json
316
- - spec/mock_response/tokens/legacy.json
317
- - spec/mock_response/tokens/legacy.txt
318
- - spec/mock_response/tokens/legacy_without_expires_in.txt
319
- - spec/mock_response/tokens/mac.json
320
324
  - spec/mock_response/tokens/unknown.json
321
325
  - spec/rack/oauth2/access_token/authenticator_spec.rb
322
326
  - spec/rack/oauth2/access_token/bearer_spec.rb
323
- - spec/rack/oauth2/access_token/legacy_spec.rb
324
- - spec/rack/oauth2/access_token/mac/sha256_hex_verifier_spec.rb
325
- - spec/rack/oauth2/access_token/mac/signature_spec.rb
326
- - spec/rack/oauth2/access_token/mac/verifier_spec.rb
327
- - spec/rack/oauth2/access_token/mac_spec.rb
328
327
  - spec/rack/oauth2/access_token_spec.rb
329
328
  - spec/rack/oauth2/client/error_spec.rb
330
329
  - spec/rack/oauth2/client/grant/authorization_code_spec.rb
@@ -334,7 +333,6 @@ test_files:
334
333
  - spec/rack/oauth2/client/grant/refresh_token_spec.rb
335
334
  - spec/rack/oauth2/client/grant/saml2_bearer_spec.rb
336
335
  - spec/rack/oauth2/client_spec.rb
337
- - spec/rack/oauth2/debugger/request_filter_spec.rb
338
336
  - spec/rack/oauth2/oauth2_spec.rb
339
337
  - spec/rack/oauth2/server/abstract/error_spec.rb
340
338
  - spec/rack/oauth2/server/authorize/code_spec.rb
@@ -347,8 +345,6 @@ test_files:
347
345
  - spec/rack/oauth2/server/resource/bearer/error_spec.rb
348
346
  - spec/rack/oauth2/server/resource/bearer_spec.rb
349
347
  - spec/rack/oauth2/server/resource/error_spec.rb
350
- - spec/rack/oauth2/server/resource/mac/error_spec.rb
351
- - spec/rack/oauth2/server/resource/mac_spec.rb
352
348
  - spec/rack/oauth2/server/resource_spec.rb
353
349
  - spec/rack/oauth2/server/token/authorization_code_spec.rb
354
350
  - spec/rack/oauth2/server/token/client_credentials_spec.rb
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- before_install:
2
- - gem install bundler
3
-
4
- rvm:
5
- - 2.5.8
6
- - 2.6.6
7
- - 2.7.2
8
- - 3.0.0
@@ -1,19 +0,0 @@
1
- module Rack
2
- module OAuth2
3
- class AccessToken
4
- class Legacy < AccessToken
5
- def initialize(attributes = {})
6
- super
7
- self.expires_in = (
8
- self.expires_in ||
9
- attributes[:expires]
10
- ).try(:to_i)
11
- end
12
-
13
- def authenticate(request)
14
- request.header["Authorization"] = "OAuth #{access_token}"
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,17 +0,0 @@
1
- module Rack
2
- module OAuth2
3
- class AccessToken
4
- class MAC
5
- class Sha256HexVerifier < Verifier
6
- attr_optional :raw_body
7
-
8
- def calculate
9
- return nil unless raw_body.present?
10
-
11
- OpenSSL::Digest::SHA256.new.digest(raw_body).unpack('H*').first
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,34 +0,0 @@
1
- module Rack
2
- module OAuth2
3
- class AccessToken
4
- class MAC
5
- class Signature < Verifier
6
- attr_required :secret, :ts, :nonce, :method, :request_uri, :host, :port
7
- attr_optional :ext, :query
8
-
9
- def calculate
10
- Rack::OAuth2::Util.base64_encode OpenSSL::HMAC.digest(
11
- hash_generator,
12
- secret,
13
- normalized_request_string
14
- )
15
- end
16
-
17
- def normalized_request_string
18
- [
19
- ts.to_i,
20
- nonce,
21
- method.to_s.upcase,
22
- request_uri,
23
- host,
24
- port,
25
- ext || '',
26
- nil
27
- ].join("\n")
28
- end
29
-
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,44 +0,0 @@
1
- module Rack
2
- module OAuth2
3
- class AccessToken
4
- class MAC
5
- class Verifier
6
- include AttrRequired, AttrOptional
7
- attr_required :algorithm
8
-
9
- class VerificationFailed < StandardError; end
10
-
11
- def initialize(attributes = {})
12
- (required_attributes + optional_attributes).each do |key|
13
- self.send :"#{key}=", attributes[key]
14
- end
15
- attr_missing!
16
- rescue AttrRequired::AttrMissing => e
17
- raise VerificationFailed.new("#{self.class.name.demodulize} Invalid: #{e.message}")
18
- end
19
-
20
- def verify!(expected)
21
- if expected == self.calculate
22
- :verified
23
- else
24
- raise VerificationFailed.new("#{self.class.name.demodulize} Invalid")
25
- end
26
- end
27
-
28
- private
29
-
30
- def hash_generator
31
- case algorithm.to_s
32
- when 'hmac-sha-1'
33
- OpenSSL::Digest::SHA1.new
34
- when 'hmac-sha-256'
35
- OpenSSL::Digest::SHA256.new
36
- else
37
- raise 'Unsupported Algorithm'
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,103 +0,0 @@
1
- module Rack
2
- module OAuth2
3
- class AccessToken
4
- class MAC < AccessToken
5
- attr_required :mac_key, :mac_algorithm
6
- attr_optional :ts, :ext_verifier, :ts_expires_in
7
- attr_reader :nonce, :signature, :ext
8
-
9
- def initialize(attributes = {})
10
- super(attributes)
11
- @issued_at = Time.now.utc
12
- @ts_expires_in ||= 5.minutes
13
- end
14
-
15
- def token_response
16
- super.merge(
17
- mac_key: mac_key,
18
- mac_algorithm: mac_algorithm
19
- )
20
- end
21
-
22
- def verify!(request)
23
- if self.ext_verifier.present?
24
- body = request.body.read
25
- request.body.rewind # for future use
26
-
27
- self.ext_verifier.new(
28
- raw_body: body,
29
- algorithm: self.mac_algorithm
30
- ).verify!(request.ext)
31
- end
32
-
33
- now = Time.now.utc.to_i
34
- now = @ts.to_i if @ts.present?
35
-
36
- raise Rack::OAuth2::AccessToken::MAC::Verifier::VerificationFailed.new("Request ts expired") if now - request.ts.to_i > @ts_expires_in.to_i
37
-
38
- Signature.new(
39
- secret: self.mac_key,
40
- algorithm: self.mac_algorithm,
41
- nonce: request.nonce,
42
- method: request.request_method,
43
- request_uri: request.fullpath,
44
- host: request.host,
45
- port: request.port,
46
- ts: request.ts,
47
- ext: request.ext
48
- ).verify!(request.signature)
49
- rescue Verifier::VerificationFailed => e
50
- request.invalid_token! e.message
51
- end
52
-
53
- def authenticate(request)
54
- @nonce = generate_nonce
55
- @ts_generated = @ts || Time.now.utc
56
-
57
- if self.ext_verifier.present?
58
- @ext = self.ext_verifier.new(
59
- raw_body: request.body,
60
- algorithm: self.mac_algorithm
61
- ).calculate
62
- end
63
-
64
- @signature = Signature.new(
65
- secret: self.mac_key,
66
- algorithm: self.mac_algorithm,
67
- nonce: self.nonce,
68
- method: request.header.request_method,
69
- request_uri: request.header.create_query_uri,
70
- host: request.header.request_uri.host,
71
- port: request.header.request_uri.port,
72
- ts: @ts_generated,
73
- ext: @ext
74
- ).calculate
75
-
76
- request.header['Authorization'] = authorization_header
77
- end
78
-
79
- private
80
-
81
- def authorization_header
82
- header = "MAC id=\"#{access_token}\""
83
- header << ", nonce=\"#{nonce}\""
84
- header << ", ts=\"#{@ts_generated.to_i}\""
85
- header << ", mac=\"#{signature}\""
86
- header << ", ext=\"#{ext}\"" if @ext.present?
87
- header
88
- end
89
-
90
- def generate_nonce
91
- [
92
- (Time.now.utc - @issued_at).to_i,
93
- SecureRandom.hex
94
- ].join(':')
95
- end
96
- end
97
- end
98
- end
99
- end
100
-
101
- require 'rack/oauth2/access_token/mac/verifier'
102
- require 'rack/oauth2/access_token/mac/sha256_hex_verifier'
103
- require 'rack/oauth2/access_token/mac/signature'
@@ -1,30 +0,0 @@
1
- module Rack
2
- module OAuth2
3
- module Debugger
4
- class RequestFilter
5
- # Callback called in HTTPClient (before sending a request)
6
- # request:: HTTP::Message
7
- def filter_request(request)
8
- started = "======= [Rack::OAuth2] HTTP REQUEST STARTED ======="
9
- log started, request.dump
10
- end
11
-
12
- # Callback called in HTTPClient (after received a response)
13
- # request:: HTTP::Message
14
- # response:: HTTP::Message
15
- def filter_response(request, response)
16
- finished = "======= [Rack::OAuth2] HTTP REQUEST FINISHED ======="
17
- log '-' * 50, response.dump, finished
18
- end
19
-
20
- private
21
-
22
- def log(*outputs)
23
- outputs.each do |output|
24
- OAuth2.logger.info output
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,3 +0,0 @@
1
- Dir[File.dirname(__FILE__) + '/debugger/*.rb'].each do |file|
2
- require file
3
- end
@@ -1,24 +0,0 @@
1
- module Rack
2
- module OAuth2
3
- module Server
4
- class Resource
5
- class MAC
6
- class Unauthorized < Resource::Unauthorized
7
- def scheme
8
- :MAC
9
- end
10
- end
11
-
12
- module ErrorMethods
13
- include Resource::ErrorMethods
14
- def unauthorized!(error = nil, description = nil, options = {})
15
- raise Unauthorized.new(error, description, options)
16
- end
17
- end
18
-
19
- Request.send :include, ErrorMethods
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,36 +0,0 @@
1
- module Rack
2
- module OAuth2
3
- module Server
4
- class Resource
5
- class MAC < Resource
6
- def _call(env)
7
- self.request = Request.new(env)
8
- super
9
- end
10
-
11
- private
12
-
13
- class Request < Resource::Request
14
- attr_reader :nonce, :ts, :ext, :signature
15
-
16
- def setup!
17
- auth_params = Rack::Auth::Digest::Params.parse(@auth_header.params).with_indifferent_access
18
- @access_token = auth_params[:id]
19
- @nonce = auth_params[:nonce]
20
- @ts = auth_params[:ts]
21
- @ext = auth_params[:ext]
22
- @signature = auth_params[:mac]
23
- self
24
- end
25
-
26
- def oauth2?
27
- @auth_header.provided? && @auth_header.scheme.to_s == 'mac'
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
35
-
36
- require 'rack/oauth2/server/resource/mac/error'
@@ -1,5 +0,0 @@
1
- {
2
- "access_token":"access_token",
3
- "refresh_token":"refresh_token",
4
- "expires_in":3600
5
- }
@@ -1 +0,0 @@
1
- access_token=access_token&expires=3600
@@ -1 +0,0 @@
1
- access_token=access_token
@@ -1,8 +0,0 @@
1
- {
2
- "token_type":"mac",
3
- "mac_algorithm":"hmac-sha-256",
4
- "expires_in":3600,
5
- "mac_key":"secret",
6
- "refresh_token":"refresh_token",
7
- "access_token":"access_token"
8
- }
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Rack::OAuth2::AccessToken::Legacy do
4
- let :token do
5
- Rack::OAuth2::AccessToken::Legacy.new(
6
- access_token: 'access_token'
7
- )
8
- end
9
- let(:resource_endpoint) { 'https://server.example.com/resources/fake' }
10
- let(:request) { HTTPClient.new.send(:create_request, :post, URI.parse(resource_endpoint), {}, {hello: "world"}, {}) }
11
-
12
- describe '#to_s' do
13
- subject { token }
14
- its(:to_s) { should == token.access_token }
15
- end
16
-
17
- describe '.authenticate' do
18
- it 'should set Authorization header' do
19
- expect(request.header).to receive(:[]=).with('Authorization', 'OAuth access_token')
20
- token.authenticate(request)
21
- end
22
- end
23
- end
@@ -1,28 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Rack::OAuth2::AccessToken::MAC::Sha256HexVerifier do
4
-
5
- # From the example of webtopay wallet API spec
6
- # ref) https://www.webtopay.com/wallet/#authentication
7
- context 'when example from webtopay wallet API' do
8
- subject do
9
- Rack::OAuth2::AccessToken::MAC::Sha256HexVerifier.new(
10
- algorithm: 'hmac-sha-256',
11
- raw_body: 'grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=http%3A%2F%2Flocalhost%2Fabc'
12
- )
13
- end
14
- its(:calculate) { should == '21fb73c40b589622d0c78e9cd8900f89d9472aa724d0e5c3eca9ac1cd9d2a6d5' }
15
- end
16
-
17
-
18
- context 'when raw_body is empty' do
19
- subject do
20
- Rack::OAuth2::AccessToken::MAC::Sha256HexVerifier.new(
21
- algorithm: 'hmac-sha-256',
22
- raw_body: ''
23
- )
24
- end
25
- its(:calculate) { should be_nil }
26
- end
27
-
28
- end