saml_idp 0.7.2 → 0.16.0

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.
Files changed (57) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +1 -1
  3. data/README.md +59 -52
  4. data/lib/saml_idp/assertion_builder.rb +28 -3
  5. data/lib/saml_idp/configurator.rb +7 -1
  6. data/lib/saml_idp/controller.rb +21 -13
  7. data/lib/saml_idp/encryptor.rb +0 -1
  8. data/lib/saml_idp/fingerprint.rb +19 -0
  9. data/lib/saml_idp/incoming_metadata.rb +22 -1
  10. data/lib/saml_idp/metadata_builder.rb +23 -8
  11. data/lib/saml_idp/persisted_metadata.rb +4 -0
  12. data/lib/saml_idp/request.rb +26 -6
  13. data/lib/saml_idp/response_builder.rb +26 -6
  14. data/lib/saml_idp/saml_response.rb +62 -28
  15. data/lib/saml_idp/service_provider.rb +15 -6
  16. data/lib/saml_idp/signable.rb +1 -2
  17. data/lib/saml_idp/version.rb +1 -1
  18. data/lib/saml_idp/xml_security.rb +1 -1
  19. data/lib/saml_idp.rb +2 -1
  20. data/saml_idp.gemspec +45 -42
  21. data/spec/acceptance/idp_controller_spec.rb +5 -4
  22. data/spec/lib/saml_idp/algorithmable_spec.rb +6 -6
  23. data/spec/lib/saml_idp/assertion_builder_spec.rb +151 -8
  24. data/spec/lib/saml_idp/attribute_decorator_spec.rb +8 -8
  25. data/spec/lib/saml_idp/configurator_spec.rb +9 -7
  26. data/spec/lib/saml_idp/controller_spec.rb +53 -20
  27. data/spec/lib/saml_idp/encryptor_spec.rb +4 -4
  28. data/spec/lib/saml_idp/fingerprint_spec.rb +14 -0
  29. data/spec/lib/saml_idp/incoming_metadata_spec.rb +60 -0
  30. data/spec/lib/saml_idp/metadata_builder_spec.rb +30 -17
  31. data/spec/lib/saml_idp/name_id_formatter_spec.rb +3 -3
  32. data/spec/lib/saml_idp/request_spec.rb +78 -27
  33. data/spec/lib/saml_idp/response_builder_spec.rb +5 -3
  34. data/spec/lib/saml_idp/saml_response_spec.rb +127 -12
  35. data/spec/lib/saml_idp/service_provider_spec.rb +2 -2
  36. data/spec/lib/saml_idp/signable_spec.rb +1 -1
  37. data/spec/lib/saml_idp/signature_builder_spec.rb +2 -2
  38. data/spec/lib/saml_idp/signed_info_builder_spec.rb +3 -3
  39. data/spec/rails_app/app/controllers/saml_controller.rb +1 -1
  40. data/spec/rails_app/app/controllers/saml_idp_controller.rb +55 -3
  41. data/{app → spec/rails_app/app}/views/saml_idp/idp/new.html.erb +1 -5
  42. data/{app → spec/rails_app/app}/views/saml_idp/idp/saml_post.html.erb +1 -1
  43. data/spec/rails_app/config/application.rb +1 -6
  44. data/spec/rails_app/config/boot.rb +1 -1
  45. data/spec/rails_app/config/environments/development.rb +2 -5
  46. data/spec/rails_app/config/environments/production.rb +1 -0
  47. data/spec/rails_app/config/environments/test.rb +1 -0
  48. data/spec/spec_helper.rb +23 -1
  49. data/spec/support/certificates/sp_cert_req.csr +12 -0
  50. data/spec/support/certificates/sp_private_key.pem +16 -0
  51. data/spec/support/certificates/sp_x509_cert.crt +18 -0
  52. data/spec/support/saml_request_macros.rb +66 -4
  53. data/spec/support/security_helpers.rb +10 -0
  54. data/spec/xml_security_spec.rb +12 -12
  55. metadata +135 -81
  56. data/app/controllers/saml_idp/idp_controller.rb +0 -59
  57. data/spec/lib/saml_idp/.assertion_builder_spec.rb.swp +0 -0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saml_idp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Phenow
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-28 00:00:00.000000000 Z
11
+ date: 2024-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,169 +16,211 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.2'
19
+ version: '5.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.2'
26
+ version: '5.2'
27
27
  - !ruby/object:Gem::Dependency
