Commit 89013ce
Changed files (4)
lib
saml
kit
locales
spec
lib/saml/kit/locales/en.yml
@@ -0,0 +1,5 @@
+---
+en:
+ saml/kit:
+ errors:
+ invalid_idp_metadata: "must contain identity provider metadata."
lib/saml/kit/identity_provider_metadata.rb
@@ -57,6 +57,7 @@ module Saml
end
def validate
+ yield error_message(:invalid_idp_metadata) unless idp_metadata?
end
def to_xml
@@ -65,6 +66,15 @@ module Saml
private
+ def error_message(key)
+ message = I18n.translate(key, scope: 'saml/kit.errors')
+ OpenStruct.new(message: message)
+ end
+
+ def idp_metadata?
+ find_by('/md:EntityDescriptor/md:IDPSSODescriptor').present?
+ end
+
def fingerprint_for(value)
x509 = OpenSSL::X509::Certificate.new(value)
OpenSSL::Digest::SHA256.new.hexdigest(x509.to_der).upcase.scan(/../).join(":")
lib/saml/kit.rb
@@ -15,6 +15,8 @@ require "saml/kit/service_provider_registry"
require "saml/kit/identity_provider_metadata"
require "saml/kit/service_provider_metadata"
+I18n.load_path += Dir[File.expand_path("kit/locales/*.yml", File.dirname(__FILE__))]
+
module Saml
module Kit
def self.configuration
spec/saml/identity_provider_metadata_spec.rb
@@ -109,7 +109,6 @@ EOS
{ location: "https://win2008r2-ad-sso.qa1.immunet.com/adfs/ls/", binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" },
])
end
- it { expect(subject.certificate_base64).to eql(certificate) }
it do
expect(subject.certificates).to match_array([
{ use: 'signing', value: Base64.decode64(signing_certificate), fingerprint: "E6:03:E1:2D:F2:70:9C:D6:CC:8B:3E:4C:5A:37:F5:53:D7:B2:78:B1:2E:95:5B:31:5C:56:E8:7F:16:A1:1B:D2" },
@@ -197,7 +196,7 @@ EOS
errors << error
end
expect(errors).to be_present
- expect(errors[0].message).to eql(I18n.translate("activerecord.errors.models.sso_configuration.attributes.metadata.not_service_provider"))
+ expect(errors[0].message).to eql(I18n.translate("saml/kit.errors.invalid_idp_metadata"))
end
it 'is invalid, when the metadata is nil' do