Skip to content

Commit 843ade7

Browse files
authored
Merge pull request #420 from StileEducation/expose_name_id_format_on_slo_logout_request
Expose NameID Format on SloLogoutrequest
2 parents 8923834 + 2e0bb81 commit 843ade7

4 files changed

Lines changed: 33 additions & 0 deletions

File tree

lib/onelogin/ruby-saml/slo_logoutrequest.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,18 @@ def name_id
6666

6767
alias_method :nameid, :name_id
6868

69+
# @return [String] Gets the NameID Format of the Logout Request.
70+
#
71+
def name_id_format
72+
@name_id_node ||= REXML::XPath.first(document, "/p:LogoutRequest/a:NameID", { "p" => PROTOCOL, "a" => ASSERTION })
73+
@name_id_format ||=
74+
if @name_id_node && @name_id_node.attribute("Format")
75+
@name_id_node.attribute("Format").value
76+
end
77+
end
78+
79+
alias_method :nameid_format, :name_id_format
80+
6981
# @return [String|nil] Gets the ID attribute from the Logout Request. if exists.
7082
#
7183
def id
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<samlp:LogoutRequest Version='2.0' ID='_c0348950-935b-0131-1060-782bcb56fcaa' xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol' IssueInstant='2014-03-21T19:20:13'>
2+
<saml:Issuer xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'>https://app.onelogin.com/saml/metadata/SOMEACCOUNT</saml:Issuer>
3+
<saml:NameID xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion' Format='urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress'>someone@example.org</saml:NameID>
4+
</samlp:LogoutRequest>

test/slo_logoutrequest_test.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,14 @@ class RubySamlTest < Minitest::Test
9191
end
9292
end
9393

94+
describe "#nameid_format" do
95+
let(:logout_request) { OneLogin::RubySaml::SloLogoutrequest.new(logout_request_document_with_name_id_format) }
96+
97+
it "extract the format attribute of the name id element" do
98+
assert_equal "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", logout_request.nameid_format
99+
end
100+
end
101+
94102
describe "#issuer" do
95103
it "return the issuer inside the logout request" do
96104
assert_equal "https://app.onelogin.com/saml/metadata/SOMEACCOUNT", logout_request.issuer

test/test_helper.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,15 @@ def logout_request_document
183183
@logout_request_document
184184
end
185185

186+
def logout_request_document_with_name_id_format
187+
unless @logout_request_document_with_name_id_format
188+
xml = read_logout_request("slo_request_with_name_id_format.xml")
189+
deflated = Zlib::Deflate.deflate(xml, 9)[2..-5]
190+
@logout_request_document_with_name_id_format = Base64.encode64(deflated)
191+
end
192+
@logout_request_document_with_name_id_format
193+
end
194+
186195
def logout_request_xml_with_session_index
187196
@logout_request_xml_with_session_index ||= File.read(File.join(File.dirname(__FILE__), 'logout_requests', 'slo_request_with_session_index.xml'))
188197
end

0 commit comments

Comments
 (0)