rack-oauth2 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -14,7 +14,7 @@ tmtags
14
14
  *.swp
15
15
 
16
16
  ## PROJECT::GENERAL
17
- coverage
17
+ coverage*
18
18
  rdoc
19
19
  pkg
20
20
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-oauth2 (0.10.1)
4
+ rack-oauth2 (0.11.0)
5
5
  activesupport (>= 2.3)
6
6
  attr_required (>= 0.0.3)
7
7
  httpclient (>= 2.2.0.2)
@@ -12,43 +12,50 @@ PATH
12
12
  GEM
13
13
  remote: http://rubygems.org/
14
14
  specs:
15
- activesupport (3.1.0)
15
+ activesupport (3.2.1)
16
+ i18n (~> 0.6)
16
17
  multi_json (~> 1.0)
17
18
  addressable (2.2.6)
18
19
  attr_required (0.0.3)
19
20
  bouncy-castle-java (1.5.0146.1)
20
- crack (0.1.8)
21
+ configatron (2.9.0)
22
+ yamler (>= 0.1.0)
23
+ cover_me (1.2.0)
24
+ configatron
25
+ hashie
26
+ crack (0.3.1)
21
27
  diff-lcs (1.1.3)
22
- httpclient (2.2.1)
28
+ hashie (1.2.0)
29
+ httpclient (2.2.4)
23
30
  i18n (0.6.0)
24
- jruby-openssl (0.7.4)
25
- bouncy-castle-java
26
- json (1.6.0)
27
- multi_json (1.0.3)
28
- rack (1.3.2)
29
- rake (0.9.2)
30
- rcov (0.9.10)
31
- rcov (0.9.10-java)
32
- rspec (2.6.0)
33
- rspec-core (~> 2.6.0)
34
- rspec-expectations (~> 2.6.0)
35
- rspec-mocks (~> 2.6.0)
36
- rspec-core (2.6.4)
37
- rspec-expectations (2.6.0)
31
+ jruby-openssl (0.7.5)
32
+ bouncy-castle-java (>= 1.5.0146.1)
33
+ json (1.6.5)
34
+ json (1.6.5-java)
35
+ multi_json (1.0.4)
36
+ rack (1.4.1)
37
+ rake (0.9.2.2)
38
+ rspec (2.8.0)
39
+ rspec-core (~> 2.8.0)
40
+ rspec-expectations (~> 2.8.0)
41
+ rspec-mocks (~> 2.8.0)
42
+ rspec-core (2.8.0)
43
+ rspec-expectations (2.8.0)
38
44
  diff-lcs (~> 1.1.2)
39
- rspec-mocks (2.6.0)
40
- webmock (1.7.6)
41
- addressable (> 2.2.5, ~> 2.2)
45
+ rspec-mocks (2.8.0)
46
+ webmock (1.7.10)
47
+ addressable (~> 2.2, > 2.2.5)
42
48
  crack (>= 0.1.7)
49
+ yamler (0.1.0)
43
50
 
44
51
  PLATFORMS
45
52
  java
46
53
  ruby
47
54
 
48
55
  DEPENDENCIES
56
+ cover_me (>= 1.2.0)
49
57
  jruby-openssl (>= 0.7)
50
58
  rack-oauth2!
51
59
  rake (>= 0.8)
52
- rcov (>= 0.9)
53
60
  rspec (>= 2)
54
61
  webmock (>= 1.6.2)
data/Rakefile CHANGED
@@ -4,9 +4,16 @@ Bundler::GemHelper.install_tasks
4
4
  require 'rspec/core/rake_task'
5
5
  RSpec::Core::RakeTask.new(:spec)
6
6
 
