rack-oauth2 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a2df927b2cd7727df348e6e2c2d2822382bb207
4
- data.tar.gz: 0cbd438ae8f7be634556bdf320721142e6ff497d
3
+ metadata.gz: 8d200fef958c8cebe3584388068110e9faed12eb
4
+ data.tar.gz: 1cab3b4d8fc6de54a0488dbe0159791c31b5feb3
5
5
  SHA512:
6
- metadata.gz: 6498b5c59d3bc2ccdbe0b651956872185c3e89023c59fb1f609c8d1cc2012d0a1df926146d5d3579431d6fd5ed95498214b34fa67d8bacf7911f5d327ddb26b4
7
- data.tar.gz: 57fafb111c251219dc32f95abb3523448e8852868873eea00e72c7bd7ba63f90750ebb69abffca6676f1eaf978101e6a883c179a55c4ebda2ad4db86a4f23b85
6
+ metadata.gz: 9f95eaa8709c9cccb94cff056dae182fe21e502a7a49ae05de49d348814c546e5708c4499dcbbee4a5208fe9c49f1270cf202363b1cc2811ceed1ba41a18322c
7
+ data.tar.gz: 7d3ffe4b2be092ae751c36e11f459bd691fc534045ad306d37637ee4e21757e4ff6579ae114acfc06624290fbe1fd5ab74cf8dbe216adc7161940b7a5b2a4c14
@@ -3,5 +3,6 @@ before_install:
3
3
 
4
4
  rvm:
5
5
  - 2.2.2
6
- - 2.2.5
7
- - 2.3.1
6
+ - 2.2.6
7
+ - 2.3.3
8
+ - 2.4.0
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.5.0
@@ -76,16 +76,18 @@ module Rack
76
76
  params[:scope] = Array(options.delete(:scope)).join(' ') if options[:scope].present?
77
77
  params.merge! options
78
78
 
79
- if secret && client_auth_method == :basic
80
- cred = ["#{identifier}:#{secret}"].pack('m').tr("\n", '')
81
- headers.merge!(
82
- 'Authorization' => "Basic #{cred}"
83
- )
84
- else
85
- params.merge!(
86
- client_id: identifier,
87
- client_secret: secret
88
- )
79
+ if secret
80
+ if client_auth_method == :basic
81
+ cred = ["#{identifier}:#{secret}"].pack('m').tr("\n", '')
82
+ headers.merge!(
83
+ 'Authorization' => "Basic #{cred}"
84
+ )
85
+ else
86
+ params.merge!(
87
+ client_id: identifier,
88
+ client_secret: secret
89
+ )
90
+ end
89
91
  end
90
92
  handle_response do