28
- name: uuid
28
+ name: builder
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '2.3'
33
+ version: '3.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '2.3'
40
+ version: '3.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: builder
42
+ name: nokogiri
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: 1.6.2
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: 1.6.2
55
55
  - !ruby/object:Gem::Dependency
56
- name: nokogiri
56
+ name: rexml
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.6.2
61
+ version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.6.2
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rake
70
+ name: xmlenc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 0.7.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.7.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: activeresource
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: 10.4.2
89
+ version: '5.1'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: 10.4.2
96
+ version: '5.1'
83
97
  - !ruby/object:Gem::Dependency
84
- name: simplecov
98
+ name: appraisal
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - "~>"
101
+ - - ">="
88
102
  - !ruby/object:Gem::Version
89
- version: '0.12'
103
+ version: '0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - "~>"
108
+ - - ">="
95
109
  - !ruby/object:Gem::Version
96
- version: '0.12'
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: rspec
112
+ name: byebug
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - "~>"
115
+ - - ">="
102
116
  - !ruby/object:Gem::Version
103
- version: '2.5'
117
+ version: '0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - "~>"
122
+ - - ">="
109
123
  - !ruby/object:Gem::Version
110
- version: '2.5'
124
+ version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
- name: ruby-saml
126
+ name: capybara
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - "~>"
129
+ - - ">="
116
130
  - !ruby/object:Gem::Version
117
- version: '1.3'
131
+ version: '2.16'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - "~>"
136
+ - - ">="
123
137
  - !ruby/object:Gem::Version
124
- version: '1.3'
138
+ version: '2.16'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: rails
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - "~>"
143
+ - - ">="
130
144
  - !ruby/object:Gem::Version
131
- version: '3.2'
145
+ version: '5.2'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - "~>"
150
+ - - ">="
137
151
  - !ruby/object:Gem::Version
138
- version: '3.2'
152
+ version: '5.2'
139
153
  - !ruby/object:Gem::Dependency
140
- name: capybara
154
+ name: rake
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - "~>"
157
+ - - ">="
144
158
  - !ruby/object:Gem::Version
145
- version: 2.11.0
159
+ version: '0'
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - "~>"
164
+ - - ">="
151
165
  - !ruby/object:Gem::Version
152
- version: 2.11.0
166
+ version: '0'
153
167
  - !ruby/object:Gem::Dependency
154
- name: timecop
168
+ name: rspec
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
- - - "~>"
171
+ - - ">="
158
172
  - !ruby/object:Gem::Version
159
- version: '0.8'
173
+ version: 3.7.0
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
- - - "~>"
178
+ - - ">="
165
179
  - !ruby/object:Gem::Version
166
- version: '0.8'
180
+ version: 3.7.0
167
181
  - !ruby/object:Gem::Dependency
168
- name: xmlenc
182
+ name: ruby-saml
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
185
  - - ">="
172
186
  - !ruby/object:Gem::Version
173
- version: 0.6.4
187
+ version: 1.7.2
174
188
  type: :development
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - ">="
179
193
  - !ruby/object:Gem::Version
180
- version: 0.6.4
181
- description: SAML IdP (Identity Provider) library in ruby
194
+ version: 1.7.2
195
+ - !ruby/object:Gem::Dependency
196
+ name: simplecov
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: timecop
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0.8'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0.8'
223
+ description: SAML IdP (Identity Provider) Library for Ruby
182
224
  email: jon.phenow@sportngin.com
183
225
  executables: []
184
226
  extensions: []
@@ -187,9 +229,6 @@ files:
187
229
  - Gemfile
188
230
  - LICENSE
189
231
  - README.md
190
- - app/controllers/saml_idp/idp_controller.rb
191
- - app/views/saml_idp/idp/new.html.erb
192
- - app/views/saml_idp/idp/saml_post.html.erb
193
232
  - lib/saml_idp.rb
194
233
  - lib/saml_idp/algorithmable.rb
195
234
  - lib/saml_idp/assertion_builder.rb
@@ -200,6 +239,7 @@ files:
200
239
  - lib/saml_idp/default.rb
201
240
  - lib/saml_idp/encryptor.rb
202
241
  - lib/saml_idp/engine.rb
242
+ - lib/saml_idp/fingerprint.rb
203
243
  - lib/saml_idp/hashable.rb
204
244
  - lib/saml_idp/incoming_metadata.rb
205
245
  - lib/saml_idp/logout_builder.rb
@@ -220,13 +260,14 @@ files:
220
260
  - saml_idp.gemspec
221
261
  - spec/acceptance/acceptance_helper.rb
222
262
  - spec/acceptance/idp_controller_spec.rb
