View previous topic :: View next topic |
Author |
Message |
CADbloke
Joined: 07 Jan 2016 Posts: 25 Location: Sydney
|
Posted: Tue Apr 25, 2017 9:08 am Post subject: Floating license server on the Internet |
|
|
Greetings
I am pondering the feasibility of running a floating license server on the Internet as an alternative to the client running it internally on their network.
If it's a truly dumb idea - why?
I see in \SampleLicenseService\LicenseServer.cs there can be only a single instance, is that a windows service thing or is it so the client can't spin up multiple servers to dole out as many floating licenses as they want?
Am I correct in thinking that the sample floating license server is attached to a license key so each customer would need their own service?
If it's still not my dumbest idea (so far), I am pondering the feasibility of something that looks a little like https://github.com/postsharp/PostSharp.LicenseServer ...but not enough to fall foul of their plethora of NDA warnings ... in a public repo with an MIT license. uh, WUT? Is ok, I told them nice and subtle like.
I was thinking it could have an admin portal for client admin - they add clients who get their license / guid & server address emailed to them. The admin can remove clients too and would be responsible for the root license. Admin sees a client usage log, perhaps. Sounds like fun, right?
Perhaps the Central floating server could find the correct license file in a local directory by matching the requester to the Customer. This would, of course, complicate housekeeping. Or not, I suppose it could just talk straight to the ILS database. That would probably be more sensible, eh? I should cross out that first bit, eh? 4 hours sleep.
Thoughts? |
|
Back to top |
|
|
Infralution
Joined: 28 Feb 2005 Posts: 5027
|
Posted: Wed Apr 26, 2017 10:38 am Post subject: |
|
|
It would be feasible to implement an internet based floating license server however this would have more in common with our authentication server than it would with the sample floating license server. We have considered the possibility of adding something like this functionality to the authentication server.
From a customers point of view the disadvantage of a license server that they don't host is that if your website goes down (or their internet connectivity) then they can't use their product.
The other aspect is that (as you have pointed out) the customer would probably have to have some way to manage license. It would also put a MUCH larger load on the authentication service - since each application instance would have to contact the service regularly (with a heartbeat) so that if an application crashes without releasing its license the server is able to detect this and release the license automatically. The sample license server does this. In its case the network traffic is all internal to the network and only computers belonging to the customer are sending heartbeats to the server so there isn't too much traffic. _________________ Infralution Support |
|
Back to top |
|
|
CADbloke
Joined: 07 Jan 2016 Posts: 25 Location: Sydney
|
|
Back to top |
|
|
CADbloke
Joined: 07 Jan 2016 Posts: 25 Location: Sydney
|
Posted: Thu Nov 09, 2017 10:19 pm Post subject: |
|
|
Yeah, so they asked about it. I will need to do this to license plugins for AutoCAD etc. because they have monthly and annual subscription options that let you use your software on any computer, as long as it is one at a time.
Infralution wrote: | From a customers point of view the disadvantage of a license server that they don't host is that if your website goes down (or their internet connectivity) then they can't use their product. |
Yah, I think there would need to be some caching and a fall-back involved there. I suppose that would leave the system open to gaming if they were really sophisticated about it but I think the kind of people who do that are both rare and not worth bothering with.
The heartbeat wouldn't need to be especially frequent, it could probably be just at the start and end of a session and expire the local cached license after an arbitrary time of inactivity or lack of connectivity. I need to check for multiple sessions on the same computer (ok by me) but that's yet another vulnerability if the check isn't thorough. Multiple sessions should just use the same license, actually.
Infralution wrote: | if an application crashes without releasing its license the server is able to detect this and release the license automatically. |
This would really only be problematic if the next license request was from a different computer. If you get a license request from the same endpoint that currently owns the lease then you could hand it the existing lease, or (better) the app could look for a locally cached license and talk to the server about that license.
You would certainly want to limit the number of leases whose local lease hasn't expired, and tie them tightly to the hardware profile (which won't change during a session apart from network adapters turning on & off) but this is probably another edge case of people I shouldn't bother with. It would be relatively easy to know if multiple identical computer-names and user-names had the same lease on different hardware. Thinking out loud here for those following at home.
Well, there goes the weekend ... week ... month |
|
Back to top |
|
|
CADbloke
Joined: 07 Jan 2016 Posts: 25 Location: Sydney
|
Posted: Mon Feb 05, 2018 11:12 am Post subject: |
|
|
So basically it works like this: https://xkcd.com/974/
For those contemplating this - think the business problem through first, this is no trivial task. Do-able? Certainly. Best use of my limited time? Not today.
Next plan: tweak IPN with a CustomGenerator. |
|
Back to top |
|
|
|