omniauth_openid_connect 0.3.0 → 0.3.1
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +58 -0
- data/.travis.yml +1 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +2 -0
- data/Guardfile +5 -3
- data/lib/omniauth/openid_connect.rb +2 -0
- data/lib/omniauth/openid_connect/errors.rb +2 -0
- data/lib/omniauth/openid_connect/version.rb +3 -1
- data/lib/omniauth/strategies/openid_connect.rb +65 -59
- data/lib/omniauth_openid_connect.rb +2 -0
- data/omniauth_openid_connect.gemspec +12 -11
- data/test/lib/omniauth/strategies/openid_connect_test.rb +3 -3
- metadata +39 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a57713d348ab1dcc7869b8d10ed8b616958019a0c7003a0b5e43e00e85650b0a
|
4
|
+
data.tar.gz: e6ff5320c65348937e7fa2cf140aff27f89957415ded839debcd645e01031353
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5664e73c24e1521b4b29461eb3ee558dfb143d75322c83f2c3d3f3ee48cd24c8e99f1a348915de574abb1b907103de948cf0c16ebfebd11fa13a2e8206f13d78
|
7
|
+
data.tar.gz: 272a32b0b75f54ca1d861fe361c380d6ee2d9170b9862322f7e9b6edd12e7e2a9cfc37db95b2b549896f9ebc1d6e90272ec0a24cefc4ed195ccc90edff5476d5
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
LineLength:
|
2
|
+
Description: 'Limit lines to 130 characters.'
|
3
|
+
Max: 130
|
4
|
+
|
5
|
+
Layout/SpaceInsideStringInterpolation:
|
6
|
+
Enabled: false
|
7
|
+
|
8
|
+
Layout/MultilineOperationIndentation:
|
9
|
+
EnforcedStyle: indented
|
10
|
+
|
11
|
+
StringLiterals:
|
12
|
+
EnforcedStyle: single_quotes
|
13
|
+
|
14
|
+
Style/TrailingCommaInArrayLiteral:
|
15
|
+
EnforcedStyleForMultiline: comma
|
16
|
+
Style/TrailingCommaInHashLiteral:
|
17
|
+
EnforcedStyleForMultiline: comma
|
18
|
+
|
19
|
+
Style/SafeNavigation:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
Style/EmptyMethod:
|
23
|
+
Description: 'Checks the formatting of empty method definitions.'
|
24
|
+
StyleGuide: '#no-single-line-methods'
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
HashSyntax:
|
28
|
+
Description: "Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax\n{ :a => 1, :b => 2 }"
|
29
|
+
EnforcedStyle: ruby19
|
30
|
+
Enabled: true
|
31
|
+
|
32
|
+
RedundantBegin:
|
33
|
+
Enabled: true
|
34
|
+
|
35
|
+
Documentation:
|
36
|
+
Enabled: false
|
37
|
+
|
38
|
+
Metrics/AbcSize:
|
39
|
+
Max: 50
|
40
|
+
|
41
|
+
Metrics/CyclomaticComplexity:
|
42
|
+
Max: 50
|
43
|
+
|
44
|
+
Metrics/PerceivedComplexity:
|
45
|
+
Max: 15
|
46
|
+
|
47
|
+
Metrics/BlockLength:
|
48
|
+
Max: 40
|
49
|
+
|
50
|
+
Metrics/MethodLength:
|
51
|
+
Max: 45
|
52
|
+
|
53
|
+
AllCops:
|
54
|
+
Exclude:
|
55
|
+
- bin/**/*
|
56
|
+
- Rakefile
|
57
|
+
- config/**/*
|
58
|
+
- test/**/*
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Guardfile
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# A sample Guardfile
|
2
4
|
# More info at https://github.com/guard/guard#readme
|
3
5
|
|
4
6
|
guard 'minitest' do
|
5
7
|
# with Minitest::Unit
|
6
|
-
watch(%r
|
7
|
-
watch(%r
|
8
|
-
watch(%r
|
8
|
+
watch(%r{^test/(.*)\/(.*)_test\.rb})
|
9
|
+
watch(%r{^lib/(.*)\.rb}) { |m| "test/lib/#{m[1]}_test.rb" }
|
10
|
+
watch(%r{^test/test_helper\.rb}) { 'test' }
|
9
11
|
end
|
10
12
|
|
11
13
|
guard :bundler do
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'addressable/uri'
|
2
4
|
require 'timeout'
|
3
5
|
require 'net/http'
|
@@ -14,30 +16,30 @@ module OmniAuth
|
|
14
16
|
|
15
17
|
def_delegator :request, :params
|
16
18
|
|
17
|
-
option :
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
19
|
+
option :name, 'openid_connect'
|
20
|
+
option(:client_options, identifier: nil,
|
21
|
+
secret: nil,
|
22
|
+
redirect_uri: nil,
|
23
|
+
scheme: 'https',
|
24
|
+
host: nil,
|
25
|
+
port: 443,
|
26
|
+
authorization_endpoint: '/authorize',
|
27
|
+
token_endpoint: '/token',
|
28
|
+
userinfo_endpoint: '/userinfo',
|
29
|
+
jwks_uri: '/jwk',
|
30
|
+
end_session_endpoint: nil)
|
31
|
+
|
30
32
|
option :issuer
|
31
33
|
option :discovery, false
|
32
34
|
option :client_signing_alg
|
33
35
|
option :client_jwk_signing_key
|
34
36
|
option :client_x509_signing_key
|
35
37
|
option :scope, [:openid]
|
36
|
-
option :response_type,
|
38
|
+
option :response_type, 'code'
|
37
39
|
option :state
|
38
40
|
option :response_mode
|
39
|
-
option :display, nil
|
40
|
-
option :prompt, nil
|
41
|
+
option :display, nil # [:page, :popup, :touch, :wap]
|
42
|
+
option :prompt, nil # [:none, :login, :consent, :select_account]
|
41
43
|
option :hd, nil
|
42
44
|
option :max_age
|
43
45
|
option :ui_locales
|
@@ -66,7 +68,7 @@ module OmniAuth
|
|
66
68
|
gender: user_info.gender,
|
67
69
|
image: user_info.picture,
|
68
70
|
phone: user_info.phone_number,
|
69
|
-
urls: { website: user_info.website }
|
71
|
+
urls: { website: user_info.website },
|
70
72
|
}
|
71
73
|
end
|
72
74
|
|
@@ -80,7 +82,7 @@ module OmniAuth
|
|
80
82
|
token: access_token.access_token,
|
81
83
|
refresh_token: access_token.refresh_token,
|
82
84
|
expires_in: access_token.expires_in,
|
83
|
-
scope: access_token.scope
|
85
|
+
scope: access_token.scope,
|
84
86
|
}
|
85
87
|
end
|
86
88
|
|
@@ -93,27 +95,28 @@ module OmniAuth
|
|
93
95
|
end
|
94
96
|
|
95
97
|
def request_phase
|
96
|
-
options.issuer = issuer if options.issuer.
|
98
|
+
options.issuer = issuer if options.issuer.to_s.empty?
|
97
99
|
discover!
|
98
100
|
redirect authorize_uri
|
99
101
|
end
|
100
102
|
|
101
103
|
def callback_phase
|
102
104
|
error = params['error_reason'] || params['error']
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
105
|
+
error_description = params['error_description'] || params['error_reason']
|
106
|
+
invalid_state = params['state'].to_s.empty? || params['state'] != stored_state
|
107
|
+
|
108
|
+
raise CallbackError.new(params['error'], error_description, params['error_uri']) if error
|
109
|
+
|
110
|
+
raise CallbackError, 'Invalid state parameter' if invalid_state
|
111
|
+
|
112
|
+
return fail!(:missing_code, OmniAuth::OpenIDConnect::MissingCodeError.new(params['error'])) unless params['code']
|
113
|
+
|
114
|
+
options.issuer = issuer if options.issuer.nil? || options.issuer.empty?
|
115
|
+
discover!
|
116
|
+
client.redirect_uri = redirect_uri
|
117
|
+
client.authorization_code = authorization_code
|
118
|
+
access_token
|
119
|
+
super
|
117
120
|
rescue CallbackError, ::Rack::OAuth2::Client::Error => e
|
118
121
|
fail!(:invalid_credentials, e)
|
119
122
|
rescue ::Timeout::Error, ::Errno::ETIMEDOUT => e
|
@@ -124,7 +127,7 @@ module OmniAuth
|
|
124
127
|
|
125
128
|
def other_phase
|
126
129
|
if logout_path_pattern.match?(current_path)
|
127
|
-
options.issuer = issuer if options.issuer.
|
130
|
+
options.issuer = issuer if options.issuer.to_s.empty?
|
128
131
|
discover!
|
129
132
|
return redirect(end_session_uri) if end_session_uri
|
130
133
|
end
|
@@ -137,6 +140,7 @@ module OmniAuth
|
|
137
140
|
|
138
141
|
def end_session_uri
|
139
142
|
return unless end_session_endpoint_is_valid?
|
143
|
+
|
140
144
|
end_session_uri = URI(client_options.end_session_endpoint)
|
141
145
|
end_session_uri.query = encoded_post_logout_redirect_uri
|
142
146
|
end_session_uri.to_s
|
@@ -155,11 +159,12 @@ module OmniAuth
|
|
155
159
|
nonce: (new_nonce if options.send_nonce),
|
156
160
|
hd: options.hd,
|
157
161
|
}
|
158
|
-
client.authorization_uri(opts.reject { |
|
162
|
+
client.authorization_uri(opts.reject { |_k, v| v.nil? })
|
159
163
|
end
|
160
164
|
|
161
165
|
def public_key
|
162
166
|
return config.jwks if options.discovery
|
167
|
+
|
163
168
|
key_or_secret
|
164
169
|
end
|
165
170
|
|
@@ -173,6 +178,7 @@ module OmniAuth
|
|
173
178
|
|
174
179
|
def discover!
|
175
180
|
return unless options.discovery
|
181
|
+
|
176
182
|
client_options.authorization_endpoint = config.authorization_endpoint
|
177
183
|
client_options.token_endpoint = config.token_endpoint
|
178
184
|
client_options.userinfo_endpoint = config.userinfo_endpoint
|
@@ -185,19 +191,19 @@ module OmniAuth
|
|
185
191
|
end
|
186
192
|
|
187
193
|
def access_token
|
188
|
-
@access_token
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
194
|
+
return @access_token if @access_token
|
195
|
+
|
196
|
+
@access_token = client.access_token!(
|
197
|
+
scope: (options.scope if options.send_scope_to_token_endpoint),
|
198
|
+
client_auth_method: options.client_auth_method
|
199
|
+
)
|
200
|
+
id_token = decode_id_token(@access_token.id_token)
|
201
|
+
id_token.verify!(
|
202
|
+
issuer: options.issuer,
|
203
|
+
client_id: client_options.identifier,
|
204
|
+
nonce: stored_nonce
|
205
|
+
)
|
206
|
+
@access_token
|
201
207
|
end
|
202
208
|
|
203
209
|
def decode_id_token(id_token)
|
@@ -233,20 +239,20 @@ module OmniAuth
|
|
233
239
|
|
234
240
|
def session
|
235
241
|
return {} if @env.nil?
|
242
|
+
|
236
243
|
super
|
237
244
|
end
|
238
245
|
|
239
246
|
def key_or_secret
|
240
247
|
case options.client_signing_alg
|
241
248
|
when :HS256, :HS384, :HS512
|
242
|
-
|
249
|
+
client_options.secret
|
243
250
|
when :RS256, :RS384, :RS512
|
244
251
|
if options.client_jwk_signing_key
|
245
|
-
|
252
|
+
parse_jwk_key(options.client_jwk_signing_key)
|
246
253
|
elsif options.client_x509_signing_key
|
247
|
-
|
254
|
+
parse_x509_key(options.client_x509_signing_key)
|
248
255
|
end
|
249
|
-
else
|
250
256
|
end
|
251
257
|
end
|
252
258
|
|
@@ -256,24 +262,24 @@ module OmniAuth
|
|
256
262
|
|
257
263
|
def parse_jwk_key(key)
|
258
264
|
json = JSON.parse(key)
|
259
|
-
if json.
|
260
|
-
|
261
|
-
|
262
|
-
JSON::JWK.new json
|
263
|
-
end
|
265
|
+
return JSON::JWK::Set.new(json['keys']) if json.key?('keys')
|
266
|
+
|
267
|
+
JSON::JWK.new(json)
|
264
268
|
end
|
265
269
|
|
266
270
|
def decode(str)
|
267
|
-
UrlSafeBase64.decode64(str).
|
271
|
+
UrlSafeBase64.decode64(str).unpack1('B*').to_i(2).to_s
|
268
272
|
end
|
269
273
|
|
270
274
|
def redirect_uri
|
271
275
|
return client_options.redirect_uri unless params['redirect_uri']
|
276
|
+
|
272
277
|
"#{ client_options.redirect_uri }?redirect_uri=#{ CGI.escape(params['redirect_uri']) }"
|
273
278
|
end
|
274
279
|
|
275
280
|
def encoded_post_logout_redirect_uri
|
276
281
|
return unless options.post_logout_redirect_uri
|
282
|
+
|
277
283
|
URI.encode_www_form(
|
278
284
|
post_logout_redirect_uri: options.post_logout_redirect_uri
|
279
285
|
)
|
@@ -291,7 +297,7 @@ module OmniAuth
|
|
291
297
|
class CallbackError < StandardError
|
292
298
|
attr_accessor :error, :error_reason, :error_uri
|
293
299
|
|
294
|
-
def initialize(error, error_reason=nil, error_uri=nil)
|
300
|
+
def initialize(error, error_reason = nil, error_uri = nil)
|
295
301
|
self.error = error
|
296
302
|
self.error_reason = error_reason
|
297
303
|
self.error_uri = error_uri
|
@@ -1,5 +1,6 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'omniauth/openid_connect/version'
|
5
6
|
|
@@ -14,21 +15,21 @@ Gem::Specification.new do |spec|
|
|
14
15
|
spec.license = 'MIT'
|
15
16
|
|
16
17
|
spec.files = `git ls-files -z`.split("\x0")
|
17
|
-
spec.executables = spec.files.grep(%r
|
18
|
-
spec.test_files = spec.files.grep(%r
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
20
|
spec.require_paths = ['lib']
|
20
21
|
|
22
|
+
spec.add_dependency 'addressable', '~> 2.5'
|
21
23
|
spec.add_dependency 'omniauth', '~> 1.3'
|
22
24
|
spec.add_dependency 'openid_connect', '~> 1.1'
|
23
|
-
spec.
|
24
|
-
spec.add_development_dependency '
|
25
|
-
spec.add_development_dependency 'mocha', '~> 1.7'
|
25
|
+
spec.add_development_dependency 'coveralls', '~> 0.8'
|
26
|
+
spec.add_development_dependency 'faker', '~> 1.6'
|
26
27
|
spec.add_development_dependency 'guard', '~> 2.14'
|
28
|
+
spec.add_development_dependency 'guard-bundler', '~> 2.2'
|
27
29
|
spec.add_development_dependency 'guard-minitest', '~> 2.4'
|
28
|
-
spec.add_development_dependency '
|
30
|
+
spec.add_development_dependency 'minitest', '~> 5.1'
|
31
|
+
spec.add_development_dependency 'mocha', '~> 1.7'
|
29
32
|
spec.add_development_dependency 'rake', '~> 12.0'
|
33
|
+
spec.add_development_dependency 'rubocop', '~> 0.63'
|
30
34
|
spec.add_development_dependency 'simplecov', '~> 0.12'
|
31
|
-
spec.add_development_dependency 'pry', '~> 0.9'
|
32
|
-
spec.add_development_dependency 'coveralls', '~> 0.8'
|
33
|
-
spec.add_development_dependency 'faker', '~> 1.6'
|
34
35
|
end
|
@@ -35,7 +35,7 @@ module OmniAuth
|
|
35
35
|
config.stubs(:end_session_endpoint).returns('https://example.com/logout')
|
36
36
|
::OpenIDConnect::Discovery::Provider::Config.stubs(:discover!).with('https://example.com/').returns(config)
|
37
37
|
|
38
|
-
request.stubs(:path_info).returns('/auth/
|
38
|
+
request.stubs(:path_info).returns('/auth/openid_connect/logout')
|
39
39
|
|
40
40
|
strategy.expects(:redirect).with(regexp_matches(expected_redirect))
|
41
41
|
strategy.other_phase
|
@@ -59,7 +59,7 @@ module OmniAuth
|
|
59
59
|
config.stubs(:end_session_endpoint).returns('https://example.com/logout')
|
60
60
|
::OpenIDConnect::Discovery::Provider::Config.stubs(:discover!).with('https://example.com/').returns(config)
|
61
61
|
|
62
|
-
request.stubs(:path_info).returns('/auth/
|
62
|
+
request.stubs(:path_info).returns('/auth/openid_connect/logout')
|
63
63
|
|
64
64
|
strategy.expects(:redirect).with(expected_redirect)
|
65
65
|
strategy.other_phase
|
@@ -69,7 +69,7 @@ module OmniAuth
|
|
69
69
|
strategy.options.issuer = 'example.com'
|
70
70
|
strategy.options.client_options.host = 'example.com'
|
71
71
|
|
72
|
-
request.stubs(:path_info).returns('/auth/
|
72
|
+
request.stubs(:path_info).returns('/auth/openid_connect/logout')
|
73
73
|
|
74
74
|
strategy.expects(:call_app!)
|
75
75
|
strategy.other_phase
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth_openid_connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Bohn
|
@@ -9,78 +9,78 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-06-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: addressable
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '2.5'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '2.5'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: omniauth
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '1.
|
34
|
+
version: '1.3'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '1.
|
41
|
+
version: '1.3'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: openid_connect
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '1.1'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '1.1'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: coveralls
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
62
|
+
version: '0.8'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '0.8'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: faker
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '1.
|
76
|
+
version: '1.6'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '1.
|
83
|
+
version: '1.6'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: guard
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,103 +96,103 @@ dependencies:
|
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '2.14'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
|
-
name: guard-
|
99
|
+
name: guard-bundler
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '2.
|
104
|
+
version: '2.2'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '2.
|
111
|
+
version: '2.2'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
|
-
name: guard-
|
113
|
+
name: guard-minitest
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
116
|
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: '2.
|
118
|
+
version: '2.4'
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
123
|
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: '2.
|
125
|
+
version: '2.4'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
127
|
+
name: minitest
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
130
|
- - "~>"
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: '
|
132
|
+
version: '5.1'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
137
|
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: '
|
139
|
+
version: '5.1'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
141
|
+
name: mocha
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
146
|
+
version: '1.7'
|
147
147
|
type: :development
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
151
|
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: '
|
153
|
+
version: '1.7'
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
|
-
name:
|
155
|
+
name: rake
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
158
|
- - "~>"
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version: '0
|
160
|
+
version: '12.0'
|
161
161
|
type: :development
|
162
162
|
prerelease: false
|
163
163
|
version_requirements: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
165
|
- - "~>"
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version: '0
|
167
|
+
version: '12.0'
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
|
-
name:
|
169
|
+
name: rubocop
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
172
|
- - "~>"
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version: '0.
|
174
|
+
version: '0.63'
|
175
175
|
type: :development
|
176
176
|
prerelease: false
|
177
177
|
version_requirements: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
179
179
|
- - "~>"
|
180
180
|
- !ruby/object:Gem::Version
|
181
|
-
version: '0.
|
181
|
+
version: '0.63'
|
182
182
|
- !ruby/object:Gem::Dependency
|
183
|
-
name:
|
183
|
+
name: simplecov
|
184
184
|
requirement: !ruby/object:Gem::Requirement
|
185
185
|
requirements:
|
186
186
|
- - "~>"
|
187
187
|
- !ruby/object:Gem::Version
|
188
|
-
version: '
|
188
|
+
version: '0.12'
|
189
189
|
type: :development
|
190
190
|
prerelease: false
|
191
191
|
version_requirements: !ruby/object:Gem::Requirement
|
192
192
|
requirements:
|
193
193
|
- - "~>"
|
194
194
|
- !ruby/object:Gem::Version
|
195
|
-
version: '
|
195
|
+
version: '0.12'
|
196
196
|
description: OpenID Connect Strategy for OmniAuth.
|
197
197
|
email:
|
198
198
|
- jjbohn@gmail.com
|
@@ -202,6 +202,7 @@ extensions: []
|
|
202
202
|
extra_rdoc_files: []
|
203
203
|
files:
|
204
204
|
- ".gitignore"
|
205
|
+
- ".rubocop.yml"
|
205
206
|
- ".travis.yml"
|
206
207
|
- CHANGELOG.md
|
207
208
|
- Gemfile
|