openid_connect 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile.lock CHANGED
@@ -1,11 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openid_connect (0.0.1)
5
- activemodel
6
- attr_required
7
- jwt
8
- rack-oauth2 (>= 0.9.0)
4
+ openid_connect (0.0.2)
5
+ activemodel (>= 3)
6
+ attr_required (>= 0.0.3)
7
+ json (>= 1.4.3)
8
+ jwt (>= 0.1.3)
9
+ rack-oauth2 (>= 0.9)
9
10
  tzinfo
10
11
  validate_email
11
12
  validate_url
@@ -33,7 +34,7 @@ GEM
33
34
  mime-types (1.16)
34
35
  polyglot (0.3.2)
35
36
  rack (1.3.2)
36
- rack-oauth2 (0.9.0)
37
+ rack-oauth2 (0.9.1)
37
38
  activesupport (>= 2.3)
38
39
  attr_required (>= 0.0.3)
39
40
  httpclient (>= 2.2.0.2)
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 nov matake
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,31 @@
1
+ = OpenIDConnect
2
+
3
+ OpenID Connect Server & Client Library
4
+
5
+ == Installation
6
+
7
+ gem install openid_connect
8
+
9
+ == Resources
10
+
11
+ * View Source on GitHub (http://github.com/nov/openid_connect)
12
+ * Report Issues on GitHub (http://github.com/nov/openid_connect/issues)
13
+
14
+ == Examples
15
+
16
+ * Running on Heroku (https://openid-connect.herokuapp.com)
17
+ * Source on GitHub (https://github.com/nov/openid_connect_sample)
18
+
19
+ == Note on Patches/Pull Requests
20
+
21
+ * Fork the project.
22
+ * Make your feature addition or bug fix.
23
+ * Add tests for it. This is important so I don't break it in a
24
+ future version unintentionally.
25
+ * Commit, do not mess with rakefile, version, or history.
26
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
27
+ * Send me a pull request. Bonus points for topic branches.
28
+
29
+ == Copyright
30
+
31
+ Copyright (c) 2011 nov matake. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -1,5 +1,8 @@
1
+ require 'json'
1
2
  require 'rack/oauth2'
2
3
  require 'rack/oauth2/server/authorize/extension/id_token'
3
4
  require 'rack/oauth2/server/authorize/extension/id_token_and_token'
4
5
 
6
+ require 'openid_connect/client'
7
+ require 'openid_connect/access_token'
5
8
  require 'openid_connect/response_object'
@@ -0,0 +1,38 @@
1
+ module OpenIDConnect
2
+ class AccessToken < Rack::OAuth2::AccessToken::Bearer
3
+ attr_required :client
4
+
5
+ def user_info!(scheme = :openid)
6
+ klass = case scheme
7
+ when :openid
8
+ UserInfo::OpenID
9
+ else
10
+ raise "Unknown Scheme: #{scheme}"
11
+ end
12
+ klass.new resource_request do
13
+ get absolute_uri_for(user_info_endpoint)
14
+ end
15
+ end
16
+
17
+ def id_token!
18
+ IdToken.new resource_request do
19
+ get absolute_uri_for(introspection_endpoint)
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def resource_request
26
+ access_token_requied!
27
+ res = yield
28
+ case res.status
29
+ when 200
30
+ JSON.parse(res.body).with_indifferent_access
31
+ when 401
32
+ raise OpenIDConnect::Unauthorized.new('Access Token Invalid or Expired')
33
+ else
34
+ raise OpenIDConnect::BadRequest.new('API Access Faild')
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,36 @@
1
+ module OpenIDConnect
2
+ class Client < Rack::OAuth2::Client
3
+ attr_optional :introspection_endpoint, :user_info_endpoint
4
+
5
+ def initialize(attributes = {})
6
+ super
7
+ @user_info_endpoint ||= '/user_info'
8
+ @introspection_endpoint ||= '/id_tokens'
9
+ end
10
+
11
+ def authorization_uri(params = {})
12
+ params[:response_type] ||= :token
13
+ params[:scope] = setup_required_scope params[:scope]
14
+ Rack::OAuth2::Util.redirect_uri absolute_uri_for(authorization_endpoint), :query, params.merge(
15
+ :client_id => self.identifier,
16
+ :redirect_uri => self.redirect_uri
17
+ )
18
+ end
19
+
20
+ def access_token!
21
+ token = super
22
+ AccessToken.new token.token_response.merge(:client => self)
23
+ end
24
+
25
+ private
26
+
27
+ def setup_required_scope(scopes)
28
+ scopes = Array(scopes).join(' ').split(' ')
29
+ if scopes.include?('openid')
30
+ scopes
31
+ else
32
+ (scopes << 'openid')
33
+ end.join(' ')
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,30 @@
1
+ module OpenIDConnect
2
+ class Exception < StandardError; end
3
+
4
+ class HttpError < Exception
5
+ attr_accessor :status, :response
6
+ def initialize(status, message, response = nil)
7
+ @status = status
8
+ @message = message
9
+ @response = response
10
+ end
11
+ end
12
+
13
+ class BadRequest < HttpError
14
+ def initialize(message, response = nil)
15
+ super 400, message, response
16
+ end
17
+ end
18
+
19
+ class Unauthorized < HttpError
20
+ def initialize(message, response = nil)
21
+ super 401, message, response
22
+ end
23
+ end
24
+
25
+ class Forbidden < HttpError
26
+ def initialize(message, response = nil)
27
+ super 403, message, response
28
+ end
29
+ end
30
+ end
@@ -10,13 +10,14 @@ Gem::Specification.new do |s|
10
10
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
11
11
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12
12
  s.require_paths = ["lib"]
13
- s.add_runtime_dependency "activemodel"
13
+ s.add_runtime_dependency "activemodel", ">= 3"
14
14
  s.add_runtime_dependency "validate_url"
15
15
  s.add_runtime_dependency "validate_email"
16
16
  s.add_runtime_dependency "tzinfo"
17
- s.add_runtime_dependency "jwt"
18
- s.add_runtime_dependency "attr_required"
19
- s.add_runtime_dependency "rack-oauth2", ">= 0.9.0"
17
+ s.add_runtime_dependency "jwt", ">= 0.1.3"
18
+ s.add_runtime_dependency "json", ">= 1.4.3"
19
+ s.add_runtime_dependency "attr_required", ">= 0.0.3"
20
+ s.add_runtime_dependency "rack-oauth2", ">= 0.9"
20
21
  s.add_development_dependency "rake", ">= 0.8"
21
22
  s.add_development_dependency "rcov", ">= 0.9"
22
23
  s.add_development_dependency "rspec", ">= 2"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: openid_connect
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - nov matake
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-13 00:00:00 Z
13
+ date: 2011-08-15 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: "0"
23
+ version: "3"
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency
@@ -64,64 +64,75 @@ dependencies:
64
64
  requirements:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: "0"
67
+ version: 0.1.3
68
68
  type: :runtime
69
69
  version_requirements: *id005
70
70
  - !ruby/object:Gem::Dependency
71
- name: attr_required
71
+ name: json
72
72
  prerelease: false
73
73
  requirement: &id006 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ">="
77
77
  - !ruby/object:Gem::Version
78
- version: "0"
78
+ version: 1.4.3
79
79
  type: :runtime
80
80
  version_requirements: *id006
81
81
  - !ruby/object:Gem::Dependency
82
- name: rack-oauth2
82
+ name: attr_required
83
83
  prerelease: false
84
84
  requirement: &id007 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.9.0
89
+ version: 0.0.3
90
90
  type: :runtime
91
91
  version_requirements: *id007
92
92
  - !ruby/object:Gem::Dependency
93
- name: rake
93
+ name: rack-oauth2
94
94
  prerelease: false
95
95
  requirement: &id008 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0.9"
101
+ type: :runtime
102
+ version_requirements: *id008
103
+ - !ruby/object:Gem::Dependency
104
+ name: rake
105
+ prerelease: false
106
+ requirement: &id009 !ruby/object:Gem::Requirement
96
107
  none: false
97
108
  requirements:
98
109
  - - ">="
99
110
  - !ruby/object:Gem::Version
100
111
  version: "0.8"
101
112
  type: :development
102
- version_requirements: *id008
113
+ version_requirements: *id009
103
114
  - !ruby/object:Gem::Dependency
104
115
  name: rcov
105
116
  prerelease: false
106
- requirement: &id009 !ruby/object:Gem::Requirement
117
+ requirement: &id010 !ruby/object:Gem::Requirement
107
118
  none: false
108
119
  requirements:
109
120
  - - ">="
110
121
  - !ruby/object:Gem::Version
111
122
  version: "0.9"
112
123
  type: :development
113
- version_requirements: *id009
124
+ version_requirements: *id010
114
125
  - !ruby/object:Gem::Dependency
115
126
  name: rspec
116
127
  prerelease: false
117
- requirement: &id010 !ruby/object:Gem::Requirement
128
+ requirement: &id011 !ruby/object:Gem::Requirement
118
129
  none: false
119
130
  requirements:
120
131
  - - ">="
121
132
  - !ruby/object:Gem::Version
122
133
  version: "2"
123
134
  type: :development
124
- version_requirements: *id010
135
+ version_requirements: *id011
125
136
  description: OpenID Connect Server & Client Library
126
137
  email:
127
138
  - nov@matake.jp
@@ -135,9 +146,14 @@ files:
135
146
  - .gitignore
136
147
  - Gemfile
137
148
  - Gemfile.lock
149
+ - LICENSE
150
+ - README.rdoc
138
151
  - Rakefile
139
152
  - VERSION
140
153
  - lib/openid_connect.rb
154
+ - lib/openid_connect/access_token.rb
155
+ - lib/openid_connect/client.rb
156
+ - lib/openid_connect/exception.rb
141
157
  - lib/openid_connect/response_object.rb
142
158
  - lib/openid_connect/response_object/id_token.rb
143
159
  - lib/openid_connect/response_object/user_info.rb