Commit 436f76d

mo <mo@mokhan.ca>
2017-11-13 23:01:53
record errors using logger.
1 parent e1c98f3
lib/saml/kit/configuration.rb
@@ -8,6 +8,7 @@ module Saml
       attr_accessor :signature_method, :digest_method
       attr_accessor :signing_certificate_pem, :signing_private_key_pem, :signing_private_key_password
       attr_accessor :registry, :session_timeout
+      attr_accessor :logger
 
       def initialize
         @signature_method = :SHA256
@@ -16,6 +17,7 @@ module Saml
         @signing_certificate_pem, @signing_private_key_pem = SelfSignedCertificate.new(@signing_private_key_password).create
         @registry = DefaultRegistry.new
         @session_timeout = 3.hours
+        @logger = Logger.new(STDOUT)
       end
 
       def stripped_signing_certificate
lib/saml/kit/content.rb
@@ -13,7 +13,8 @@ module Saml
         decoded = decode(xml)
         begin
           inflate(decoded)
-        rescue
+        rescue => error
+          Saml::Kit.logger.error(error)
           decoded
         end
       end
lib/saml/kit/fingerprint.rb
@@ -5,7 +5,8 @@ module Saml
 
       def initialize(raw_certificate)
         @x509 = OpenSSL::X509::Certificate.new(raw_certificate)
-      rescue OpenSSL::X509::CertificateError
+      rescue OpenSSL::X509::CertificateError => error
+        Saml::Kit.logger.warn(error)
         @x509 = OpenSSL::X509::Certificate.new(Base64.decode64(raw_certificate))
       end
 
lib/saml/kit/request.rb
@@ -4,7 +4,8 @@ module Saml
       def self.deserialize(raw_request)
         request = Saml::Kit::Content.decode_raw_saml(raw_request)
         AuthenticationRequest.new(request)
-      rescue
+      rescue => error
+        Saml::Kit.logger.error(error)
         InvalidRequest.new(raw_request)
       end
     end
lib/saml/kit/response.rb
@@ -184,7 +184,8 @@ module Saml
 
       def audiences
         Array(to_h[name]['Assertion']['Conditions']['AudienceRestriction']['Audience'])
-      rescue
+      rescue => error
+        Saml::Kit.logger.error(error)
         []
       end
 
@@ -195,7 +196,8 @@ module Saml
 
       def parse_date(value)
         DateTime.parse(value)
-      rescue
+      rescue => error
+        Saml::Kit.logger.error(error)
         Time.at(0).to_datetime
       end
 
@@ -218,7 +220,8 @@ module Saml
 
         def want_assertions_signed
           request.provider.want_assertions_signed
-        rescue
+        rescue => error
+          Saml::Kit.logger.error(error)
           true
         end
 
lib/saml/kit.rb
@@ -6,6 +6,7 @@ require "active_support/core_ext/hash/conversions"
 require "active_support/core_ext/numeric/time"
 require "active_support/duration"
 require "builder"
+require "logger"
 require "net/http"
 require "nokogiri"
 require "securerandom"
@@ -33,12 +34,18 @@ I18n.load_path += Dir[File.expand_path("kit/locales/*.yml", File.dirname(__FILE_
 
 module Saml
   module Kit
-    def self.configuration
-      @config ||= Saml::Kit::Configuration.new
-    end
+    class << self
+      def configuration
+        @config ||= Saml::Kit::Configuration.new
+      end
+
+      def configure
+        yield configuration
+      end
 
-    def self.configure
-      yield configuration
+      def logger
+        configuration.logger
+      end
     end
   end
 end
spec/spec_helper.rb
@@ -4,6 +4,8 @@ require "active_support/testing/time_helpers"
 require "ffaker"
 require "webmock/rspec"
 
+Saml::Kit.configuration.logger.level = :fatal
+
 Dir[File.join(Dir.pwd, 'spec/support/**/*.rb')].each { |f| require f }
 RSpec.configure do |config|
   config.include ActiveSupport::Testing::TimeHelpers