Skip to content

Commit b71bdf1

Browse files
committed
Merge pull request #84 from anthonybatchelor-examtime/protocol_binding
Add support of BindingProtocol attribute
2 parents 978ac73 + 7e91032 commit b71bdf1

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

lib/onelogin/ruby-saml/authrequest.rb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def create(settings, params = {})
3636
def create_authentication_xml_doc(settings)
3737
uuid = "_" + UUID.new.generate
3838
time = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
39-
# Create AuthnRequest root element using REXML
39+
# Create AuthnRequest root element using REXML
4040
request_doc = REXML::Document.new
4141

4242
root = request_doc.add_element "samlp:AuthnRequest", { "xmlns:samlp" => "urn:oasis:names:tc:SAML:2.0:protocol" }
@@ -45,6 +45,7 @@ def create_authentication_xml_doc(settings)
4545
root.attributes['Version'] = "2.0"
4646
root.attributes['Destination'] = settings.idp_sso_target_url unless settings.idp_sso_target_url.nil?
4747
root.attributes['IsPassive'] = settings.passive unless settings.passive.nil?
48+
root.attributes['ProtocolBinding'] = settings.protocol_binding unless settings.protocol_binding.nil?
4849

4950
# Conditionally defined elements based on settings
5051
if settings.assertion_consumer_service_url != nil
@@ -55,7 +56,7 @@ def create_authentication_xml_doc(settings)
5556
issuer.text = settings.issuer
5657
end
5758
if settings.name_identifier_format != nil
58-
root.add_element "samlp:NameIDPolicy", {
59+
root.add_element "samlp:NameIDPolicy", {
5960
"xmlns:samlp" => "urn:oasis:names:tc:SAML:2.0:protocol",
6061
# Might want to make AllowCreate a setting?
6162
"AllowCreate" => "true",
@@ -64,14 +65,14 @@ def create_authentication_xml_doc(settings)
6465
end
6566

6667
# BUG fix here -- if an authn_context is defined, add the tags with an "exact"
67-
# match required for authentication to succeed. If this is not defined,
68+
# match required for authentication to succeed. If this is not defined,
6869
# the IdP will choose default rules for authentication. (Shibboleth IdP)
6970
if settings.authn_context != nil
70-
requested_context = root.add_element "samlp:RequestedAuthnContext", {
71+
requested_context = root.add_element "samlp:RequestedAuthnContext", {
7172
"xmlns:samlp" => "urn:oasis:names:tc:SAML:2.0:protocol",
7273
"Comparison" => "exact",
7374
}
74-
class_ref = requested_context.add_element "saml:AuthnContextClassRef", {
75+
class_ref = requested_context.add_element "saml:AuthnContextClassRef", {
7576
"xmlns:saml" => "urn:oasis:names:tc:SAML:2.0:assertion",
7677
}
7778
class_ref.text = settings.authn_context

lib/onelogin/ruby-saml/settings.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ def initialize(overrides = {})
1818
attr_accessor :compress_request
1919
attr_accessor :double_quote_xml_attribute_values
2020
attr_accessor :passive
21+
attr_accessor :protocol_binding
2122

2223
private
23-
24+
2425
DEFAULTS = {:compress_request => true, :double_quote_xml_attribute_values => false}
2526
end
2627
end

test/settings_test.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class SettingsTest < Test::Unit::TestCase
1212
:idp_sso_target_url, :idp_cert_fingerprint, :name_identifier_format,
1313
:idp_slo_target_url, :name_identifier_value, :sessionindex,
1414
:assertion_consumer_logout_service_url,
15-
:passive
15+
:passive, :protocol_binding
1616
]
1717

1818
accessors.each do |accessor|
@@ -33,6 +33,7 @@ class SettingsTest < Test::Unit::TestCase
3333
:idp_cert_fingerprint => "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
3434
:name_identifier_format => "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
3535
:passive => true,
36+
:protocol_binding => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'
3637
}
3738
@settings = Onelogin::Saml::Settings.new(config)
3839

0 commit comments

Comments
 (0)