As I continue to refine my working approach to deploying proprietary Mathematica code (see:

Prevent package from being opened in a notebook interface and

Run encoded package code through .NET/Link?).

I've gotten to wondering about a next step.

I currently create a pair of compiled Mathematica Libraries. One with my proprietary code and a second which supplies authorizations of machines or users designated to use the libraries. The first calls the second and if the user or the machine does not have permission it closes down the kernel.

This works ok, except since I don't develop in a Windows environment I have to do the compilation on a Windows machine in my client's offices. Not the best situation for code security.

I started wondering how Wolfram identifies authorized users. I further wondered if one could overload the Wolfram authorization functions for a specific authorized machine or user to use a specific compiled library.

Can one access this or use it in this way?

Alternatively, does any means exist where I could maintain authorizations in the "cloud"? I could readily update authorizations and I could then simply give the client read only access to the authorization list. This would work great as it could operate independently of platform and any specific libraries or code. It would also make for very easy license maintenance.

Mathematica Online, looks promising for this:

enter image description here

but I don't know when Wolfram will release it.

Can anyone suggest a currently viable way to do this?

  • $\begingroup$ The system I have cobbled together uses Amazon Web Services. Initial authentication is handled via Java. I keep session data updated using MySql (in AWS RDS), and on my webserver (EC2) I have simple PHP scripts (super easy to query MySql) that accept credentials via POST and return temporary access tokens (expire after 2 seconds). These tokens decode into their own expiration time. Locally I can check whether the decoded token is < AbsoluteTime, and I also track their status in MySql (for query-based applications). $\endgroup$
    – mfvonh
    Jun 3, 2014 at 22:35


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.