Skip to content

Commit f1e1560

Browse files
committed
Always put signing certificate in metadata if we have one
1 parent 0a25d27 commit f1e1560

File tree

2 files changed

+19
-24
lines changed

2 files changed

+19
-24
lines changed

lib/onelogin/ruby-saml/metadata.rb

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,11 @@ def generate(settings, pretty_print=false)
3636
cert = settings.get_sp_cert
3737
if cert
3838
cert_text = Base64.encode64(cert.to_der).gsub("\n", '')
39-
40-
if settings.security[:authn_requests_signed]
41-
cert_text = Base64.encode64(cert.to_der).gsub("\n", '')
42-
kd = sp_sso.add_element "md:KeyDescriptor", { "use" => "signing" }
43-
ki = kd.add_element "ds:KeyInfo", {"xmlns:ds" => "http://www.w3.org/2000/09/xmldsig#"}
44-
xd = ki.add_element "ds:X509Data"
45-
xc = xd.add_element "ds:X509Certificate"
46-
xc.text = cert_text
47-
end
39+
kd = sp_sso.add_element "md:KeyDescriptor", { "use" => "signing" }
40+
ki = kd.add_element "ds:KeyInfo", {"xmlns:ds" => "http://www.w3.org/2000/09/xmldsig#"}
41+
xd = ki.add_element "ds:X509Data"
42+
xc = xd.add_element "ds:X509Certificate"
43+
xc.text = cert_text
4844

4945
if settings.security[:want_assertions_encrypted]
5046
kd2 = sp_sso.add_element "md:KeyDescriptor", { "use" => "encryption" }

test/metadata_test.rb

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,16 @@ class MetadataTest < Minitest::Test
111111
settings.certificate = ruby_saml_cert_text
112112
end
113113

114+
it "generates Service Provider Metadata with X509Certificate for sign" do
115+
assert_equal 1, key_descriptors.length
116+
assert_equal "signing", key_descriptors[0].attribute("use").value
117+
118+
assert_equal 1, cert_nodes.length
119+
assert_equal ruby_saml_cert.to_der, cert.to_der
120+
121+
assert validate_xml!(xml_text, "saml-schema-metadata-2.0.xsd")
122+
end
123+
114124
describe "and signed authentication requests" do
115125
before do
116126
settings.security[:authn_requests_signed] = true
@@ -122,16 +132,6 @@ class MetadataTest < Minitest::Test
122132

123133
assert validate_xml!(xml_text, "saml-schema-metadata-2.0.xsd")
124134
end
125-
126-
it "generates Service Provider Metadata with X509Certificate for sign" do
127-
assert_equal 1, key_descriptors.length
128-
assert_equal "signing", key_descriptors[0].attribute("use").value
129-
130-
assert_equal 1, cert_nodes.length
131-
assert_equal ruby_saml_cert.to_der, cert.to_der
132-
133-
assert validate_xml!(xml_text, "saml-schema-metadata-2.0.xsd")
134-
end
135135
end
136136

137137
describe "and encrypted assertions" do
@@ -140,12 +140,11 @@ class MetadataTest < Minitest::Test
140140
end
141141

142142
it "generates Service Provider Metadata with X509Certificate for encrypt" do
143-
assert_equal 1, key_descriptors.length
144-
assert_equal "encryption", key_descriptors[0].attribute("use").value
145-
146-
assert_equal 1, cert_nodes.length
147-
assert_equal ruby_saml_cert.to_der, cert.to_der
143+
assert_equal 2, key_descriptors.length
144+
assert_equal "encryption", key_descriptors[1].attribute("use").value
148145

146+
assert_equal 2, cert_nodes.length
147+
assert_equal cert_nodes[0].text, cert_nodes[1].text
149148
assert validate_xml!(xml_text, "saml-schema-metadata-2.0.xsd")
150149
end
151150
end

0 commit comments

Comments
 (0)