Securing desktop applications is difficult. There’s only so much software companies can do when you can’t control the machine the application is installed on or who has physical access. Still, it's essential to do everything we can - especially when sensitive medical data is involved.
Enter our new API: the Halo Cloud Desktop API.
With stricter token-based auth, limited endpoint access, and the ability to integrate with existing auth systems used by desktop applications, it is designed to better protect practices and integrators from the risks surrounding desktop applications.
It also comes with some potential performance improvements.
Halo’s original cloud APIs were designed to be called from cloud infrastructure, such as Microsoft Azure or Amazon AWS. These services have layers upon layers of security measures built in, plus dozens more that can be configured as needed. This makes cloud infrastructure a relatively trustable environment, which means that “secure” auth patterns don’t tend to be as onerous as they otherwise could be.
Desktop applications have none of these protections. Software vendors have no control over the hardware the application is installed on, what other software exists on that machine, whether there are any security measures in place, or who has physical access. There are certainly best practices that should be followed, but when it comes to protecting patient data, it is important that we hope for the best and prepare for the worst.
That’s why the Desktop API’s auth system is so different.
Halo’s existing API - what we call the Integrator API - uses subscriptions for authentication, data-level access controls for authorisation, sixteen-digit GUIDs for routing, plus a few extra safeguards.
The new Desktop API, in comparison, uses:
It also introduces a token renewal workflow, to enable access expiries.
All up, this adds several new layers of security, while also ensuring that there is no reason for auth details for the Integrator API (namely the subscription details) to end up on end-user machines. That is another key benefit of having two different APIs with different auth systems for different use cases - separation.
To look at the bigger picture, here’s what this means for integrators using the Integrator and Device APIs:
In addition to all the security improvements, using the Desktop API for desktop applications could have a performance improvement as well.
Currently, the recommended way for a desktop application to query Halo Cloud is to go through the integrator’s cloud. This adds an extra step in the journey, both there and back, which adds a small amount of extra overhead.
Using the Desktop API allows desktop applications to query Halo Cloud directly, removing that extra step and potentially adding a (small) performance improvement.
Full technical documentation of the Desktop API’s auth workflow can be found in our docs. However, for a quick overview:
The Desktop API Token is then used by the desktop application, in combination with its device ID, to authenticate the desktop application when sending queries.
The token will also need to be renewed periodically. The expiry of a specific token can be found in the relevant token request response, and renewal simply involves repeating at least steps 2-4.
Use of the Desktop API is subject to approval by the PMS you wish to use it for - please reach out to your partner program contact to discuss!