223
- - spec/lib/saml_idp/.assertion_builder_spec.rb.swp
224
263
  - spec/lib/saml_idp/algorithmable_spec.rb
225
264
  - spec/lib/saml_idp/assertion_builder_spec.rb
226
265
  - spec/lib/saml_idp/attribute_decorator_spec.rb
227
266
  - spec/lib/saml_idp/configurator_spec.rb
228
267
  - spec/lib/saml_idp/controller_spec.rb
229
268
  - spec/lib/saml_idp/encryptor_spec.rb
269
+ - spec/lib/saml_idp/fingerprint_spec.rb
270
+ - spec/lib/saml_idp/incoming_metadata_spec.rb
230
271
  - spec/lib/saml_idp/logout_request_builder_spec.rb
231
272
  - spec/lib/saml_idp/logout_response_builder_spec.rb
232
273
  - spec/lib/saml_idp/metadata_builder_spec.rb
@@ -251,6 +292,8 @@ files:
251
292
  - spec/rails_app/app/mailers/.gitkeep
252
293
  - spec/rails_app/app/models/.gitkeep
253
294
  - spec/rails_app/app/views/layouts/application.html.erb
295
+ - spec/rails_app/app/views/saml_idp/idp/new.html.erb
296
+ - spec/rails_app/app/views/saml_idp/idp/saml_post.html.erb
254
297
  - spec/rails_app/config.ru
255
298
  - spec/rails_app/config/application.rb
256
299
  - spec/rails_app/config/boot.rb
@@ -291,6 +334,9 @@ files:
291
334
  - spec/spec_helper.rb
292
335
  - spec/support/certificates/certificate1
293
336
  - spec/support/certificates/r1_certificate2_base64
337
+ - spec/support/certificates/sp_cert_req.csr
338
+ - spec/support/certificates/sp_private_key.pem
339
+ - spec/support/certificates/sp_x509_cert.crt
294
340
  - spec/support/responses/adfs_response_sha1.xml
295
341
  - spec/support/responses/adfs_response_sha256.xml
296
342
  - spec/support/responses/adfs_response_sha384.xml
@@ -312,25 +358,28 @@ files:
312
358
  - spec/support/saml_request_macros.rb
313
359
  - spec/support/security_helpers.rb
314
360
  - spec/xml_security_spec.rb
315
- homepage: http://github.com/sportngin/saml_idp
361
+ homepage: https://github.com/saml-idp/saml_idp
316
362
  licenses:
317
- - LICENSE
318
- metadata: {}
319
- post_install_message: |
320
- If you're just recently updating saml_idp - please be aware we've changed the default
321
- certificate. See the PR and a description of why we've done this here:
322
- https://github.com/sportngin/saml_idp/pull/29
323
-
324
- If you just need to see the certificate `bundle open saml_idp` and go to
325
- `lib/saml_idp/default.rb`
363
+ - MIT
364
+ metadata:
365
+ homepage_uri: https://github.com/saml-idp/saml_idp
366
+ source_code_uri: https://github.com/saml-idp/saml_idp
367
+ bug_tracker_uri: https://github.com/saml-idp/saml_idp/issues
368
+ documentation_uri: http://rdoc.info/gems/saml_idp/0.16.0
369
+ post_install_message: |2
370
+ If you're just recently updating saml_idp - please be aware we've changed the default
371
+ certificate. See the PR and a description of why we've done this here:
372
+ https://github.com/saml-idp/saml_idp/pull/29
326
373
 
327
- Similarly, please see the README about certificates - you should avoid using the
328
- defaults in a Production environment. Post any issues you to github.
374
+ If you just need to see the certificate `bundle open saml_idp` and go to
375
+ `lib/saml_idp/default.rb`
329
376
 
330
- ** New in Version 0.3.0 **
377
+ Similarly, please see the README about certificates - you should avoid using the
378
+ defaults in a Production environment. Post any issues you to github.
331
379
 
332
- Encrypted Assertions require the xmlenc gem. See the example in the Controller
333
- section of the README.
380
+ ** New in Version 0.3.0 **
381
+ Encrypted Assertions require the xmlenc gem. See the example in the Controller
382
+ section of the README.
334
383
  rdoc_options:
335
384
  - "--charset=UTF-8"
336
385
  require_paths:
@@ -339,28 +388,28 @@ required_ruby_version: !ruby/object:Gem::Requirement
339
388
  requirements:
340
389
  - - ">="
341
390
  - !ruby/object:Gem::Version
