Skip to content

Commit 9b94e34

Browse files
author
Ana Martinez
committed
Request builder options
1 parent 8d9d928 commit 9b94e34

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

lib/samlr/tools/response_builder.rb

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,18 @@ module Tools
99
module ResponseBuilder
1010

1111
def self.build(options = {})
12-
issue_instant = options[:issue_instant] || Samlr::Tools::Timestamp.stamp
13-
response_id = options[:response_id] || Samlr::Tools.uuid
14-
assertion_id = options[:assertion_id] || Samlr::Tools.uuid
15-
status_code = options[:status_code] || "urn:oasis:names:tc:SAML:2.0:status:Success"
16-
name_id_format = options[:name_id_format] || EMAIL_FORMAT
17-
subject_conf_m = options[:subject_conf_m] || "urn:oasis:names:tc:SAML:2.0:cm:bearer"
18-
version = options[:version] || "2.0"
19-
auth_context = options[:auth_context] || "urn:oasis:names:tc:SAML:2.0:ac:classes:Password"
20-
issuer = options[:issuer] || "ResponseBuilder IdP"
21-
attributes = options[:attributes] || {}
12+
issue_instant = options[:issue_instant] || Samlr::Tools::Timestamp.stamp
13+
response_id = options[:response_id] || Samlr::Tools.uuid
14+
assertion_id = options[:assertion_id] || Samlr::Tools.uuid
15+
status_code = options[:status_code] || "urn:oasis:names:tc:SAML:2.0:status:Success"
16+
name_id_format = options[:name_id_format] || EMAIL_FORMAT
17+
subject_conf_m = options[:subject_conf_m] || "urn:oasis:names:tc:SAML:2.0:cm:bearer"
18+
version = options[:version] || "2.0"
19+
auth_context = options[:auth_context] || "urn:oasis:names:tc:SAML:2.0:ac:classes:Password"
20+
issuer = options[:issuer] || "ResponseBuilder IdP"
21+
attributes = options[:attributes] || {}
22+
name_qualifier = options[:name_qualifier]
23+
sp_name_qualifier = options[:sp_name_qualifier]
2224

2325
# Mandatory for responses
2426
destination = options.fetch(:destination)
@@ -49,7 +51,11 @@ def self.build(options = {})
4951
xml["saml"].Issuer(issuer)
5052

5153
xml["saml"].Subject do
52-
xml["saml"].NameID(name_id, "Format" => name_id_format)
54+
name_id_options = { "Format" => name_id_format}
55+
name_id_options.merge!("NameQualifier" => name_qualifier) unless name_qualifier.nil?
56+
name_id_options.merge!("SPNameQualifier" => sp_name_qualifier) unless sp_name_qualifier.nil?
57+
58+
xml["saml"].NameID(name_id, name_id_options)
5359

5460
xml["saml"].SubjectConfirmation("Method" => subject_conf_m) do
5561
xml["saml"].SubjectConfirmationData("InResponseTo" => in_response_to, "NotOnOrAfter" => not_on_or_after, "Recipient" => destination)

test/unit/test_assertion.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@
2828
end
2929
end
3030

31+
describe "#name_id_options" do
32+
subject { fixed_saml_response(:name_qualifier => 'portal-happyservice-idp', :sp_name_qualifier => 'happyservice.zendesk.com').assertion }
33+
34+
it "returns the options for the NameID element" do
35+
expected = {"Format"=>"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "NameQualifier"=>"portal-happyservice-idp", "SPNameQualifier"=>"happyservice.zendesk.com"}
36+
assert_equal expected, subject.name_id_options
37+
end
38+
end
39+
3140
describe "#verify!" do
3241
let(:condition) do
3342
Class.new do

0 commit comments

Comments
 (0)