Sha256: 1c169ecf36f7a8357e6423c6e6f4c8aa68f160801ad0aac2fe640f26b7610288

Contents?: true

Size: 1.55 KB

Versions: 15

Compression:

Stored size: 1.55 KB

Contents

require 'builder'
module SamlIdp
  class ResponseBuilder
    attr_accessor :response_id
    attr_accessor :issuer_uri
    attr_accessor :saml_acs_url
    attr_accessor :saml_request_id
    attr_accessor :assertion_and_signature

    def initialize(response_id, issuer_uri, saml_acs_url, saml_request_id, assertion_and_signature)
      self.response_id = response_id
      self.issuer_uri = issuer_uri
      self.saml_acs_url = saml_acs_url
      self.saml_request_id = saml_request_id
      self.assertion_and_signature = assertion_and_signature
    end

    def encoded
      @encoded ||= encode
    end

    def raw
      build
    end

    def encode
      Base64.encode64(raw)
    end
    private :encode

    def build
      builder = Builder::XmlMarkup.new
      builder.tag! "samlp:Response",
        ID: response_id_string,
        Version: "2.0",
        IssueInstant: now_iso,
        Destination: saml_acs_url,
        Consent: Saml::XML::Namespaces::Consents::UNSPECIFIED,
        InResponseTo: saml_request_id,
        "xmlns:samlp" => Saml::XML::Namespaces::PROTOCOL do |response|
          response.Issuer issuer_uri, xmlns: Saml::XML::Namespaces::ASSERTION
          response.tag! "samlp:Status" do |status|
            status.tag! "samlp:StatusCode", Value: Saml::XML::Namespaces::Statuses::SUCCESS
          end
          response << assertion_and_signature
        end
    end
    private :build

    def response_id_string
      "_#{response_id}"
    end
    private :response_id_string

    def now_iso
      Time.now.utc.iso8601
    end
    private :now_iso
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
saml_idp-0.2.1 lib/saml_idp/response_builder.rb
saml_idp-0.2.0 lib/saml_idp/response_builder.rb
saml_idp-0.2.0.pre lib/saml_idp/response_builder.rb
saml_idp-0.1.1 lib/saml_idp/response_builder.rb
saml_idp-0.1.0 lib/saml_idp/response_builder.rb
saml_idp-0.0.10 lib/saml_idp/response_builder.rb
saml_idp-0.0.9 lib/saml_idp/response_builder.rb
saml_idp-0.0.8 lib/saml_idp/response_builder.rb
saml_idp-0.0.7 lib/saml_idp/response_builder.rb
saml_idp-0.0.6 lib/saml_idp/response_builder.rb
saml_idp-0.0.5 lib/saml_idp/response_builder.rb
saml_idp-0.0.4 lib/saml_idp/response_builder.rb
saml_idp-0.0.3 lib/saml_idp/response_builder.rb
saml_idp-0.0.2 lib/saml_idp/response_builder.rb
saml_idp-0.0.1 lib/saml_idp/response_builder.rb