Exception thrown after calling InitiateSLO

I’ve run into a problem trying to get the SAML SP Initated logout to work.

After getting a response back from the service provider, the following exception is thrown by the component:

[NullReferenceException: Object reference not set to an instance of an object.]   ComponentSpace.SAML2.AbstractSAMLProvider.CheckPendingResponseState(String inResponseTo) in c:<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">app\SAMLv20\AbstractSAMLProvider.cs:136   ComponentSpace.SAML2.InternalSAMLServiceProvider.ReceiveSLO(HttpRequestBase httpRequest, Boolean& isRequest, String& logoutReason, String& partnerIdP) in c:<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">app\SAMLv20\InternalSAMLServiceProvider.cs:633   ComponentSpace.SAML2.SAMLServiceProvider.ReceiveSLO(HttpRequestBase httpRequest, Boolean& isRequest, String& logoutReason, String& partnerIdP) in c:<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">app\SAMLv20\SAMLServiceProvider.cs:287   TVE.Controllers.ServiceProviderController.SLO() in c:<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">app\TVE\Controllers\ServiceProviderController.cs:95   lambda_method(Closure , ControllerBase , Object[] ) +78   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary parameters) +216   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary parameters) +38   System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +11   System.Web.Mvc.Async.WrappedAsyncResult.CallEndDelegate(IAsyncResult asyncResult) +138   System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3d() +111   System.Web.Mvc.Async.<>c__DisplayClass46.b__3f() +452   System.Web.Mvc.Async.<>c__DisplayClass33.b__32(IAsyncResult asyncResult) +15   System.Web.Mvc.Async.<>c__DisplayClass2b.b__1c() +32   System.Web.Mvc.Async.<>c__DisplayClass21.b__1e(IAsyncResult asyncResult) +231   System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29   System.Web.Mvc.Async.WrappedAsyncVoid.CallEndDelegate(IAsyncResult asyncResult) +111   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53   System.Web.Mvc.Async.WrappedAsyncVoid.CallEndDelegate(IAsyncResult asyncResult) +19   System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +51   System.Web.Mvc.Async.WrappedAsyncVoid.CallEndDelegate(IAsyncResult asyncResult) +111   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288

Unfortunately, this has to run on a remote server and I can’t easily debug it to see exactly what’s going on.
I did manage to identify that the problem is occurring because providerSessionState.PendingResponseState is null in the CheckPendingResponseState method (AbstractSAMLProvider.cs)

Any ideas?

Thanks!

This looks like a bug. A better exception should be thrown. The SLO flow is incorrect with an unexpected logout response being received.
Please contact support@componentspace.com mentioning this topic to receive a fix.