7
- RSpec::Core::RakeTask.new(:rcov) do |spec|
8
- spec.rcov = true
9
- spec.rcov_opts = ['-Ilib -Ispec --exclude spec,gems']
7
+ if RUBY_VERSION >= '1.9'
8
+ require 'cover_me'
9
+ CoverMe.config do |c|
10
+ c.file_pattern = /(#{CoverMe.config.project.root}\/lib\/.+\.rb)/i
11
+ end
12
+ else
13
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
14
+ spec.rcov = true
15
+ spec.rcov_opts = ['-Ilib -Ispec --exclude spec,gems']
16
+ end
10
17
  end
11
18
 
12
19
  task :default => :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.0
1
+ 0.12.0
@@ -76,7 +76,7 @@ module Rack
76
76
  def generate_nonce
77
77
  [
78
78
  (Time.now.utc - @issued_at).to_i,
79
- ActiveSupport::SecureRandom.hex
79
+ SecureRandom.hex
80
80
  ].join(':')
81
81
  end
82
82
  end
@@ -46,7 +46,7 @@ module Rack
46
46
  end
47
47
 
48
48
  def access_token!
49
- params = @grant.to_hash
49
+ params = @grant.as_json
50
50
  params.merge!(
51
51
  :client_id => self.identifier,
52
52
  :client_secret => self.secret
@@ -11,7 +11,7 @@ module Rack
11
11
  attr_missing!
12
12
  end
13
13
 
14
- def to_hash
14
+ def as_json(options = {})
15
15
  (required_attributes + optional_attributes).inject({
16
16
  :grant_type => self.class.name.demodulize.underscore.to_sym
17
17
  }) do |hash, key|
@@ -6,11 +6,38 @@ module Rack
6
6
  class Token < Abstract::Handler
7
7
  def call(env)
8
8
  request = Request.new(env)
9
- request.profile.new(&@authenticator).call(env).finish
9
+ grant_type_for(request).new(&@authenticator).call(env).finish
10
10
  rescue Rack::OAuth2::Server::Abstract::Error => e
11
11
  e.finish
12
12
  end
13
13
 
14
+ private
15
+
16
+ def grant_type_for(request)
17
+ case request.grant_type
18
+ when 'authorization_code'
19
+ AuthorizationCode
20
+ when 'password'
21
+ Password
22
+ when 'client_credentials'
23
+ ClientCredentials
24
+ when 'refresh_token'
25
+ RefreshToken
26
+ when ''
27
+ request.attr_missing!
28
+ else
29
+ extensions.detect do |extension|
30
+ extension.grant_type_for? request.grant_type
31
+ end || request.unsupported_grant_type!
32
+ end
33
+ end
34
+
35
+ def extensions
36
+ Extension.constants.sort.collect do |key|
37
+ Extension.const_get key
38
+ end
39
+ end
40
+
14
41
  class Request < Abstract::Request
15
42
  attr_required :grant_type
16
43
  attr_optional :client_secret
@@ -24,25 +51,7 @@ module Rack
24
51
  super
25
52
  @client_secret = params['client_secret']
26
53
  end
27
- @grant_type = params['grant_type']
28
- end
29
-
30
- def profile
31
- case params['grant_type'].to_s
32
- when 'authorization_code'
33
- AuthorizationCode
34
- when 'password'
35
- Password
36
- when 'client_credentials'
37
- ClientCredentials
38
- when 'refresh_token'
39
- RefreshToken
40
- when ''
41
- attr_missing!
42
- else
43
- # TODO: support extensions
44
- unsupported_grant_type!("'#{params['grant_type']}' isn't supported.")
45
- end
54
+ @grant_type = params['grant_type'].to_s
46
55
  end
47
56
  end
48
57
 
@@ -67,8 +76,9 @@ module Rack
67
76
  end
68
77
  end
69
78
 
70
- require 'rack/oauth2/server/token/error'
71
79
  require 'rack/oauth2/server/token/authorization_code'
72
80
  require 'rack/oauth2/server/token/password'
73
81
  require 'rack/oauth2/server/token/client_credentials'
74
- require 'rack/oauth2/server/token/refresh_token'
82
+ require 'rack/oauth2/server/token/refresh_token'
83
+ require 'rack/oauth2/server/token/extension'
84
+ require 'rack/oauth2/server/token/error'
@@ -0,0 +1,12 @@
1
+ module Rack
2
+ module OAuth2
3
+ module Server
4
+ class Token
5
+ module Extension
6
+ # Define your extension in this namespace and load it explicitly.
7
+ # extension/assertion/jwt.rb would be good example for you.
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,34 @@
1
+ module Rack
2
+ module OAuth2
3
+ module Server
4
+ class Token
5
+ module Extension
6
+ class JWT < Abstract::Handler
7
+ class << self
8
+ def grant_type_for?(grant_type)
9
+ grant_type == 'urn:ietf:params:oauth:grant-type:jwt-bearer'
10
+ end
11
+ end
12
+
13
+ def call(env)
14
+ @request = Request.new env
15
+ @response = Response.new request
16
+ super
17
+ end
18
+
19
+ class Request < Authorize::Token::Request
20
+ attr_required :assertion
21
+
22
+ def initialize(env)
23
+ super
24
+ @grant_type = :jwt
25
+ @assertion = params['assertion']
26
+ attr_missing!
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
data/rack-oauth2.gemspec CHANGED
@@ -20,7 +20,11 @@ Gem::Specification.new do |s|
20
20
  s.add_runtime_dependency "i18n"
21
21
  s.add_runtime_dependency "attr_required", ">= 0.0.3"
22
22
  s.add_development_dependency "rake", ">= 0.8"
23
- s.add_development_dependency "rcov", ">= 0.9"
23
+ if RUBY_VERSION >= '1.9'
24
+ s.add_development_dependency "cover_me", ">= 1.2.0"
25
+ else
26
+ s.add_development_dependency "rcov", ">= 0.9"
27
+ end
24
28
  s.add_development_dependency "rspec", ">= 2"
25
29
  s.add_development_dependency "webmock", ">= 1.6.2"
26
30
  end
@@ -15,7 +15,7 @@ describe Rack::OAuth2::Client::Grant::AuthorizationCode do
15
15
  end
16
16
  subject { grant.new attributes }
17
17
  its(:redirect_uri) { should == redirect_uri }
18
- its(:to_hash) do
18
+ its(:as_json) do
19
19
  should == {:grant_type => :authorization_code, :code => 'code', :redirect_uri => redirect_uri}
20
20
  end
21
21
  end
@@ -23,7 +23,7 @@ describe Rack::OAuth2::Client::Grant::AuthorizationCode do
23
23
  context 'otherwise' do
24
24
  subject { grant.new attributes }
25
25
  its(:redirect_uri) { should be_nil }
26
- its(:to_hash) do
26
+ its(:as_json) do
27
27
  should == {:grant_type => :authorization_code, :code => 'code', :redirect_uri => nil}
28
28
  end
29
29
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper.rb'
2
2
 
3
3
  describe Rack::OAuth2::Client::Grant::ClientCredentials do
4
- its(:to_hash) do
4
+ its(:as_json) do
5
5
  should == {:grant_type => :client_credentials}
6
6
  end
7
7
  end
@@ -13,7 +13,7 @@ describe Rack::OAuth2::Client::Grant::Password do
13
13
  {:username => 'username', :password => 'password'}
14
14
  end
15
15
  subject { grant.new attributes }
16
- its(:to_hash) do
16
+ its(:as_json) do
17
17
  should == {:grant_type => :password, :username => 'username', :password => 'password'}
18
18
  end
19
19
  end
@@ -8,7 +8,7 @@ describe Rack::OAuth2::Client::Grant::RefreshToken do
8
8
  {:refresh_token => 'refresh_token'}
9
9
  end
10
10
  subject { grant.new attributes }
11
- its(:to_hash) do
11
+ its(:as_json) do
12
12
  should == {:grant_type => :refresh_token, :refresh_token => 'refresh_token'}
13
13
  end
14
14
  end
@@ -4,7 +4,7 @@ describe Rack::OAuth2::Server::Authorize::Code do
4
4
  let(:request) { Rack::MockRequest.new app }
5
5
  let(:redirect_uri) { 'http://client.example.com/callback' }
6
6
  let(:authorization_code) { 'authorization_code' }
7
- let(:response) { request.get "/?response_type=code&client_id=client&redirect_uri=#{redirect_uri}" }
7
+ let(:response) { request.get "/?response_type=code&client_id=client&redirect_uri=#{redirect_uri}&state=state" }
8
8
 
9
9
  context 'when approved' do
10
10
  subject { response }
@@ -16,11 +16,11 @@ describe Rack::OAuth2::Server::Authorize::Code do
16
16
  end
17
17
  end
18
18
  its(:status) { should == 302 }
19
- its(:location) { should == "#{redirect_uri}?code=#{authorization_code}" }
19
+ its(:location) { should == "#{redirect_uri}?code=#{authorization_code}&state=state" }
20
20
 
21
21
  context 'when redirect_uri already includes query' do
22
22
  let(:redirect_uri) { 'http://client.example.com/callback?k=v' }
23
- its(:location) { should == "#{redirect_uri}&code=#{authorization_code}" }
23
+ its(:location) { should == "#{redirect_uri}&code=#{authorization_code}&state=state" }
24
24
  end
25
25
 
26
26
  context 'when redirect_uri is missing' do
@@ -51,7 +51,7 @@ describe Rack::OAuth2::Server::Authorize::Code do
51
51
  :error => :access_denied,
52
52
  :error_description => Rack::OAuth2::Server::Authorize::ErrorMethods::DEFAULT_DESCRIPTION[:access_denied]
53
53
  }
54
- response.location.should == "#{redirect_uri}?#{error_message.to_query}"
54
+ response.location.should == "#{redirect_uri}?#{error_message.to_query}&state=state"
55
55
  end
56
56
  end
57
57
  end
@@ -4,7 +4,7 @@ describe Rack::OAuth2::Server::Authorize::Token do
4
4
  let(:request) { Rack::MockRequest.new app }
5
5
  let(:redirect_uri) { 'http://client.example.com/callback' }
6
6
  let(:access_token) { 'access_token' }
7
- let(:response) { request.get("/?response_type=token&client_id=client&redirect_uri=#{redirect_uri}") }
7
+ let(:response) { request.get("/?response_type=token&client_id=client&redirect_uri=#{redirect_uri}&state=state") }
8
8
 
9
9
  context "when approved" do
10
10
  subject { response }
@@ -17,7 +17,7 @@ describe Rack::OAuth2::Server::Authorize::Token do
17
17
  end
18
18
  end
19
19
  its(:status) { should == 302 }
20
- its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&token_type=bearer" }
20
+ its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&state=state&token_type=bearer" }
21
21
 
22
22
  context 'when refresh_token is given' do
23
23
  let :bearer_token do
@@ -26,7 +26,7 @@ describe Rack::OAuth2::Server::Authorize::Token do
26
26
  :refresh_token => 'refresh'
27
27
  )
