Sha256: 7e12368e481869110333bd5c09a9283d938fb73be56196eb3c3a9f8cc043d3f1

Contents?: true

Size: 1.89 KB

Versions: 3

Compression:

Stored size: 1.89 KB

Contents

# frozen_string_literal: true

module Saml
  module Kit
    module Builders
      # {include:file:lib/saml/kit/builders/templates/assertion.builder}
      class Assertion
        include XmlTemplatable
        extend Forwardable

        def_delegators :@response_builder, :request, :issuer, :reference_id, :now, :configuration, :user, :version, :destination

        def initialize(response_builder, embed_signature)
          @response_builder = response_builder
          self.embed_signature = embed_signature
        end

        def name_id_format
          request.try(:name_id_format) || Saml::Kit::Namespaces::PERSISTENT
        end

        def name_id
          user.name_id_for(name_id_format)
        end

        def assertion_attributes
          return {} unless user.respond_to?(:assertion_attributes_for)
          user.assertion_attributes_for(request)
        end

        def signing_key_pair
          super || @response_builder.signing_key_pair
        end

        private

        def assertion_options
          {
            ID: reference_id,
            IssueInstant: now.iso8601,
            Version: version,
            xmlns: Namespaces::ASSERTION,
          }
        end

        def subject_confirmation_data_options
          options = { NotOnOrAfter: 3.hours.since(now).utc.iso8601 }
          options[:Recipient] = destination if destination.present?
          options[:InResponseTo] = request.id if request.present?
          options
        end

        def conditions_options
          {
            NotBefore: now.utc.iso8601,
            NotOnOrAfter: configuration.session_timeout.since(now).utc.iso8601,
          }
        end

        def authn_statement_options
          {
            AuthnInstant: now.iso8601,
            SessionIndex: reference_id,
            SessionNotOnOrAfter: configuration.session_timeout.since(now).utc.iso8601,
          }
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
saml-kit-1.0.14 lib/saml/kit/builders/assertion.rb
saml-kit-1.0.13 lib/saml/kit/builders/assertion.rb
saml-kit-1.0.12 lib/saml/kit/builders/assertion.rb