Trigger and SSO

Hi,

Currently troubleshooting a problem I've got with SuperOffice configured with Windows authentication in IIS. All components which I've tested works fine, including webtools etc. However I have an issue when it comes to triggers from service.

Right now I have just created a new trigger script on "Sales: After saving sale". I have not scripted anything and just have it enabled, this results in the following error given in Sales when trying to save the sale:

This has been followed as well as the other SSO article:

https://community.superoffice.com/en/technical/Forum/rooms/topic/superoffice-product-group/customer-service/new-requirements-for-service-and-sso-installations/

Also the SymmetricKeys are the same across the board. The error occurs whenever there is a trigger enabled, even if no scripts are added.

Anyone know of a solution to this problem?

Entry in the logfile:

Level: Error
At: 11:21:33

Element:
Message: Service call CustomerService.ExecuteEventHandlers failed with exception
CustomerService.ExecuteEventHandlers
Type: SuperOffice.Exceptions.SoException
Details:
at SuperOffice.CRM.Services.Implementation.CustomerServiceAgentLocal.ExecuteEventHandlers(EventData eventData)
at SuperOffice.Web.UI.EventHandler.CheckEventHandlers(IDataHandler datahandler, Boolean beforeSave, Boolean& wasBlocked, String& message, StringDictionary& stateValues)

Inner Element:
Message: The remote server returned an error: (401) Unauthorized.
Details:
at System.Net.HttpWebRequest.GetResponse()
at SuperOffice.CRM.Services.Implementation.ServiceFacades.ServiceFacade.HttpRequestAjaxService(String methodName, String arguments)
at SuperOffice.CRM.Services.Implementation.ServiceFacades.ServiceFacade.CallService(String methodName, String arguments)
at SuperOffice.CRM.Services.Implementation.CustomerServiceServiceFacade.ExecuteEventHandlers(EventData eventData)
at SuperOffice.CRM.Services.Implementation.CustomerServiceAgentLocal.ExecuteEventHandlers(EventData eventData)

Environment info:
User: sunorway (116) - Authorized
Role: (Employee)Administrator:
SingleThreadMode: False
TS.SoHttpContextProvider.SetNull.User:
SuperOffice.Security.Principal.SoCredentialsIdentity

TS.SoHttpContextProvider.SetNull.StackTrace:
at SuperOffice.Web.Security.HttpContextProvider.SetCurrentContext(SoContextContainer newContext)
at SuperOffice.SoSession.Dispose()
at SuperOffice.WebTools.AspNet.NetserverUserContextProvider.GetFor(IRequest request)
at SuperOffice.WebTools.AspNet.Web.WebToolsConnection.<>c__DisplayClass1_0.<AuthorizeRequest>b__0()
at SuperOffice.WebTools.AspNet.Web.WebToolsConnection.WithWebToolsLogContext[T](Func`1 action)
at Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(IDictionary`2 environment)
at Microsoft.Owin.Mapping.MapMiddleware.<Invoke>d__3.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)
at Microsoft.Owin.Mapping.MapMiddleware.Invoke(IDictionary`2 environment)
at Microsoft.Owin.Mapping.MapMiddleware.<Invoke>d__3.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)
at Microsoft.Owin.Mapping.MapMiddleware.Invoke(IDictionary`2 environment)
at Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.<RunApp>d__7.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)
at Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.RunApp(Func`2 entryPoint, IDictionary`2 environment, TaskCompletionSource`1 tcs, StageAsyncResult result)
at Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.BeginEvent(Object sender, EventArgs e, AsyncCallback cb, Object extradata)
at System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)
at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)


TS.SoHttpContextProvider.SetNull.ThreadName:
(null)

Database type: MSSQL - 10
Database: \\SQLTEST1\(CRM7), Database serial #: REMOVED, Database Expiration Date: den 12 januari 2021
DatabaseServer: SQLTEST1
DatabaseName: 
SerialNumber: REMOVED
Version: SuperOffice NetServer 8.5 Release (Build: Release85_C-2020.02.11-04)
Version.Assembly: 8.5.0.0
Version.File: 8.5.7346.1605
Version.BuildLabel: Release85_C-2020.02.11-04
ContextIdentifier: Default
MachineName: 
StackTrace: at SuperOffice.Diagnostics.SoLogger.LogError(Exception ex)
at SuperOffice.Web.UI.EventHandler.CheckEventHandlers(IDataHandler datahandler, Boolean beforeSave, Boolean& wasBlocked, String& message, StringDictionary& stateValues)
at SuperOffice.Data.DataDispatcher.Save(String DataHandlerId, Boolean& wasBlocked, EventAction`5 BeforeSave, EventAction`5 AfterSave)
at SuperOffice.DCF.Web.UI.PageBuilderHelper.SaveFromControl(ICard card, String[] dataHandlers)
at SuperOffice.CRM.Web.UI.Controls.TabbedCard.OnSave()
at SuperOffice.DCF.Web.UI.Controls.PageBuilder.OnPreRender()
at SuperOffice.DCF.Web.UI.Controls.PageBuilder._page_LoadComplete(Object sender, EventArgs e)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Web.UI.Page.OnLoadComplete(EventArgs e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.default_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\superoffice\2554e4a0\bee4517e\App_Web_q1op0dzo.8.cs:line 0
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)
at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)

RE: Trigger and SSO

Seems like NetServer is unable to talk to Service over the facades (that means the NetServer process is trying to talk to ajax.fcgi), and it seems to give a 401, which is unauthorized.

In order to determine if it is due to authorization, could you turn of Windows Authentication on the "scripts" folder in IIS (where among ajax.exe lives). Does it work then?

Av: Stian Andre Olsen 26. feb 2020

RE: Trigger and SSO

We had the same problem. What we ended up to do was make sure Blogic.fcgi/Blogic.exe got Anonymous Authentication - in addition to Windows Auth.

Av: Arild Eik 26. feb 2020

RE: Trigger and SSO

It does indeed work when setting it to anonymous auth, guess that's what I'll be doing. 

Thanks.

Av: Marius Gabrielsen 26. feb 2020

RE: Trigger and SSO

Just had a similar problem - same error message when a trigges was (supposed to be) fired.

I tried restart IIS, reinstall, giving full right to script (and hole Customer Service directory). But did not help.

After restarting the server this morning - everything seem to work... Ie restart might also help solve the problem.

Av: Morten Larsen 15. jan 2021