28
28
  end
29
- its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&token_type=bearer" }
29
+ its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&state=state&token_type=bearer" }
30
30
  end
31
31
 
32
32
  context 'when redirect_uri is missing' do
@@ -67,7 +67,7 @@ describe Rack::OAuth2::Server::Authorize::Token do
67
67
  :error => :access_denied,
68
68
  :error_description => Rack::OAuth2::Server::Authorize::ErrorMethods::DEFAULT_DESCRIPTION[:access_denied]
69
69
  }
70
- response.location.should == "#{redirect_uri}##{error_message.to_query}"
70
+ response.location.should == "#{redirect_uri}##{error_message.to_query}&state=state"
71
71
  end
72
72
  end
73
73
  end
@@ -117,7 +117,7 @@ describe Rack::OAuth2::Server::Authorize do
117
117
  end
118
118
  end
119
119
 
120
- describe 'extensions' do
120
+ describe 'extensibility' do
121
121
  before do
122
122
  require 'rack/oauth2/server/authorize/extension/code_and_token'
123
123
  end
@@ -100,4 +100,35 @@ describe Rack::OAuth2::Server::Token do
100
100
  end
101
101
  end
102
102
  end
103
+
104
+ describe 'extensibility' do
105
+ before do
106
+ require 'rack/oauth2/server/token/extension/jwt'
107
+ end
108
+
109
+ subject { app }
110
+ let(:env) do
111
+ Rack::MockRequest.env_for(
112
+ '/token',
113
+ :params => params
114
+ )
115
+ end
116
+ let(:request) { Rack::OAuth2::Server::Token::Request.new env }
117
+ its(:extensions) { should == [Rack::OAuth2::Server::Token::Extension::JWT] }
118
+
119
+ describe 'JWT assertion' do
120
+ let(:params) do
121
+ {
122
+ :grant_type => 'urn:ietf:params:oauth:grant-type:jwt-bearer',
123
+ :assertion => 'header.payload.signature'
124
+ }
125
+ end
126
+
127
+ it do
128
+ app.send(
129
+ :grant_type_for, request
130
+ ).should == Rack::OAuth2::Server::Token::Extension::JWT
131
+ end
132
+ end
133
+ end
103
134
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,10 @@
1
+ if RUBY_VERSION >= '1.9'
2
+ require 'cover_me'
3
+ at_exit do
4
+ CoverMe.complete!
5
+ end
6
+ end
7
+
1
8
  require 'rspec'
