diff --git a/lib/saml2.coffee b/lib/saml2.coffee index e625d8a..18a52aa 100644 --- a/lib/saml2.coffee +++ b/lib/saml2.coffee @@ -84,7 +84,7 @@ create_metadata = (entity_id, assert_endpoint, signing_certificates, encryption_ .end() # Creates a LogoutRequest and returns it as a string of xml. -create_logout_request = (issuer, name_id, session_index, destination) -> +create_logout_request = (issuer, name_id, session_index, destination, nameid_format) -> id = '_' + crypto.randomBytes( 21 ).toString( 'hex' ) xml = xmlbuilder.create 'samlp:LogoutRequest': @@ -95,7 +95,9 @@ create_logout_request = (issuer, name_id, session_index, destination) -> '@IssueInstant': (new Date()).toISOString() '@Destination': destination 'saml:Issuer': issuer - 'saml:NameID': name_id + 'saml:NameID': + '@Value': name_id + '@Format': nameid_format or 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified' 'samlp:SessionIndex': session_index .end() @@ -674,7 +676,7 @@ module.exports.ServiceProvider = create_logout_request_url: (identity_provider, options, cb) => identity_provider = { sso_logout_url: identity_provider, options: {} } if _.isString(identity_provider) options = set_option_defaults options, identity_provider.shared_options, @shared_options - {id, xml} = create_logout_request @entity_id, options.name_id, options.session_index, identity_provider.sso_logout_url + {id, xml} = create_logout_request @entity_id, options.name_id, options.session_index, identity_provider.sso_logout_url, @shared_options.nameid_format zlib.deflateRaw xml, (err, deflated) => return cb err if err? try