342
- version: '2.2'
391
+ version: '2.5'
343
392
  required_rubygems_version: !ruby/object:Gem::Requirement
344
393
  requirements:
345
394
  - - ">="
346
395
  - !ruby/object:Gem::Version
347
396
  version: '0'
348
397
  requirements: []
349
- rubyforge_project:
350
- rubygems_version: 2.4.5.2
351
- signing_key:
398
+ rubygems_version: 3.3.7
399
+ signing_key:
352
400
  specification_version: 4
353
- summary: SAML Indentity Provider in ruby
401
+ summary: SAML Indentity Provider for Ruby
354
402
  test_files:
355
403
  - spec/acceptance/acceptance_helper.rb
356
404
  - spec/acceptance/idp_controller_spec.rb
357
- - spec/lib/saml_idp/.assertion_builder_spec.rb.swp
358
405
  - spec/lib/saml_idp/algorithmable_spec.rb
359
406
  - spec/lib/saml_idp/assertion_builder_spec.rb
360
407
  - spec/lib/saml_idp/attribute_decorator_spec.rb
361
408
  - spec/lib/saml_idp/configurator_spec.rb
362
409
  - spec/lib/saml_idp/controller_spec.rb
363
410
  - spec/lib/saml_idp/encryptor_spec.rb
411
+ - spec/lib/saml_idp/fingerprint_spec.rb
412
+ - spec/lib/saml_idp/incoming_metadata_spec.rb
364
413
  - spec/lib/saml_idp/logout_request_builder_spec.rb
365
414
  - spec/lib/saml_idp/logout_response_builder_spec.rb
366
415
  - spec/lib/saml_idp/metadata_builder_spec.rb
@@ -385,6 +434,8 @@ test_files:
385
434
  - spec/rails_app/app/mailers/.gitkeep
386
435
  - spec/rails_app/app/models/.gitkeep
387
436
  - spec/rails_app/app/views/layouts/application.html.erb
437
+ - spec/rails_app/app/views/saml_idp/idp/new.html.erb
438
+ - spec/rails_app/app/views/saml_idp/idp/saml_post.html.erb
388
439
  - spec/rails_app/config.ru
389
440
  - spec/rails_app/config/application.rb
390
441
  - spec/rails_app/config/boot.rb
@@ -425,6 +476,9 @@ test_files:
425
476
  - spec/spec_helper.rb
426
477
  - spec/support/certificates/certificate1
427
478
  - spec/support/certificates/r1_certificate2_base64
479
+ - spec/support/certificates/sp_cert_req.csr
480
+ - spec/support/certificates/sp_private_key.pem
481
+ - spec/support/certificates/sp_x509_cert.crt
428
482
  - spec/support/responses/adfs_response_sha1.xml
429
483
  - spec/support/responses/adfs_response_sha256.xml
430
484
  - spec/support/responses/adfs_response_sha384.xml
@@ -1,59 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module SamlIdp
4
- class IdpController < ActionController::Base
5
- include SamlIdp::Controller
6
-
7
- unloadable unless Rails::VERSION::MAJOR >= 4
8
- protect_from_forgery
9
-
10
- if Rails::VERSION::MAJOR >= 4
11
- before_action :validate_saml_request, only: [:new, :create]
12
- else
13
- before_filter :validate_saml_request, only: [:new, :create]
14
- end
15
-
16
- def new
17
- render template: "saml_idp/idp/new"
18
- end
19
-
20
- def show
21
- render xml: SamlIdp.metadata.signed
22
- end
23
-
24
- def create
25
- unless params[:email].blank? && params[:password].blank?
26
- person = idp_authenticate(params[:email], params[:password])
27
- if person.nil?
28
- @saml_idp_fail_msg = "Incorrect email or password."
29
- else
30
- @saml_response = idp_make_saml_response(person)
31
- render :template => "saml_idp/idp/saml_post", :layout => false
32
- return
33
- end
34
- end
35
- render :template => "saml_idp/idp/new"
36
- end
37
-
38
- def logout
39
- idp_logout
40
- @saml_response = idp_make_saml_response(nil)
41
- render :template => "saml_idp/idp/saml_post", :layout => false
42
- end
43
-
44
- def idp_logout
45
- raise NotImplementedError
46
- end
47
- private :idp_logout
48
-
49
- def idp_authenticate(email, password)
50
- raise NotImplementedError
51
- end
52
- protected :idp_authenticate
53
-
54
- def idp_make_saml_response(person)
55
- raise NotImplementedError
56
- end
57
- protected :idp_make_saml_response
58
- end
59
- end