ruby-saml 0.8.14 → 0.8.15
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.
Potentially problematic release.
This version of ruby-saml might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/lib/onelogin/ruby-saml/response.rb +2 -11
- data/lib/onelogin/ruby-saml/settings.rb +26 -0
- data/lib/onelogin/ruby-saml/version.rb +1 -1
- data/lib/xml_security.rb +5 -1
- data/test/response_test.rb +11 -0
- data/test/xml_security_test.rb +5 -0
- metadata +15 -22
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3039afb4b2668c3859e51ae9eff0c1b423d7dda319a7d646b26702de315047af
|
4
|
+
data.tar.gz: 2ef188024bd8030c659b499db22b3b28f2ae24930954f8c45cc69c175b8fc4e3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0ab896476c0de2ebcd71b060dc305d091e3b6c3be7abd81ce702389cb8e8409cbd5730a4a73a71dfdfedbeb7a0081f448ed4aec60737a8ce6c1b6fb966ce9c4f
|
7
|
+
data.tar.gz: 203b1fd9b1fa4d23ab66cac8a034d3154a48e243bff21040ae2e873d191e90c0d8b8ccdfee368ca542c306fd58ddcdbeec700047893ae6044b82b406af43de18
|
@@ -373,15 +373,6 @@ module OneLogin
|
|
373
373
|
))
|
374
374
|
end
|
375
375
|
|
376
|
-
def get_fingerprint
|
377
|
-
if settings.idp_cert
|
378
|
-
cert = OpenSSL::X509::Certificate.new(settings.idp_cert)
|
379
|
-
Digest::SHA1.hexdigest(cert.to_der).upcase.scan(/../).join(":")
|
380
|
-
else
|
381
|
-
settings.idp_cert_fingerprint
|
382
|
-
end
|
383
|
-
end
|
384
|
-
|
385
376
|
def validate_conditions(soft = true)
|
386
377
|
return true if conditions.nil?
|
387
378
|
return true if options[:skip_conditions]
|
@@ -430,8 +421,8 @@ module OneLogin
|
|
430
421
|
|
431
422
|
opts = {}
|
432
423
|
opts[:fingerprint_alg] = OpenSSL::Digest::SHA1.new
|
433
|
-
opts[:cert] = settings.
|
434
|
-
fingerprint = get_fingerprint
|
424
|
+
opts[:cert] = settings.get_idp_cert
|
425
|
+
fingerprint = settings.get_fingerprint
|
435
426
|
|
436
427
|
unless fingerprint
|
437
428
|
return soft ? false : validation_error("No fingerprint or certificate on settings")
|
@@ -117,6 +117,32 @@ module OneLogin
|
|
117
117
|
@single_logout_service_binding = url
|
118
118
|
end
|
119
119
|
|
120
|
+
# Calculates the fingerprint of the IdP x509 certificate.
|
121
|
+
# @return [String] The fingerprint
|
122
|
+
#
|
123
|
+
def get_fingerprint
|
124
|
+
idp_cert_fingerprint || begin
|
125
|
+
idp_cert = get_idp_cert
|
126
|
+
if idp_cert
|
127
|
+
Digest::SHA1.hexdigest(idp_cert.to_der).upcase.scan(/../).join(":")
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
# @return [OpenSSL::X509::Certificate|nil] Build the IdP certificate from the settings (previously format it)
|
133
|
+
#
|
134
|
+
def get_idp_cert
|
135
|
+
return nil if idp_cert.nil?
|
136
|
+
|
137
|
+
if idp_cert.respond_to?(:to_pem)
|
138
|
+
idp_cert
|
139
|
+
else
|
140
|
+
return nil if idp_cert.empty?
|
141
|
+
formatted_cert = OneLogin::RubySaml::Utils.format_cert(idp_cert)
|
142
|
+
OpenSSL::X509::Certificate.new(formatted_cert)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
120
146
|
# @return [OpenSSL::X509::Certificate|nil] Build the SP certificate from the settings (previously format it)
|
121
147
|
#
|
122
148
|
def get_sp_cert
|
data/lib/xml_security.rb
CHANGED
@@ -222,7 +222,11 @@ module XMLSecurity
|
|
222
222
|
end
|
223
223
|
else
|
224
224
|
if options[:cert]
|
225
|
-
|
225
|
+
cert = options[:cert]
|
226
|
+
if cert.is_a? String
|
227
|
+
cert = OpenSSL::X509::Certificate.new(cert)
|
228
|
+
end
|
229
|
+
base64_cert = Base64.encode64(cert.to_pem)
|
226
230
|
else
|
227
231
|
return soft ? false : (raise OneLogin::RubySaml::ValidationError.new("Certificate element missing in response (ds:X509Certificate) and not cert provided at settings"))
|
228
232
|
end
|
data/test/response_test.rb
CHANGED
@@ -229,6 +229,17 @@ class ResponseTest < Minitest::Test
|
|
229
229
|
assert response.validate!
|
230
230
|
end
|
231
231
|
|
232
|
+
it "support signature elements with no KeyInfo if cert provided as text" do
|
233
|
+
response = OneLogin::RubySaml::Response.new(response_document_valid_signed_without_x509certificate)
|
234
|
+
response.stubs(:conditions).returns(nil)
|
235
|
+
settings = OneLogin::RubySaml::Settings.new
|
236
|
+
response.settings = settings
|
237
|
+
settings.idp_cert = ruby_saml_cert_text
|
238
|
+
settings.idp_cert_fingerprint = nil
|
239
|
+
XMLSecurity::SignedDocument.any_instance.expects(:validate_signature).returns(true)
|
240
|
+
assert response.validate!
|
241
|
+
end
|
242
|
+
|
232
243
|
it "returns an error if the signature contains no KeyInfo, cert is not provided and soft" do
|
233
244
|
response = OneLogin::RubySaml::Response.new(response_document_valid_signed_without_x509certificate)
|
234
245
|
response.stubs(:conditions).returns(nil)
|
data/test/xml_security_test.rb
CHANGED
@@ -383,6 +383,11 @@ class XmlSecurityTest < Minitest::Test
|
|
383
383
|
options[:cert] = idp_cert
|
384
384
|
assert document.document.validate_document(idp_cert, true, options), 'Document should be valid'
|
385
385
|
end
|
386
|
+
|
387
|
+
it 'is valid if cert text instead x509cert provided' do
|
388
|
+
options[:cert] = ruby_saml_cert_text
|
389
|
+
assert document.document.validate_document(idp_cert, true, options), 'Document should be valid'
|
390
|
+
end
|
386
391
|
end
|
387
392
|
|
388
393
|
describe 'when response has no cert and you dont provide cert' do
|
metadata
CHANGED
@@ -1,46 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-saml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
5
|
-
prerelease:
|
4
|
+
version: 0.8.15
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- OneLogin LLC
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2020-10-
|
11
|
+
date: 2020-10-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: uuid
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '2.3'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '2.3'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: nokogiri
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 1.5.0
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 1.5.0
|
46
41
|
description: SAML toolkit for Ruby on Rails
|
@@ -51,9 +46,9 @@ extra_rdoc_files:
|
|
51
46
|
- LICENSE
|
52
47
|
- README.md
|
53
48
|
files:
|
54
|
-
- .document
|
55
|
-
- .gitignore
|
56
|
-
- .travis.yml
|
49
|
+
- ".document"
|
50
|
+
- ".gitignore"
|
51
|
+
- ".travis.yml"
|
57
52
|
- Gemfile
|
58
53
|
- LICENSE
|
59
54
|
- README.md
|
@@ -132,28 +127,26 @@ files:
|
|
132
127
|
- test/xml_security_test.rb
|
133
128
|
homepage: http://github.com/onelogin/ruby-saml
|
134
129
|
licenses: []
|
130
|
+
metadata: {}
|
135
131
|
post_install_message:
|
136
132
|
rdoc_options:
|
137
|
-
- --charset=UTF-8
|
133
|
+
- "--charset=UTF-8"
|
138
134
|
require_paths:
|
139
135
|
- lib
|
140
136
|
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
-
none: false
|
142
137
|
requirements:
|
143
|
-
- -
|
138
|
+
- - ">="
|
144
139
|
- !ruby/object:Gem::Version
|
145
140
|
version: '0'
|
146
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
|
-
none: false
|
148
142
|
requirements:
|
149
|
-
- -
|
143
|
+
- - ">="
|
150
144
|
- !ruby/object:Gem::Version
|
151
145
|
version: '0'
|
152
146
|
requirements: []
|
153
|
-
|
154
|
-
rubygems_version: 1.8.23.2
|
147
|
+
rubygems_version: 3.0.4
|
155
148
|
signing_key:
|
156
|
-
specification_version:
|
149
|
+
specification_version: 4
|
157
150
|
summary: SAML Ruby Tookit
|
158
151
|
test_files:
|
159
152
|
- test/certificates/certificate1
|