Expand my Community achievements bar.

July 31st AEM Gems Webinar: Elevate your AEM development to master the integration of private GitHub repositories within AEM Cloud Manager.

Secure sessions in LiveCycle Data Services

Avatar

Level 1

Hi all  - Can someone provide me some advice I can pass on to this customer on how they can implement LCDS in a way that provides data to only the clients that have access to it instead of a blanket broadcast to all?

--------------------------------------------------

As per your suggestion, I’m emailing you with more details of our situation, so that we can get further advice on it.

Environment:

We have a CF8 enterprise back end ( soon to be CF9 ), and a Flex front end, using SDK 3.2

Flex interacts with CF via RemoteObjects.

CF8 interacts with our SQL 2005 ( soon to be 2008 ) database primarily through stored procedures and functions.

Use case:

We provide a hosted solution and multiple companies are accessing their separate data via a single gateway.

The data is commercially sensitive. Company A may not see data from Company B, and depending on their rights, users from Company A may only be able to see a subset of Company A’s data. Note: "Several hundred customers with approximately ten thousand users in total"

We would like to be able to push data changes out to users where appropriate.

For example:

Users 1, 2, 3, 4 from Company A and user 5 from company B are all logged in to Server X.

Users 1 and 2 have both requested record Y via flex remoting.

User 3 has rights to view record Y but has not yet done so.

User 4 does not have rights to view record Y.

User 1 updates record Y.

We would like to:

Push the updated record to user 2, but:

Not push to user 3 ( who has not viewed the record and so does not have any stale data )

Not push to user 4 ( who is from Company A, but does not have rights to the record )

Not push to user 5 ( who is from Company B, and so should never see this record )

We have done some investigation on how LiveCycle Data Services could help to achieve this. However we have only been able to find much simpler data push examples, which are closer to what we would call a “broadcast” type of push than the targeted data push we would like to achieve.

We would be very grateful for any advice Adobe could give us on the best solution for our scenario, bearing in mind that we would like to perform a true push, with no polling, and that we cannot expect clients to make any configuration ( e.g. firewall ) changes on their networks.

2 Replies

Avatar

Level 1

Reply from the customer;

"I’ve read the docs on selectors and subtopics before, I’ve re-read them again now and I’m still not sure how they can be used to solve the problem.

-       We could use a selector e.g. companyid == {logged in users companyid}  to filter the messages by the company, but not to ensure that only records we have already loaded are received for update

-       Does this mean we would need to create a consumer for each record we have loaded, e.g. selector  = “type == task && id == thistaskid && company == logged in users companyid”

-       OR

-       Should we create consumers and subtopics for each record we have loaded? e.g. companies.mycompanyid.tasks.mytaskid

Either way, it seems like we would be creating thousands of consumer objects on each client. Is this what Adobe would recommend?

Then, server side, using CF, how do we push out the change and set the message headers so that the selector / or topic would be utilised?

e.g. As of now, we have a “task” object, which Flex calls using remoting via /flex2gateway/ to save a task. We now need to push this task out to all applicable clients.

Would we use the CF function SendGatewayMessage()? If so, is there documentation on setting the correct headers to utilise the selector or subtopics?

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c1f.html

Apologies if this is all down to my not reading the docs correctly, I promise I have done a lot of digging through them already!"

more info appreciated.