Incorrect SOAP Content-Type
Environment
LemonLDAP::NG version: 2.0.8
Summary
- Try to logout from a Shibboleth IDP using the HTTP-SOAP binding
- FAIL
Logs
On Shibboleth
ERROR [org.opensaml.profile.action.impl.DecodeMessage:73] - Profile Action DecodeMessage: Unable to decode incoming request
org.opensaml.messaging.decoder.MessageDecodingException: Content-Type 'application/xml' was not a supported media type
at org.opensaml.soap.soap11.decoder.http.impl.HTTPSOAP11Decoder.validateHttpRequest(HTTPSOAP11Decoder.java:145)
On LLNG
[debug] Get response <?xml version="1.0" encoding="UTF-8"?><soap11:Envelope xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"><soap11:Body><saml2p:LogoutResponse xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" ID="_310179b264bfd60c73377811bce53f40" IssueInstant="2020-07-24T11:34:09.337Z" Version="2.0"><saml2p:Status><saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Requester"><saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:RequestUnsupported"/></saml2p:StatusCode><saml2p:StatusMessage>An error occurred.</saml2p:StatusMessage></saml2p:Status></saml2p:LogoutResponse></soap11:Body></soap11:Envelope>
[error] Lasso error code -201: The identifier of a provider is unknown to #LassoServer. To register a provider in a #LassoServer object, you must use the methods lasso_server_add_provider() or lasso_server_add_provider_from_buffer().
[error] Fail to process logout response
[debug] Cleaning pdata
[debug] Returned error: 56 (PE_SAML_SLO_ERROR)
Possible fixes
https://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383526
HTTP applications MUST use the media type "text/xml" according to RFC 2376 [3] when including SOAP entity bodies in HTTP messages.
We must use text/xml
instead of application/xml
A release note should mention this, just in case