2
9
  require 'rack/oauth2'
3
10
  require 'helpers/time'
metadata CHANGED
@@ -1,137 +1,135 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rack-oauth2
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.12.0
4
5
  prerelease:
5
- version: 0.11.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - nov matake
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-09-16 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-02-01 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: rack
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70151141124580 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "1.1"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '1.1'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: json
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70151141124580
25
+ - !ruby/object:Gem::Dependency
26
+ name: json
27
+ requirement: &70151141124100 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
34
32
  version: 1.4.3
35
33
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: httpclient
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70151141124100
36
+ - !ruby/object:Gem::Dependency
37
+ name: httpclient
38
+ requirement: &70151141123620 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
45
43
  version: 2.2.0.2
46
44
  type: :runtime
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: activesupport
50
45
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70151141123620
47
+ - !ruby/object:Gem::Dependency
48
+ name: activesupport
49
+ requirement: &70151141123100 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "2.3"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '2.3'
57
55
  type: :runtime
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: i18n
61
56
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70151141123100
58
+ - !ruby/object:Gem::Dependency
59
+ name: i18n
60
+ requirement: &70151141122640 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
68
66
  type: :runtime
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: attr_required
72
67
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70151141122640
69
+ - !ruby/object:Gem::Dependency
70
+ name: attr_required
71
+ requirement: &70151141121940 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
78
76
  version: 0.0.3
