I am working on a project where a website needs to exchange complex and confiden
ID: 650951 • Letter: I
Question
I am working on a project where a website needs to exchange complex and confidential (and thus encrypted) data with other systems. The data includes personal information, technical drawings, public documents etc.
We would prefer to avoid the Request-Reply pattern to the dependent systems (and there are a LOT of them), as that would create an awful lot of empty traffic.
On the other hand, I am not sure that a pure Publisher/Subscriber pattern would be appropriate -- mainly because of the complex and bulky nature of the data to be exchanged.
For that reason we have discussed the possibility of a "publish/subscribe/request" solution. The Publish/Subscribe part would be to publish a message to the dependent systems, that something is ready for pickup. The actual content is then picked up by old-school Request-Reply action.
How does this sound to you?
Explanation / Answer
Consider PubSubHubbub
PubSubHubbub works by first offering a general AtomPub feed with links to various hubs. Subscribers register with the hubs using a direct socket feed (typically reverse Ajax using Comet). This allows the hubs to push data out to subscribers on demand without consuming too many resources. Publishers send data to the hubs for dissemination. Hubs can be clustered.
In your situation, you could do the following (subject to your own data protection policies):
A new subscriber is provided with a secret symmetric key along with their login credentials
The subscriber registers with a hub to receive data
The publisher creates the data specific to a subscriber and sends it to the hub encrypted along with their symmetric key
The hub handles the process of sending the data to the subscriber
In the Java world, a combination of Jetty (version 7+), OData4J and Atmosphere would probably achieve most of what you need.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.