omniauth-dice 0.2.2 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cccb953b0986b8fc29ff2de197253aeed50f5333
4
- data.tar.gz: eec5d53a5a4d955873f7202761c08dd01a55c4fb
3
+ metadata.gz: aa07835678245eda74c877a01bed7d6ead9fa23f
4
+ data.tar.gz: b0ba3b5276a7b983f0c130c1c41c7d89ca9ee62d
5
5
  SHA512:
6
- metadata.gz: 8900202b7364d2ca8737c1dd5d697fa4b7ee1c45e364be9b6fbab98681545ea81136d17d0c7fad04a401df25f9c16619a269791c27dfe878a57284f02314ad2d
7
- data.tar.gz: 829c9b3b3963c7c23835e2da9f28001f5af1b4761527254df53f599cb66beed03534a1b111bb5e4a5e05e5a4567432a02885ee0883e975721425440eba5529c9
6
+ metadata.gz: a6d78332fde76300334e0c6203a3b57d3e39cb895307eac70a35639d8b6db08e38c004c7bf919ca81621f59019d2ba37de4b131cc1a9d294b07e734e06e6e148
7
+ data.tar.gz: 6b48beb330e949e82c7b0f3bf9ba1ff3fd4a2d84381c4d7b97ef708f39ba2d1d798041ec612ad459280cde95985a90e80f300ee5106bfa2b8ee33823d0132352
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/.rubocop.yml CHANGED
@@ -7,3 +7,4 @@ AllCops:
7
7
  - 'vendor/cache/**/*'
8
8
  - 'vendor/bundle/**/*'
9
9
  - '**/gems/**/*'
10
+ - 'omniauth-dice.gemspec'
data/README.md CHANGED
@@ -11,7 +11,7 @@ a user's X509 certificate DN string to an Enterprise CAS server via REST.
11
11
 
12
12
  Add this line to your application's Gemfile:
13
13
 
14
- gem 'omniauth-dice', '~> 0.1'
14
+ gem 'omniauth-dice', '~> 0.2.2'
15
15
 
16
16
  And then execute:
17
17
 
@@ -2,6 +2,6 @@
2
2
  module Omniauth
3
3
  # Omniauth::Dice version
4
4
  module Dice
5
- VERSION = '0.2.2'
5
+ VERSION = '0.2.3'
6
6
  end
7
7
  end
@@ -90,6 +90,7 @@ module OmniAuth
90
90
 
91
91
  def callback_phase
92
92
  response = authenticate_user
93
+ return fail!(:invalid_credentials) if response.nil?
93
94
  @raw_data = response.body
94
95
  @data = parse_response_data
95
96
  session['omniauth.auth'] ||= auth_hash
@@ -163,7 +164,7 @@ module OmniAuth
163
164
  end
164
165
  if !response || response.status.to_i >= 400
165
166
  log :error, response.inspect
166
- return fail!(:invalid_credentials)
167
+ return nil
167
168
  end
168
169
 
169
170
  response
@@ -229,11 +230,11 @@ module OmniAuth
229
230
 
230
231
  # Determine if a client is likely a non-person entity
231
232
  def identify_npe(info)
232
- info['likely_npe?'] = nil
233
+ info['likely_npe?'] = nil
233
234
  return true if auth_cn_with_tld?(info['common_name']) == true
234
- return true if auth_info_missing_email?(info) == true
235
- return true if auth_has_email_without_names?(info) == true
236
- return false if auth_has_email_with_any_name?(info) == true
235
+ return true if auth_info_missing_email?(info) == true
236
+ return true if auth_has_email_without_names?(info) == true
237
+ return false if auth_has_email_with_any_name?(info) == true
237
238
  end
238
239
 
239
240
  # Identify if there's a domain w/ TLD in the common_name
@@ -305,7 +306,7 @@ module OmniAuth
305
306
 
306
307
  @conn ||= Faraday.new(url: options.cas_server, ssl: ssl_hash) do |conn|
307
308
  conn.headers = headers
308
- conn.response :logger # log requests to STDOUT
309
+ conn.response :logger # log requests to STDOUT
309
310
  conn.response :xml, content_type: /\bxml$/
310
311
  conn.response :json, content_type: /\bjson$/
311
312
  conn.adapter :excon
@@ -332,7 +333,6 @@ module OmniAuth
332
333
 
333
334
  # Detect data format, parse with appropriate library
334
335
  def parse_response_data
335
- log :debug, '.parse_response_data'
336
336
  log :debug, "cas_server response.body:\r\n#{@raw_data}"
337
337
  formatted_data = format_data
338
338
  formatted_data = formatted_data.nil? ? @raw_data : formatted_data
@@ -73,11 +73,10 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
73
73
  end
74
74
 
75
75
  before(:all) do
76
- defaults={
76
+ @defaults = {
77
77
  cas_server: 'http://example.org',
78
78
  authentication_path: '/dn'
79
79
  }
80
- set_app!(defaults)
81
80
  end
82
81
 
83
82
  describe "use_callback_url" do
@@ -87,12 +86,7 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
87
86
  authentication_path: '/dn',
88
87
  use_callback_url: true
89
88
  }
90
- self.app = Rack::Builder.app do
91
- use Rack::Session::Cookie, :secret => '1337geeks'
92
- use RackSessionAccess::Middleware
93
- use OmniAuth::Strategies::Dice, callback_url_opts
94
- run lambda{|env| [404, {'env' => env}, ["HELLO!"]]}
95
- end
89
+ set_app!(callback_url_opts)
96
90
  header 'Ssl-Client-Cert', user_cert
97
91
  get '/auth/dice'