91
93
  Rack::OAuth2.http_client.post(
@@ -0,0 +1,162 @@
1
+ require 'spec_helper.rb'
2
+
3
+ describe Rack::OAuth2::Server::Authorize::Code do
4
+ let(:request) { Rack::MockRequest.new app }
5
+ let(:redirect_uri) { 'http://client.example.com/callback' }
6
+ let(:code_verifier) { SecureRandom.hex(16) }
7
+ let(:code_challenge) { Base64.urlsafe_encode64(OpenSSL::Digest::SHA256.digest(code_verifier)).delete('=') }
8
+ let(:code_challenge_method) { :S256 }
9
+ subject { @request }
10
+
11
+ describe 'authorization request' do
12
+ let :app do
13
+ Rack::OAuth2::Server::Authorize.new do |request, response|
14
+ @request = request
15
+ end
16
+ end
17
+
18
+ context 'when code_challenge is given' do
19
+ context 'when code_challenge_method is given' do
20
+ before do
21
+ request.get "/?response_type=code&client_id=client&redirect_uri=#{redirect_uri}&state=state&code_challenge=#{code_challenge}&code_challenge_method=#{code_challenge_method}"
22
+ end
23
+ its(:code_challenge) { should == code_challenge }
24
+ its(:code_challenge_method) { should == code_challenge_method.to_s }
25
+ end
26
+
27
+ context 'when code_challenge_method is omitted' do
28
+ before do
29
+ request.get "/?response_type=code&client_id=client&redirect_uri=#{redirect_uri}&state=state&code_challenge=#{code_challenge}"
30
+ end
31
+ its(:code_challenge) { should == code_challenge }
32
+ its(:code_challenge_method) { should == nil }
33
+ end
34
+ end
35
+
36
+ context 'otherwise' do
37
+ before do
38
+ request.get "/?response_type=code&client_id=client&redirect_uri=#{redirect_uri}&state=state"
39
+ end
40
+ its(:code_challenge) { should == nil }
41
+ its(:code_challenge_method) { should == nil }
42
+ end
43
+ end
44
+
45
+ describe 'token request' do
46
+ let(:app) do
47
+ Rack::OAuth2::Server::Token.new do |request, response|
48
+ @request = request
49
+ response.access_token = Rack::OAuth2::AccessToken::Bearer.new(access_token: 'access_token')
50
+ end
51
+ end
52
+ let(:default_params) do
53
+ {
54
+ grant_type: 'authorization_code',
55
+ client_id: 'client_id',
56
+ client_secret: 'client_secret',
57
+ code: 'authorization_code',
58
+ redirect_uri: 'http://client.example.com/callback'
59
+ }
60
+ end
61
+
62
+ context 'when code_verifier is given' do
63
+ before do
64
+ request.post '/', params: default_params.merge(
65
+ code_verifier: code_verifier
66
+ )
67
+ end
68
+ its(:code_verifier) { should == code_verifier }
69
+
70
+ describe '#verify_code_verifier!' do
71
+ context 'when code_verifier is given with code_challenge_method=plain' do
72
+ it do
73
+ expect do
74
+ subject.verify_code_verifier! code_verifier, :plain
75
+ end.not_to raise_error
76
+ end
77
+ end
78
+
79
+ context 'when collect code_challenge is given' do
80
+ it do
81
+ expect do
82
+ subject.verify_code_verifier! code_challenge
83
+ end.not_to raise_error
84
+ end
85
+ end
86
+
87
+ context 'when wrong code_challenge is blank' do
88
+ it do
89
+ expect do
90
+ subject.verify_code_verifier! 'wrong'
91
+ end.to raise_error Rack::OAuth2::Server::Token::BadRequest, /invalid_grant/
92
+ end
93
+ end
94
+
95
+ context 'when code_challenge is nil' do
96
+ it do
97
+ expect do
98
+ subject.verify_code_verifier! nil
99
+ end.to raise_error Rack::OAuth2::Server::Token::BadRequest, /invalid_grant/
100
+ end
101
+ end
102
+
103
+ context 'when unknown code_challenge_method is given' do
104
+ it do
105
+ expect do
106
+ subject.verify_code_verifier! code_challenge, :unknown
107
+ end.to raise_error Rack::OAuth2::Server::Token::BadRequest, /invalid_grant/
108
+ end
109
+ end
110
+ end
111
+ end
112
+
113
+ context 'otherwise' do
114
+ before do
115
+ request.post '/', params: default_params
116
+ end
117
+ its(:code_verifier) { should == nil }
118
+
119
+ describe '#verify_code_verifier!' do
120
+ context 'when code_verifier is given with code_challenge_method=plain' do
121
+ it do
122
+ expect do
123
+ subject.verify_code_verifier! code_verifier, :plain
124
+ end.to raise_error Rack::OAuth2::Server::Token::BadRequest, /invalid_grant/
125
+ end
126
+ end
127
+
128
+ context 'when collect code_challenge is given' do
129
+ it do
130
+ expect do
131
+ subject.verify_code_verifier! code_challenge
132
+ end.to raise_error Rack::OAuth2::Server::Token::BadRequest, /invalid_grant/
133
+ end
134
+ end
135
+
136
+ context 'when wrong code_challenge is blank' do
137
+ it do
138
+ expect do
139
+ subject.verify_code_verifier! 'wrong'
140
+ end.to raise_error Rack::OAuth2::Server::Token::BadRequest, /invalid_grant/
141
+ end
142
+ end
143
+
144
+ context 'when code_challenge is nil' do
145
+ it do
146
+ expect do
147
+ subject.verify_code_verifier! nil
148
+ end.not_to raise_error
149
+ end
150
+ end
151
+
152
+ context 'when unknown code_challenge_method is given' do
153
+ it do
154
+ expect do
155
+ subject.verify_code_verifier! code_challenge, :unknown
156
+ end.to raise_error Rack::OAuth2::Server::Token::BadRequest, /invalid_grant/
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
162
+ 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.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nov matake
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-14 00:00:00.000000000 Z
11
+ date: 2017-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -261,6 +261,7 @@ files:
261
261
  - spec/rack/oauth2/server/authorize/extensions/code_and_token_spec.rb
262
262
  - spec/rack/oauth2/server/authorize/token_spec.rb
263
263
  - spec/rack/oauth2/server/authorize_spec.rb
264
+ - spec/rack/oauth2/server/extension/pkce_spec.rb
264
265
  - spec/rack/oauth2/server/resource/bearer/error_spec.rb
265
266
  - spec/rack/oauth2/server/resource/bearer_spec.rb
266
267
  - spec/rack/oauth2/server/resource/error_spec.rb
@@ -339,6 +340,7 @@ test_files:
339
340
  - spec/rack/oauth2/server/authorize/extensions/code_and_token_spec.rb
340
341
  - spec/rack/oauth2/server/authorize/token_spec.rb
341
342
  - spec/rack/oauth2/server/authorize_spec.rb
343
+ - spec/rack/oauth2/server/extension/pkce_spec.rb
342
344
  - spec/rack/oauth2/server/resource/bearer/error_spec.rb
343
345
  - spec/rack/oauth2/server/resource/bearer_spec.rb
344
346
  - spec/rack/oauth2/server/resource/error_spec.rb