@@ -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 )
0 commit comments