On-rev setup

Peter TB Brett peter.brett at livecode.com
Tue May 26 04:35:55 EDT 2015


On 2015-05-25 19:47, Ethan Lish wrote:
> Hello,
> My goal is to create a captive server which can only be accessed via
> our authorized LiveCode client.  
> This would me that, when an unauthorized client attempts connection;-
> the application will be distributed via the store- access via our
> authorized LiveCode client to server resources are logged &
> permitted - our authorized LiveCode client appropriately protects
> embedded URL, accounts & passwords - access via an unauthorized client
> to server resources via HTTP/HTTPS are exception logged, denied access
> & redirected to a ‘load our application’ page- access via an
> unauthorized client to server resources via mySQL are exception logged
> & denied access
> The above is fairly straight forward on a private closed network, but
> presents a challenge when hosting on on-rev.com or in the cloud.
> I would be interested if anyone has a product or white paper  or
> recommended strategy for the above.

Hi Ethan,

Firstly, only allow connections over HTTPS.  Redirect all HTTP requests 
to the corresponding HTTPS URL.  HTTPS will protect *all* connection 
information apart from the address of the server from snooping.  That 
includes all form data, all HTTP headers, all request URIs, etc.

Next, allocate a hard-to-guess token (e.g. a UUID) to each version of 
your app.  When your app sends *any* request to the server, specify the 
token in the "Authorization" HTTP header, e.g.

     Authorization: token 098dd825-34a3-4158-97bf-24a82dc10a4b

Deny all HTTPS requests that do not specify a permitted token.  Usually 
you would deny the request with a "403 Forbidden" error.

Ideally, you would provide each user with a unique token.  For example, 
you could provide a service endpoint https://example.org/login, which 
would permit access with the app's token, and accept a username and 
password.  If the username and password are valid, the response would be 
"200 OK" and the body of the page would be a new session UUID for that 
user.  That UUID could then be used as a token for accessing other 
resources.

In summary:

- Allow access only over HTTPS
- Deny all requests which lack a valid token in the headers
- Consider a scheme that allocates per-user/per-device tokens

                                               Peter

-- 
Dr Peter Brett <peter.brett at livecode.com>
LiveCode Engine Development Team





More information about the use-livecode mailing list