Skip to content

Commit

Permalink
Merge pull request #45 from zoodor/master
Browse files Browse the repository at this point in the history
Extract authentication request code to separate method
  • Loading branch information
christianbpedersen committed Sep 17, 2012
2 parents 86d4e39 + e61cff2 commit 8bb8a60
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 18 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -4,3 +4,6 @@ coverage
rdoc
pkg
Gemfile.lock
.idea/*
lib/Lib.iml
test/Test.iml
41 changes: 23 additions & 18 deletions lib/onelogin/ruby-saml/authrequest.rb
Expand Up @@ -10,8 +10,29 @@ module Saml
include REXML
class Authrequest
def create(settings, params = {})
request_doc = create_authentication_xml_doc(settings)

request = ""
request_doc.write(request)

Logging.debug "Created AuthnRequest: #{request}"

deflated_request = Zlib::Deflate.deflate(request, 9)[2..-5]
base64_request = Base64.encode64(deflated_request)
encoded_request = CGI.escape(base64_request)
params_prefix = (settings.idp_sso_target_url =~ /\?/) ? '&' : '?'
request_params = "#{params_prefix}SAMLRequest=#{encoded_request}"

params.each_pair do |key, value|
request_params << "&#{key}=#{CGI.escape(value.to_s)}"
end

settings.idp_sso_target_url + request_params
end

def create_authentication_xml_doc(settings)
uuid = "_" + UUID.new.generate
time = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
time = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%S")
# Create AuthnRequest root element using REXML
request_doc = REXML::Document.new

Expand Down Expand Up @@ -50,23 +71,7 @@ def create(settings, params = {})
}
class_ref.text = settings.authn_context
end

request = ""
request_doc.write(request)

Logging.debug "Created AuthnRequest: #{request}"

deflated_request = Zlib::Deflate.deflate(request, 9)[2..-5]
base64_request = Base64.encode64(deflated_request)
encoded_request = CGI.escape(base64_request)
params_prefix = (settings.idp_sso_target_url =~ /\?/) ? '&' : '?'
request_params = "#{params_prefix}SAMLRequest=#{encoded_request}"

params.each_pair do |key, value|
request_params << "&#{key}=#{CGI.escape(value.to_s)}"
end

settings.idp_sso_target_url + request_params
request_doc
end

end
Expand Down

0 comments on commit 8bb8a60

Please sign in to comment.