[ https://issues.apache.org/jira/browse/OFBIZ-5019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13527505#comment-13527505 ]
Carsten Schinzer commented on OFBIZ-5019: ----------------------------------------- More on this topic: I would like to understand what the requirements are for the ContextFilter to place delegatorName in the various contexts. From what I read in code, this is where delegator information is placed in Contexts:: ServletContext - delegator (e.g. definiton in web.xml - dispatcher SessionContext: - delegator - delegatorName - dispatcher Before I move on with this fix, I need to understand whether the following assumption is correct: The ServletContext exists for the Servlet, not per instance. Write operations to it should thus be avoided in order to prevent inconsistencies. However, for Multitenant delegator, this occurs in current code. The SessionContext exists for each Session and can thus contain Session-dependant items, such as Multitenant tenantId, delegator and dispatcher (and many more of course) Based in these assumptions, I shall fix the Multitenant-part in the ContextFilter as follows: (1) check if ServletContext has a Multitenant-delegator -- if so: copy into Session Context, bail out -- else: (2) check if SessionContext has a Multitenant-delegator for the current tenantId -- if so: the work is done, bail out -- else: (3) check if SessionContext has a tenantId parameter -- if so: create the Multitenant-delegator using baseDelegatorName from ServletContext + "#" + tenantId -- else: re-use existing code (but that is weak and should rather become an Exception case) In order for this to run, I need confirmation that any invocation of a delegator will first check for a delegator in the SessionContext before falling back to the delegator in the ServletContext. Could this assumption be confirmed by someone from the committers? > Multitenant delegator assignment not working correctly > ------------------------------------------------------- > > Key: OFBIZ-5019 > URL: https://issues.apache.org/jira/browse/OFBIZ-5019 > Project: OFBiz > Issue Type: Bug > Components: ALL APPLICATIONS, framework > Affects Versions: SVN trunk > Environment: multitenantuse = "Y" > Tenant with no Domain setting or Tenant using different domain for backend > applications > Reporter: Carsten Schinzer > Labels: authentication, context, multitenancy, security > Attachments: > OFBIZ-5019_Multitenant_delegator_assignment_not_working_correctly.patch > > Original Estimate: 168h > Remaining Estimate: 168h > > This issue arises when Multitenancy is in use. It arises only on backend > applications (as typically the frontend store applications will use a context > variable defined in web.xml to determin the delegator to be used (ie. the > database to use for data lookups etc). > The issue manifests as follows: > * the wrong data is read for standard backoffice displays (e.g. orders, > accounts, etc.); it is the dataa from the default datasource, not the > tenant´s data source > * in the backend apps certain functions require authentication (checked > dynamically) and this will fail when the default delegator is used since the > tenant's user accounts will differ (if not in name then in password hashes) > from the default datasource -- this leads to authentication warnings all over > the place > * one will not be able to mainpulate data of course, either -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira