[ 
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

Reply via email to