79
77
  type: :runtime
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
82
- name: rake
83
78
  prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *70151141121940
80
+ - !ruby/object:Gem::Dependency
81
+ name: rake
82
+ requirement: &70151141120640 !ruby/object:Gem::Requirement
85
83
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0.8"
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0.8'
90
88
  type: :development
91
- version_requirements: *id007
92
- - !ruby/object:Gem::Dependency
93
- name: rcov
94
89
  prerelease: false
95
- requirement: &id008 !ruby/object:Gem::Requirement
90
+ version_requirements: *70151141120640
91
+ - !ruby/object:Gem::Dependency
92
+ name: cover_me
93
+ requirement: &70151141120120 !ruby/object:Gem::Requirement
96
94
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0.9"
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: 1.2.0
101
99
  type: :development
102
- version_requirements: *id008
103
- - !ruby/object:Gem::Dependency
104
- name: rspec
105
100
  prerelease: false
106
- requirement: &id009 !ruby/object:Gem::Requirement
101
+ version_requirements: *70151141120120
102
+ - !ruby/object:Gem::Dependency
103
+ name: rspec
104
+ requirement: &70151141113400 !ruby/object:Gem::Requirement
107
105
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: "2"
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '2'
112
110
  type: :development
113
- version_requirements: *id009
114
- - !ruby/object:Gem::Dependency
115
- name: webmock
116
111
  prerelease: false
117
- requirement: &id010 !ruby/object:Gem::Requirement
112
+ version_requirements: *70151141113400
113
+ - !ruby/object:Gem::Dependency
114
+ name: webmock
115
+ requirement: &70151141112480 !ruby/object:Gem::Requirement
118
116
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
122
120
  version: 1.6.2
123
121
  type: :development
124
- version_requirements: *id010
125
- description: OAuth 2.0 Server & Client Library. Both Bearer and MAC token type are supported.
122
+ prerelease: false
123
+ version_requirements: *70151141112480
124
+ description: OAuth 2.0 Server & Client Library. Both Bearer and MAC token type are
125
+ supported.
126
126
  email: nov@matake.jp
127
127
  executables: []
128
-
129
128
  extensions: []
130
-
131
- extra_rdoc_files:
129
+ extra_rdoc_files:
132
130
  - LICENSE
133
131
  - README.rdoc
134
- files:
132
+ files:
135
133
  - .document
136
134
  - .gitignore
137
135
  - .rspec
@@ -182,6 +180,8 @@ files:
182
180
  - lib/rack/oauth2/server/token/authorization_code.rb
183
181
  - lib/rack/oauth2/server/token/client_credentials.rb
184
182
  - lib/rack/oauth2/server/token/error.rb
183
+ - lib/rack/oauth2/server/token/extension.rb
184
+ - lib/rack/oauth2/server/token/extension/jwt.rb
185
185
  - lib/rack/oauth2/server/token/password.rb
186
186
  - lib/rack/oauth2/server/token/refresh_token.rb
187
187
  - lib/rack/oauth2/util.rb
@@ -235,32 +235,30 @@ files:
235
235
  - spec/spec_helper.rb
236
236
  homepage: http://github.com/nov/rack-oauth2
237
237
  licenses: []
238
-
239
238
  post_install_message:
240
- rdoc_options:
239
+ rdoc_options:
241
240
  - --charset=UTF-8
242
- require_paths:
241
+ require_paths:
243
242
  - lib
244
- required_ruby_version: !ruby/object:Gem::Requirement
243
+ required_ruby_version: !ruby/object:Gem::Requirement
245
244
  none: false
246
- requirements:
247
- - - ">="
248
- - !ruby/object:Gem::Version
249
- version: "0"
250
- required_rubygems_version: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ! '>='
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ required_rubygems_version: !ruby/object:Gem::Requirement
251
250
  none: false
252
- requirements:
253
- - - ">="
254
- - !ruby/object:Gem::Version
251
+ requirements:
252
+ - - ! '>='
253
+ - !ruby/object:Gem::Version
255
254
  version: 1.3.6
256
255
  requirements: []
257
-
258
256
  rubyforge_project:
259
- rubygems_version: 1.8.10
257
+ rubygems_version: 1.8.12
260
258
  signing_key:
261
259
  specification_version: 3
262
260
  summary: OAuth 2.0 Server & Client Library - Both Bearer and MAC token type are supported
263
- test_files:
261
+ test_files:
264
262
  - spec/helpers/time.rb
265
263
  - spec/helpers/webmock_helper.rb
266
264
  - spec/mock_response/errors/invalid_request.json