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!