Web applications are technically different from traditional, desktop applications, in several ways. Consequently, they come with some unique challenges and options for licensing. The first challenge with licensing a web application is determining its license model. In addition to the many license models that apply to all applications, web applications can also have licenses limited by: web server, web site URL, active user accounts, active sessions, features, number of database records (such as tasks, products, licenses, invoices, and more).
Binding a license to an individual, physical server is straight-forward; however, there may be more you need to know about licensing software on a virtual or cloud server. This is because cloud servers are basically virtual machines, which can move between physical servers (even while running) without notice.
Licensing by web site URL is a popular and effective way to license a web application for use with a particular web site or organization. If this is the only constraint enforced on the license, it makes for a generous amount of flexibility for use on multiple servers (in high-availability configurations) and cloud servers. However, the added flexibility could enable abuse of a license if this constraint is not paired with something else.
An active user account can also be identified via a login of a user who is allowed to access the web application. Limiting the number of active user accounts is another popular approach used when licensing web applications. This is especially useful if the goal is to license the software by user. An administrator can temporarily or permanently disable user logins so that other users can be added, keeping the number of active user accounts below the licensed limit. When the limit is reached, the administrator's ability to add more user accounts will be disabled until others are deleted or deactivated.
It is important to note that HTTP is a stateless protocol, meaning the web server has no way to know if the user has closed the browser tab or window. Once a user has logged into the web application, there are many ways to authenticate the user on each web page request as they move from page to page. It is common for web application developers to use the database to track each user's session and pass this session ID around in a temporary cookie.
When using a session table in your database, it is technically possible to leverage this to limit the number of active/concurrent sessions. However, if the users close their browser tab or window without first logging-out of your web application, your session management system would need to track the last time the session accessed a page and automatically close inactive sessions. If the user of a closed session attempts to access the web application, they should be redirected back to the login page, where the active session licensing check can be re-evaluated.
This type of licensing allows you to activate one or more modules, menus, or features within a web application. This concept can also be used to have variations of a single application available in tiered versions. For example, Software Product XYZ can be marketed and sold in Platinum, Gold, and Silver Editions, with each edition, or version, providing the end-user with a different set of features and functions. As the customer’s needs change, the license can be updated on the central licensing server and immediately refreshed by the client to enable the new functionality.
One way to charge your customer based upon the value your software is providing is to set fees based upon actual usage (much like how the electric company and other utilities work). Depending on the nature of your web application, this could take many forms such as:
Whether you want the user to pre-pay for certain levels of access or you want to provide utility-like usage billing, there are many ways to approach consumption-based licensing.
Since web applications have the potential to be used by many users concurrently on a single server, it is extremely important to consider the peak loads you expect your application to encounter, and design and load test accordingly. Here are some things to keep in mind when licensing a web application that has heavy traffic:
Web servers are often in environments with strict firewall policy that may limit or completely prevent any outbound traffic from making it to its destination. Consequently, this kind of firewall policy can prevent a web application from phoning-home to validate and refresh its license. This is important to consider when enforcing your licensing requirements, especially when the web application provides business or mission critical functionality to its users.
There is never a lack of considerations with regard to licensing applications, and web applications only add to that list. If you’re currently using or considering using the SoftwareKey System, and you have questions about licensing a web application with it, our team is just a click or a call away. Contact us here.
Abram Pousada is one of the passionate Software Engineers with SoftwareKey.com. He started his career with SoftwareKey.com when he was in high-school and has been with the company for over a decade. After-hours, the self-proclaimed geek enjoys a variety of engaging hobbies ranging from even more programming to video games and mountain biking.
Licensing Plug-ins for Other Applications: 5 Tips
Why Software Licensing is a Smart Move
What you need to know about distributing and updating licensed software
Licensing for non-visual software and services
7 Ways License Automation Increases Revenue and Saves Time
5 Essential Strategies to Boost Software Revenue through Licensing