I am looking for some inputs for an enterprise mobile application architecture. It is a for large organization with with hundreds of existing SOAP based web-services for consumption by web based application. We use service accounts for application to web-service authentication and authorization (Application-N with a specific username and password to communicate with web-service-N). These apps are hosted at Android market and iTunes (iPad and Android apps). We also have a need of SAML based SSO for these mobile apps (OAuth is not entertained at the moment).
I am proposing a web-based integration approach for consumption of these web-services from these apps along with a proxy server to intercept these requests from mobile apps. So, the flow would be:
- Mobile app communicates with proxy server using HTTP and JSON.All the SAML SSO workflow is handled by mobile app, service provider which is proxy server and identity provider server.
- Proxy server communicates with web-services using service account and marshalls and unmarshalls the requests and responses to JSON.
The advantage with this approach is:
- Cross platform mobile application development due web-based approach as pointed by: What work has been done on cross-platform mobile development?
- Easier SAML based security integration due to HTTP protocol as opposed to SOAP.
I also see the following issues with SOAP for this project:
- Some hack to use the SAML authentication within SOAP request?
- Since web-service authentication is done using service accounts, so you need to embed password for the web-service with mobile application's code, which I see it as security issues
- Marshalling and un-marshalling SOAP requests and response is expensive compared to JSON for mobile device.
- Since we need to embed the secret(password) in device to communicate with web-service, which is a security issue. http://www.performantdesign.com/2009/09/03/facebook-iphone-session-proxy-in-php-fbsession-getsessionproxy/ So this app-server acts as session proxy.
Is this makes sense? Any flaws with this approach?
Many thanks in advance