omniauth-dice 0.2.1 → 0.2.2
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
- checksums.yaml.gz.sig +2 -4
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +28 -0
- data/.travis.yml +4 -8
- data/README.md +1 -1
- data/Rakefile +1 -4
- data/lib/omniauth/dice/version.rb +3 -1
- data/lib/omniauth/strategies/dice.rb +45 -41
- data/lib/omniauth-dice.rb +2 -0
- data/lib/string.rb +4 -4
- data/omniauth-dice.gemspec +13 -9
- data/spec/omniauth/strategies/dice_integrations_spec.rb +3 -3
- data/spec/omniauth/strategies/dice_spec.rb +4 -4
- data/spec/spec_helper.rb +4 -5
- data.tar.gz.sig +1 -1
- metadata +9 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cccb953b0986b8fc29ff2de197253aeed50f5333
|
4
|
+
data.tar.gz: eec5d53a5a4d955873f7202761c08dd01a55c4fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8900202b7364d2ca8737c1dd5d697fa4b7ee1c45e364be9b6fbab98681545ea81136d17d0c7fad04a401df25f9c16619a269791c27dfe878a57284f02314ad2d
|
7
|
+
data.tar.gz: 829c9b3b3963c7c23835e2da9f28001f5af1b4761527254df53f599cb66beed03534a1b111bb5e4a5e05e5a4567432a02885ee0883e975721425440eba5529c9
|
checksums.yaml.gz.sig
CHANGED
@@ -1,4 +1,2 @@
|
|
1
|
-
G
|
2
|
-
|
3
|
-
��ڬ�o>����M�\�r>���6�g��j���4�$����
|
4
|
-
��"������JM12�K�&���Dx��Z�@&���u��rS�*�Z]��,3h��I;y�6��P�@y{DzeZu���l�#�����pF9�����Z)�"�O�;�D1��A�3��5�@Qu���{,�a���ʍ�݊��.]֫� � p}w9F�Ȭb��&
|
1
|
+
�R-:k��'ޑܓ���H��*�=g���'|Z+��F,5�J�'ǜ��22�:�QY���@�}�~:���:��dn��:�G�f����&�7�Z�2�9�_U�OQ�����a\�RJ�k$>���=(�d����3M���4>b���9��j0/<��8dzk9�};�(���B7w����'��(�c��b^vz&��b���T�P���5.�4���
|
2
|
+
�������kg����Aؗb���˙D���d�M����
|
data/.rubocop.yml
CHANGED
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2015-08-10 15:52:39 -0400 using RuboCop version 0.28.0.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
# Offense count: 2
|
9
|
+
Metrics/AbcSize:
|
10
|
+
Max: 17
|
11
|
+
|
12
|
+
# Offense count: 1
|
13
|
+
# Configuration parameters: CountComments.
|
14
|
+
Metrics/ClassLength:
|
15
|
+
Max: 273
|
16
|
+
|
17
|
+
# Offense count: 1
|
18
|
+
Metrics/CyclomaticComplexity:
|
19
|
+
Max: 7
|
20
|
+
|
21
|
+
# Offense count: 3
|
22
|
+
# Configuration parameters: CountComments.
|
23
|
+
Metrics/MethodLength:
|
24
|
+
Max: 12
|
25
|
+
|
26
|
+
# Offense count: 1
|
27
|
+
Style/AccessorMethodName:
|
28
|
+
Enabled: false
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Omniauth::Dice [](http://badge.fury.io/rb/omniauth-dice)
|
2
2
|
|
3
|
-
[](https://travis-ci.org/stevenhaddox/omniauth-dice) [](https://gemnasium.com/stevenhaddox/omniauth-dice) [](https://travis-ci.org/stevenhaddox/omniauth-dice) [](https://gemnasium.com/stevenhaddox/omniauth-dice) [](https://codeclimate.com/github/stevenhaddox/omniauth-dice/coverage) [](https://codeclimate.com/github/stevenhaddox/omniauth-dice) [](http://inch-ci.org/github/stevenhaddox/omniauth-dice)
|
4
4
|
|
5
5
|
# **D**N **I**nteroperable **C**onversion **E**xpert
|
6
6
|
|
data/Rakefile
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rspec/core/rake_task'
|
3
3
|
require 'rubocop/rake_task'
|
4
|
-
require 'coveralls/rake/task'
|
5
|
-
Coveralls::RakeTask.new
|
6
4
|
|
7
|
-
|
8
|
-
task default: [:spec, 'coveralls:push']
|
5
|
+
task default: [:spec, :rubocop]
|
9
6
|
|
10
7
|
desc 'Run specs'
|
11
8
|
RSpec::Core::RakeTask.new(:spec)
|
@@ -7,9 +7,10 @@ require 'dnc'
|
|
7
7
|
|
8
8
|
class RequiredCustomParamError < StandardError; end
|
9
9
|
|
10
|
+
# OmniAuth Dice strategy
|
10
11
|
module OmniAuth
|
12
|
+
# OmniAuth Dice strategy
|
11
13
|
module Strategies
|
12
|
-
|
13
14
|
#
|
14
15
|
# Provides omniauth authentication integration with a CAS server
|
15
16
|
#
|
@@ -98,12 +99,12 @@ module OmniAuth
|
|
98
99
|
|
99
100
|
def auth_hash
|
100
101
|
log :debug, '.auth_hash'
|
101
|
-
Hashie::Mash.new(
|
102
|
+
Hashie::Mash.new(
|
102
103
|
'provider' => name,
|
103
104
|
'uid' => uid,
|
104
105
|
'info' => info,
|
105
106
|
'extra' => extra
|
106
|
-
|
107
|
+
)
|
107
108
|
end
|
108
109
|
|
109
110
|
# Set the user's uid field for the auth_hash
|
@@ -156,7 +157,7 @@ module OmniAuth
|
|
156
157
|
def authenticate_user
|
157
158
|
issuer_dn = env['omniauth.params']['issuer_dn']
|
158
159
|
if issuer_dn
|
159
|
-
response = connection.get query_url,
|
160
|
+
response = connection.get query_url, issuerDn: issuer_dn
|
160
161
|
else
|
161
162
|
response = connection.get query_url
|
162
163
|
end
|
@@ -197,7 +198,7 @@ module OmniAuth
|
|
197
198
|
def auth_info_custom(info)
|
198
199
|
info['common_name'] = get_dn(info['dn']).cn
|
199
200
|
set_name(info)
|
200
|
-
|
201
|
+
includes_primary_visa?(info)
|
201
202
|
info['likely_npe?'] = identify_npe(info)
|
202
203
|
|
203
204
|
info
|
@@ -208,19 +209,19 @@ module OmniAuth
|
|
208
209
|
# Do NOT override the value if it's returned from the CAS server
|
209
210
|
return info['name'] if info['name']
|
210
211
|
info['name'] = case options.name_format
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
212
|
+
when :cn
|
213
|
+
info['common_name']
|
214
|
+
when :full_name
|
215
|
+
info['full_name']
|
216
|
+
when :first_last_name
|
217
|
+
"#{info['first_name']} #{info['last_name']}"
|
218
|
+
end
|
218
219
|
info['name'] ||= info['common_name'] || info['full_name'] ||
|
219
220
|
"#{info['first_name']} #{info['last_name']}"
|
220
221
|
end
|
221
222
|
|
222
223
|
# Determine if client has the primary visa
|
223
|
-
def
|
224
|
+
def includes_primary_visa?(info)
|
224
225
|
return info['primary_visa?'] = false unless info['visas']
|
225
226
|
return info['primary_visa?'] = false unless options.primary_visa
|
226
227
|
info['primary_visa?'] = info['visas'].include?(options.primary_visa)
|
@@ -237,12 +238,12 @@ module OmniAuth
|
|
237
238
|
|
238
239
|
# Identify if there's a domain w/ TLD in the common_name
|
239
240
|
def auth_cn_with_tld?(common_name)
|
240
|
-
|
241
|
+
/\w{2}\.\w+(\.\w{3,}+)?/.match(common_name).nil? ? false : true
|
241
242
|
end
|
242
243
|
|
243
244
|
# Determine if the auth_hash does not have an email address
|
244
245
|
def auth_info_missing_email?(info)
|
245
|
-
!(
|
246
|
+
!(info['email']) # !! returns false if no email, ! returns true
|
246
247
|
end
|
247
248
|
|
248
249
|
# Determine if the auth_hash has an email but no name fields
|
@@ -259,16 +260,12 @@ module OmniAuth
|
|
259
260
|
|
260
261
|
# Determine if any name fields are present in the auth_hash['info']
|
261
262
|
def auth_info_has_any_name?(info)
|
262
|
-
|
263
|
-
name ||= info['first_name']
|
264
|
-
name ||= info['last_name']
|
265
|
-
!!(name)
|
263
|
+
[info['full_name'], info['first_name'], info['last_name']].any?
|
266
264
|
end
|
267
265
|
|
268
266
|
# Coordinate getting DN from cert, fallback to header
|
269
|
-
def get_dn_by_type(type='subject')
|
270
|
-
|
271
|
-
raw_dn ||= get_dn_from_header(type)
|
267
|
+
def get_dn_by_type(type = 'subject')
|
268
|
+
get_dn_from_certificate(type) || get_dn_from_header(type)
|
272
269
|
end
|
273
270
|
|
274
271
|
# Reads the DN from headers
|
@@ -298,7 +295,7 @@ module OmniAuth
|
|
298
295
|
end
|
299
296
|
|
300
297
|
# Parse the DN out of an SSL X509 Client Certificate
|
301
|
-
def parse_dn_from_certificate(certificate, type='subject')
|
298
|
+
def parse_dn_from_certificate(certificate, type = 'subject')
|
302
299
|
certificate.send(type.to_sym).to_s
|
303
300
|
end
|
304
301
|
|
@@ -307,11 +304,11 @@ module OmniAuth
|
|
307
304
|
log :debug, '.connection'
|
308
305
|
|
309
306
|
@conn ||= Faraday.new(url: options.cas_server, ssl: ssl_hash) do |conn|
|
310
|
-
conn.headers
|
307
|
+
conn.headers = headers
|
311
308
|
conn.response :logger # log requests to STDOUT
|
312
|
-
conn.response :xml, :
|
313
|
-
conn.response :json, :
|
314
|
-
conn.adapter
|
309
|
+
conn.response :xml, content_type: /\bxml$/
|
310
|
+
conn.response :json, content_type: /\bjson$/
|
311
|
+
conn.adapter :excon
|
315
312
|
end
|
316
313
|
end
|
317
314
|
|
@@ -326,17 +323,26 @@ module OmniAuth
|
|
326
323
|
|
327
324
|
# Build out the query URL for CAS server with DN params
|
328
325
|
def query_url
|
329
|
-
user_dn
|
330
|
-
build_query
|
326
|
+
user_dn = env['omniauth.params']['user_dn']
|
327
|
+
build_query = "#{options.cas_server}#{options.authentication_path}"
|
331
328
|
build_query += "/#{user_dn}"
|
332
329
|
build_query += "/#{options.return_field}.#{options.format}"
|
333
|
-
URI
|
330
|
+
URI.encode(build_query)
|
334
331
|
end
|
335
332
|
|
336
333
|
# Detect data format, parse with appropriate library
|
337
334
|
def parse_response_data
|
338
335
|
log :debug, '.parse_response_data'
|
339
336
|
log :debug, "cas_server response.body:\r\n#{@raw_data}"
|
337
|
+
formatted_data = format_data
|
338
|
+
formatted_data = formatted_data.nil? ? @raw_data : formatted_data
|
339
|
+
log :debug, "Formatted response.body: #{formatted_data}"
|
340
|
+
|
341
|
+
formatted_data
|
342
|
+
end
|
343
|
+
|
344
|
+
# Parse data by specified format
|
345
|
+
def format_data
|
340
346
|
formatted_data = nil
|
341
347
|
unless @raw_data.class == Hash # Webmock hack
|
342
348
|
case options.format.to_sym
|
@@ -346,21 +352,19 @@ module OmniAuth
|
|
346
352
|
formatted_data = MultiXml.parse(@raw_data)['userinfo']
|
347
353
|
end
|
348
354
|
end
|
349
|
-
formatted_data = formatted_data.nil? ? @raw_data : formatted_data
|
350
|
-
log :debug, "Formatted response.body data: #{formatted_data}"
|
351
355
|
|
352
356
|
formatted_data
|
353
357
|
end
|
354
358
|
|
355
|
-
def set_session_dn(dn_string, type='subject')
|
359
|
+
def set_session_dn(dn_string, type = 'subject')
|
356
360
|
dn_type = case type
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
361
|
+
when 'subject'
|
362
|
+
'user_dn'
|
363
|
+
when 'issuer'
|
364
|
+
'issuer_dn'
|
365
|
+
else
|
366
|
+
fail 'Invalid DN string type'
|
367
|
+
end
|
364
368
|
session['omniauth.params'] ||= {}
|
365
369
|
session['omniauth.params'][dn_type] = dn_string
|
366
370
|
end
|
@@ -399,7 +403,7 @@ module OmniAuth
|
|
399
403
|
custom_order = %w(cn l st ou o c street dc uid)
|
400
404
|
default_opts = { dn_string: dn_str, string_order: custom_order }
|
401
405
|
dnc_config = unhashie(options.dnc_options)
|
402
|
-
DN.new(
|
406
|
+
DN.new(default_opts.merge(dnc_config))
|
403
407
|
end
|
404
408
|
end
|
405
409
|
end
|
data/lib/omniauth-dice.rb
CHANGED
data/lib/string.rb
CHANGED
@@ -4,9 +4,9 @@
|
|
4
4
|
class String
|
5
5
|
# Attempts to convert a string into a formatted_snake_case_string
|
6
6
|
def to_snake
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
8
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
9
|
+
.tr('-', '_')
|
10
|
+
.downcase
|
11
11
|
end
|
12
12
|
end
|
data/omniauth-dice.gemspec
CHANGED
@@ -8,22 +8,24 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Omniauth::Dice::VERSION
|
9
9
|
spec.authors = ['Steven Haddox']
|
10
10
|
spec.email = ['steven.haddox@gmail.com']
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
|
14
|
-
|
11
|
+
spec.summary = 'DN Interoperable Conversion Expert Strategy'
|
12
|
+
spec.description = 'Simple gem to enable rack powered Ruby apps to
|
13
|
+
authenticate via REST with an enterprise CAS authentication server via X509
|
14
|
+
client certificates.'
|
15
|
+
spec.homepage = 'https://github.com/stevenhaddox/omniauth-dice'
|
16
|
+
spec.license = 'MIT'
|
15
17
|
|
16
18
|
spec.files = `git ls-files -z`.split("\x0")
|
17
|
-
spec.executables = spec.files.grep(
|
18
|
-
spec.test_files = spec.files.grep(
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
20
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
21
|
+
spec.require_paths = ['lib']
|
20
22
|
|
21
23
|
spec.required_ruby_version = '>= 1.9.3'
|
22
24
|
|
23
25
|
spec.add_development_dependency 'awesome_print'
|
24
26
|
spec.add_development_dependency 'bundler'
|
25
27
|
spec.add_development_dependency 'capybara'
|
26
|
-
spec.add_development_dependency '
|
28
|
+
spec.add_development_dependency 'codeclimate-test-reporter'
|
27
29
|
spec.add_development_dependency 'rack_session_access'
|
28
30
|
spec.add_development_dependency 'redcarpet'
|
29
31
|
spec.add_development_dependency 'rspec'
|
@@ -46,5 +48,7 @@ Gem::Specification.new do |spec|
|
|
46
48
|
spec.add_dependency 'omniauth', '~> 1.0'
|
47
49
|
|
48
50
|
spec.cert_chain = ['certs/stevenhaddox.pem']
|
49
|
-
|
51
|
+
if $PROGRAM_NAME =~ /gem\z/
|
52
|
+
spec.signing_key = File.expand_path('~/.gem/certs/gem-private_key.pem')
|
53
|
+
end
|
50
54
|
end
|
@@ -176,7 +176,7 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
|
|
176
176
|
primary_visa: 'CLOUDSDALE'
|
177
177
|
})
|
178
178
|
|
179
|
-
stub_request(:get, "https://example.org:3000/dn/cn=ruby%20certificate%20rbcert,dc=ruby-lang,dc=org/info.json?
|
179
|
+
stub_request(:get, "https://example.org:3000/dn/cn=ruby%20certificate%20rbcert,dc=ruby-lang,dc=org/info.json?issuerDn=cn=ruby%20ca,dc=ruby-lang,dc=org").
|
180
180
|
with(:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'Host'=>'example.org:3000', 'User-Agent'=>/^Faraday via Ruby.*$/, 'X-Xsrf-Useprotection'=>'false'}).
|
181
181
|
to_return(status: 200, body: valid_user_json, headers: {})
|
182
182
|
end
|
@@ -212,7 +212,7 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
|
|
212
212
|
client_key: 'spec/certs/key.np.pem'
|
213
213
|
}
|
214
214
|
})
|
215
|
-
stub_request(:get, "https://example.org:3000/dn/cn=ruby%20certificate%20rbcert,dc=ruby-lang,dc=org/info.xml?
|
215
|
+
stub_request(:get, "https://example.org:3000/dn/cn=ruby%20certificate%20rbcert,dc=ruby-lang,dc=org/info.xml?issuerDn=cn=ruby%20ca,dc=ruby-lang,dc=org").
|
216
216
|
with(:headers => {'Accept'=>'application/xml', 'Content-Type'=>'application/xml', 'Host'=>'example.org:3000', 'User-Agent'=>/^Faraday via Ruby.*$/, 'X-Xsrf-Useprotection'=>'false'}).
|
217
217
|
to_return(status: 200, body: valid_user_xml, headers: {})
|
218
218
|
|
@@ -234,7 +234,7 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
|
|
234
234
|
|
235
235
|
context 'fail' do
|
236
236
|
it 'should raise a 404 with text for a non-existent user DN' do
|
237
|
-
stub_request(:get, "https://example.org:3000/dn/cn=ruby%20certificate%20rbcert,dc=ruby-lang,dc=org/info.json?
|
237
|
+
stub_request(:get, "https://example.org:3000/dn/cn=ruby%20certificate%20rbcert,dc=ruby-lang,dc=org/info.json?issuerDn=cn=ruby%20ca,dc=ruby-lang,dc=org").
|
238
238
|
with(:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'Host'=>'example.org:3000', 'User-Agent'=>/^Faraday via Ruby.*$/, 'X-Xsrf-Useprotection'=>'false'}).
|
239
239
|
to_return(status: 404, body: "User of dn:cn=ruby certificate rbcert,dc=ruby-lang,dc=org not found", headers: {})
|
240
240
|
|
@@ -81,7 +81,7 @@ describe OmniAuth::Strategies::Dice do
|
|
81
81
|
|
82
82
|
it 'should not set a name field if it is already defined' do
|
83
83
|
dice = OmniAuth::Strategies::Dice.new( app, dice_default_opts )
|
84
|
-
name = dice.send(
|
84
|
+
name = dice.send(:set_name, @info_hash.merge({'name' => 'nightmare moon'}) )
|
85
85
|
expect(name).to eq('nightmare moon')
|
86
86
|
end
|
87
87
|
|
@@ -176,19 +176,19 @@ describe OmniAuth::Strategies::Dice do
|
|
176
176
|
context ".primary_visa?" do
|
177
177
|
it 'should return false if no visas are defined' do
|
178
178
|
dice = OmniAuth::Strategies::Dice.new( app, dice_default_opts.merge({primary_visa: 'EQUESTRIA'}) )
|
179
|
-
visa_present = dice.send( :
|
179
|
+
visa_present = dice.send( :includes_primary_visa?, { } )
|
180
180
|
expect(visa_present).to eq(false)
|
181
181
|
end
|
182
182
|
|
183
183
|
it "should return false if the visa is not present in ['info']['visas']" do
|
184
184
|
dice = OmniAuth::Strategies::Dice.new( app, dice_default_opts.merge({primary_visa: 'EQUESTRIA'}) )
|
185
|
-
visa_present = dice.send( :
|
185
|
+
visa_present = dice.send( :includes_primary_visa?, {'visas' => ['CLOUDSDALE','PONYVILLE']} )
|
186
186
|
expect(visa_present).to eq(false)
|
187
187
|
end
|
188
188
|
|
189
189
|
it "should return true if the visa is present in ['info']['visas']" do
|
190
190
|
dice = OmniAuth::Strategies::Dice.new( app, dice_default_opts.merge({primary_visa: 'EQUESTRIA'}) )
|
191
|
-
visa_present = dice.send( :
|
191
|
+
visa_present = dice.send( :includes_primary_visa?, {'visas' => ['CLOUDSDALE','EQUESTRIA'] } )
|
192
192
|
expect(visa_present).to eq(true)
|
193
193
|
end
|
194
194
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
|
+
require 'codeclimate-test-reporter'
|
2
|
+
CodeClimate::TestReporter.start
|
1
3
|
require 'rubygems'
|
2
4
|
require 'bundler'
|
3
5
|
Bundler.setup :default, :development, :test
|
4
6
|
|
5
|
-
require 'simplecov'
|
6
|
-
SimpleCov.start do
|
7
|
-
add_filter '/spec/'
|
8
|
-
end
|
9
|
-
|
10
7
|
require 'capybara/rspec'
|
11
8
|
require 'rack_session_access'
|
12
9
|
require 'rack_session_access/capybara'
|
@@ -15,6 +12,8 @@ require 'awesome_print'
|
|
15
12
|
require 'rack/test'
|
16
13
|
require 'omniauth-dice'
|
17
14
|
|
15
|
+
# Enable codeclimate coverage reports
|
16
|
+
WebMock.disable_net_connect! allow: %w{codeclimate.com}
|
18
17
|
RSpec.configure do |config|
|
19
18
|
config.run_all_when_everything_filtered = true
|
20
19
|
config.include Rack::Test::Methods
|
data.tar.gz.sig
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
A����_%�u����X�ɟ%��(���K���~��-�vң����=�&"��H au,?a�҂vn4OtN���\l�Ug;�PƢ;[t�6Tv�Gb}tvYd�I�Ԋ^SE�K?p�j9B�I����
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-dice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Haddox
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
42qdwEXvvkODZAD6KAIXPdmbMfBgPbcd+B/4eUA0PyKo+4dgL1NuqX4MPWToevIZ
|
31
31
|
O8EKLF2X7NmC6FY1bOsSj/J8r1SOkx0rxgF+geRvY1P+hfNjDfxTsjU=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2015-
|
33
|
+
date: 2015-08-11 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: awesome_print
|
@@ -75,7 +75,7 @@ dependencies:
|
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
|
-
name:
|
78
|
+
name: codeclimate-test-reporter
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - ">="
|
@@ -354,8 +354,10 @@ dependencies:
|
|
354
354
|
- - "~>"
|
355
355
|
- !ruby/object:Gem::Version
|
356
356
|
version: '1.0'
|
357
|
-
description:
|
358
|
-
|
357
|
+
description: |-
|
358
|
+
Simple gem to enable rack powered Ruby apps to
|
359
|
+
authenticate via REST with an enterprise CAS authentication server via X509
|
360
|
+
client certificates.
|
359
361
|
email:
|
360
362
|
- steven.haddox@gmail.com
|
361
363
|
executables: []
|
@@ -365,6 +367,7 @@ files:
|
|
365
367
|
- ".coveralls.yml"
|
366
368
|
- ".gitignore"
|
367
369
|
- ".rubocop.yml"
|
370
|
+
- ".rubocop_todo.yml"
|
368
371
|
- ".travis.yml"
|
369
372
|
- ".yardopts"
|
370
373
|
- Gemfile
|
@@ -407,7 +410,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
407
410
|
version: '0'
|
408
411
|
requirements: []
|
409
412
|
rubyforge_project:
|
410
|
-
rubygems_version: 2.
|
413
|
+
rubygems_version: 2.4.4
|
411
414
|
signing_key:
|
412
415
|
specification_version: 4
|
413
416
|
summary: DN Interoperable Conversion Expert Strategy
|
metadata.gz.sig
CHANGED
Binary file
|