98
92
  expect(last_request.env['HTTP_SSL_CLIENT_CERT']).to eq(user_cert)
@@ -110,12 +104,7 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
110
104
  authentication_path: '/dn',
111
105
  custom_callback_url: 'http://example.org/sub-uri/auth/dice/callback'
112
106
  }
113
- self.app = Rack::Builder.app do
114
- use Rack::Session::Cookie, :secret => '1337geeks'
115
- use RackSessionAccess::Middleware
116
- use OmniAuth::Strategies::Dice, callback_url_opts
117
- run lambda{|env| [404, {'env' => env}, ["HELLO!"]]}
118
- end
107
+ set_app!(callback_url_opts)
119
108
  header 'Ssl-Client-Cert', user_cert
120
109
  get '/auth/dice'
121
110
  expect(last_request.env['HTTP_SSL_CLIENT_CERT']).to eq(user_cert)
@@ -128,10 +117,14 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
128
117
 
129
118
  describe '#request_phase' do
130
119
  it 'should fail without a client DN' do
131
- expect { get '/auth/dice' }.to raise_error(OmniAuth::Error, 'You need a valid DN to authenticate.')
120
+ set_app!(@defaults)
121
+ get '/auth/dice'
122
+ expect(last_request.env['omniauth.error.type']).to eq(:"You need a valid DN to authenticate.")
123
+ expect(last_response.location).to eq('/auth/failure?message=You need a valid DN to authenticate.&strategy=dice')
132
124
  end
133
125
 
134
126
  it "should set the client & issuer's DN (from certificate)" do
127
+ set_app!(@defaults)
135
128
  header 'Ssl-Client-Cert', user_cert
136
129
  get '/auth/dice'
137
130
  expect(last_request.env['HTTP_SSL_CLIENT_CERT']).to eq(user_cert)
@@ -142,6 +135,7 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
142
135
  end
143
136
 
144
137
  it "should set the client's DN (from header)" do
138
+ set_app!(@defaults)
145
139
  header 'Ssl-Client-S-Dn', raw_dn
146
140
  get '/auth/dice'
147
141
  expect(last_request.env['HTTP_SSL_CLIENT_S_DN']).to eq(raw_dn)
@@ -152,6 +146,7 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
152
146
  end
153
147
 
154
148
  it "should set the issuer's DN (from header)" do
149
+ set_app!(@defaults)
155
150
  header 'Ssl-Client-S-Dn', raw_dn
156
151
  header 'Ssl-Client-I-Dn', raw_issuer_dn
157
152
  get '/auth/dice'
@@ -164,7 +159,7 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
164
159
 
165
160
  describe '#callback_phase' do
166
161
  before(:each) do
167
- set_app!({
162
+ callback_phase_opts = {
168
163
  cas_server: 'https://example.org:3000',
169
164
  authentication_path: '/dn',
170
165
  dnc_options: { transformation: 'downcase' },
@@ -174,8 +169,8 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
174
169
  client_key: 'spec/certs/key.np.pem'
175
170
  },
176
171
  primary_visa: 'CLOUDSDALE'
177
- })
178
-
172
+ }
173
+ set_app!(callback_phase_opts)
179
174
  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
175
  with(:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'Host'=>'example.org:3000', 'User-Agent'=>/^Faraday via Ruby.*$/, 'X-Xsrf-Useprotection'=>'false'}).
181
176
  to_return(status: 200, body: valid_user_json, headers: {})
@@ -200,7 +195,7 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
200
195
  end
201
196
 
202
197
  it 'should return a 200 with an XML object of user information on success' do
203
- set_app!({
198
+ xml_request_opts = {
204
199
  cas_server: 'https://example.org:3000',
205
200
  authentication_path: '/dn',
206
201
  format_header: 'application/xml',
@@ -211,7 +206,8 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
211
206
  client_cert: 'spec/certs/client.pem',
212
207
  client_key: 'spec/certs/key.np.pem'
213
208
  }
214
- })
209
+ }
210
+ set_app!(xml_request_opts)
215
211
  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
212
  with(:headers => {'Accept'=>'application/xml', 'Content-Type'=>'application/xml', 'Host'=>'example.org:3000', 'User-Agent'=>/^Faraday via Ruby.*$/, 'X-Xsrf-Useprotection'=>'false'}).
217
213
  to_return(status: 200, body: valid_user_xml, headers: {})
@@ -240,7 +236,9 @@ describe OmniAuth::Strategies::Dice, type: :strategy do
240
236
 
241
237
  header 'Ssl-Client-Cert', user_cert
242
238
  get '/auth/dice'
243
- expect { get '/auth/dice'; follow_redirect! }.to raise_error(OmniAuth::Error, 'invalid_credentials')
239
+ follow_redirect! # Needed to hit /auth/dice/callback & trigger errors!
240
+ expect(last_request.env['omniauth.error.type']).to eq(:invalid_credentials)
241
+ expect(last_response.location).to eq('/auth/failure?message=invalid_credentials&strategy=dice')
244
242
  end
245
243
  end
246
244
  end
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.2
4
+ version: 0.2.3
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-08-11 00:00:00.000000000 Z
33
+ date: 2015-10-02 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: awesome_print
@@ -410,7 +410,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
410
410
  version: '0'
411
411
  requirements: []
412
412
  rubyforge_project:
413
- rubygems_version: 2.4.4
413
+ rubygems_version: 2.4.5.1
414
414
  signing_key:
415
415
  specification_version: 4
416
416
  summary: DN Interoperable Conversion Expert Strategy
metadata.gz.sig CHANGED
Binary file