I am selling a Java App that customers are installing on their server and now build a Salesforce app (Managed package) to integrate it. This means
- The Salesforce App packages some Canvas elements to render UI from the Java app
- The Java App needs to modify Salesforce data on behalf of the Salesforce User who triggered it through the Canvas-exposed UI. I planned on using packaging a Connected App for that.
I am struggling with those questions:
1) How to cope with dynamic Canvas endpoints
The problem is that Connected Apps and Canvas need predefined Endpoint URLs and I don't have them during package time. The Java app of one customer mights sit on www.acme.com and the next one on www.customer.com.
2) Will the Modifications made by the Java app through the Connected App be on behalf of the actual user?
This is what I want. If the Salesforce User clicks a button int Java UI displayed throught the Canvas and the Java app then uses a Salesforce API to modify data in Salesforce will this be some kind of super admin who does it or the actual user. Will it respect permissions and profiles?
3) What are the drawbacks of such an architecture compared to both systems having real REST APIs and each other just calling each others APIs.