Skip to content

Commit cb29cfc

Browse files
Update licensing model
1 parent 4c56986 commit cb29cfc

File tree

5 files changed

+262
-60
lines changed

5 files changed

+262
-60
lines changed

10/umbraco-forms/installation/the-licensing-model.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Umbraco Forms is a commercial product. You have a 14-day free trial to try out t
77
Licenses are sold per domain and will also work on all subdomains. With every license, you will be able to configure two development/testing domains.
88

99
{% hint style="info" %}
10-
The licenses are not bound to a specific product version. They will work for all versions of the related product.
10+
The licenses are not bound to a specific product version. They will work for all versions of the related product, but version 17+ will only be available through a subscription based license (see [announcement](https://github.com/umbraco/Announcements/issues/25)).
1111
{% endhint %}
1212

1313
### Example

13/umbraco-forms/installation/the-licensing-model.md

Lines changed: 130 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
# Licensing
22

3-
Umbraco Forms is a commercial product. You have a 14-day free trial to try out the product. After your trial expires, you'll need to have a **valid license** to keep using the product on your site.
3+
Umbraco Forms is a commercial product. You can run Umbraco Forms unrestricted locally without the need for a license. Running Umbraco Forms in the public domain will require a valid license.
4+
5+
Version 13 supports both the one-off purchase and (in 13.6+) subscription license.
46

57
## How does it work?
68

79
Licenses are sold per domain and will also work on all subdomains. With every license, you will be able to configure two development/testing domains.
810

911
{% hint style="info" %}
10-
The licenses are not bound to a specific product version. They will work for all versions of the related product.
12+
The licenses are not bound to a specific product version. They will work for all versions of the related product, but version 17+ will only be available through a subscription based license (see [announcement](https://github.com/umbraco/Announcements/issues/25)).
1113
{% endhint %}
1214

1315
Let's say that you have a license configured for your domain, `mysite.com`, and you've configured two development domains, `devdomain.com` and `devdomain2.com`.
@@ -49,50 +51,38 @@ This is an add-on domain for existing licenses. Refunds will not be given for th
4951

5052
You can look at the pricing, features, and purchase the license on the [Umbraco Forms](https://umbraco.com/products/add-ons/forms/) page.
5153

52-
When you've bought a license you need to configure it with your domains. You can either configure your license right away or you can do it later by visiting your account on Umbraco.com.
53-
54-
1. Login to your account at [shop.umbraco.com](https://shop.umbraco.com).
55-
2. Navigate to the **Manage Licenses** section.
56-
3. Locate your unconfigured Forms license and choose **Configure / Add domain**.
57-
4. Define the primary as well as up to two development domains for which the license will be used.
58-
5954
### Add additional domains
6055

61-
Once you have a configured Umbraco Forms license, you can add additional domains. This is relevant if you need your forms to be available on multiple public domains.
62-
63-
1. Login to your account at [shop.umbraco.com](https://shop.umbraco.com).
64-
2. Navigate to the **Manage Licenses** section.
65-
3. Locate your configured Forms license.
66-
4. Choose **Configure / Add domain**.
67-
68-
<figure><img src="./images/image.png" alt=""><figcaption></figcaption></figure>
69-
70-
5. Select **Click here to buy** at the bottom of the configuration page.
71-
6. Configure the additional domain after completing the purchase, or do it later via your account.
56+
If you require to add addition domains to the license, [reach out the sales team](https://umbraco.com/products/add-ons/forms/) with your request and they will manage this process.
7257

7358
### Reconfiguration of domains
7459

7560
Once a license has been configured with the domains, it is not possible to reconfigure them. An exception is when there is a mistake in the domain URL.
61+
7662
As reconfiguration is not possible, you will either need to purchase an additional domain or a [new license](https://umbraco.com/products/umbraco-forms/).
7763

7864
## Installing your license
7965

66+
You can configure either the one-off purchase license file or when using version 13.6+ the subscription license product key. We do not recommend having both a license file and product key configured, but if you have, the product key is checked first.
67+
68+
### Installing one-off purchase license file
69+
8070
Once you've configured your license with the correct domains, you are ready to install the license on your Umbraco installation.
8171

82-
1. Download your license from your Umbraco.com account - this will give you a `.lic` file
72+
1. Obtain the license from the sales team, they will send you a `.lic` file
8373
2. Place the file in the `/umbraco/Licenses` directory in your Umbraco installation
8474

8575
The `.lic` file must be placed in the `/umbraco/Licenses` directory to be registered by Umbraco Forms. If the file isn't placed correctly, the application will automatically switch to trial mode.
8676

87-
### Multiple license files
77+
#### Multiple license files
8878

8979
You can install multiple Umbraco Forms license files without merging them. Place each license file in the `/umbraco/Licenses` directory (or an alternative location). Each file should begin with `umbracoForms`, for example, `umbracoForms.example1.lic` and `umbracoForms.example2.lic`. This setup allows your installation to recognize multiple licensed domains.
9080

91-
### Alternative license location
81+
#### Alternative license location
9282

9383
If you can't include the license file in the `/umbraco/Licenses` directory for any reason, it is possible to configure an alternative location for the file.
9484

95-
It can be configured in the Umbraco installation's `appSettings.json` file by adding the following configuration:
85+
It can be configured in the Umbraco installation's `appsettings.json` file by adding the following configuration:
9686

9787
```json
9888
{
@@ -110,7 +100,7 @@ The value contains the path of your custom license directory relative to the roo
110100
This will also change the location for other Umbraco-related licenses in this project.
111101
{% endhint %}
112102

113-
## Federal Information Processing Standards (FIPS) Compliant Environments
103+
#### Federal Information Processing Standards (FIPS) Compliant Environments
114104

115105
The algorithm used to decrypt Forms licenses is not supported on locked down FIPS compliant environments, such as those used in the defense industry.
116106

@@ -129,4 +119,118 @@ Apply the following configuration with the appropriate algorithm - `DES` (the de
129119
"Licensing": {
130120
"LicenseEncodeAndDecodeAlgorithm": "DES|TripleDES|AES"
131121
},
132-
``````
122+
```
123+
124+
### Installing subscription license product key
125+
126+
Once you have received your license code it needs to be installed on your site.
127+
128+
1. Open the root directory for your project files.
129+
2. Locate and open the `appsettings.json` file.
130+
3. Add your Umbraco Forms license key to `Umbraco:Licenses:Umbraco.Forms`:
131+
132+
```json
133+
"Umbraco": {
134+
"Licenses": {
135+
"Umbraco.Forms": "YOUR_LICENSE_KEY"
136+
}
137+
}
138+
```
139+
140+
{% hint style="info" %}
141+
You might run into issues when using a period in the product name when using environment variables. Use an underscore in the product name instead, to avoid problems.
142+
143+
```json
144+
"Umbraco_Forms": "YOUR_LICENSE_KEY"
145+
```
146+
{% endhint %}
147+
148+
#### Verify the license installation
149+
150+
You can verify that your license is successfully installed by logging into your project's backoffice and navigating to the settings section. Here you will see a license dashboard which should display the status of your license.
151+
152+
### When and how to configure an `UmbracoApplicationUrl`
153+
154+
If you are running on a single domain for both your frontend and backend environments, it's not necessary to configure a `UmbracoApplicationUrl`.
155+
156+
If you have different domains for your frontend and backend, then it's advised that you configure an `UmbracoApplicationUrl` set to your backoffice URL. This helps the licensing engine know which URL should be used for validation checks. Without this configuration setting, the licensing engine will try and work out the domain to validate from the HTTP request object. This can lead to errors when switching between domains.
157+
158+
An `UmbracoApplicationUrl` can be configured in your `appSettings.json` file like so:
159+
160+
```json
161+
{
162+
"Umbraco": {
163+
"CMS": {
164+
"WebRouting": {
165+
"UmbracoApplicationUrl": "https://admin.my-custom-domain.com/"
166+
}
167+
}
168+
}
169+
}
170+
```
171+
172+
See the [Fixed Application URL](https://docs.umbraco.com/umbraco-cms/extending/health-check/guides/fixedapplicationurl) documentation for more details about this setting.
173+
174+
#### Configuring `UmbracoApplicationUrl` on Umbraco Cloud
175+
176+
If you are hosting on Umbraco Cloud you will find the configuration described above won't be reflected in your environment. The reason for this is that Umbraco Cloud sets this value as an environment variable set to the Cloud project domain (`<your project>.umbraco.io`). This overrides what is set via the `appsettings.json` file.
177+
178+
There are two options in this case:
179+
- Either the domains for each of your Cloud environments can be added to your license.
180+
- Or, for more control and to ensure this value is set correctly for other reasons, you can apply the configuration via code.
181+
182+
For example, in your `Program.cs`:
183+
184+
```csharp
185+
services.Configure<WebRoutingSettings>(o => o.UmbracoApplicationUrl = "<your application URL>");
186+
```
187+
188+
In practice, you will probably want to make this a bit more sophisticated. You can read the value from another configuration key, removing the need to hard-code it and have it set as appropriate in different environments. You can also move this code into a composer or an extension method if you prefer not to clutter up the `Program.cs` file.
189+
190+
#### Validating a license without an outgoing Internet connection
191+
192+
Some Umbraco installations will have a highly locked down production environment, with firewall rules that prevent outgoing HTTP requests. This will interfere with the normal process of license validation.
193+
194+
On start-up, and periodically whilst Umbraco is running, the license component used by Umbraco Forms will make an HTTP POST request to `https://license-validation.umbraco.com/api/ValidateLicense`.
195+
196+
If it's possible to do so, the firewall rules should be adjusted to allow this request.
197+
198+
If such a change is not feasible, there is another approach you can use.
199+
200+
You will need to have a server, or serverless function, that is running and can make a request to the online license validation service. That needs to run on a daily schedule, making a request and relaying it onto the restricted Umbraco environment.
201+
202+
To set this up, firstly ensure you have a reference to `Umbraco.Licenses` version 13.1 or higher. If the version of Forms you are using depends on an earlier version, you can add a direct package reference for `Umbraco.Licenses`.
203+
204+
Then configure a random string as an authorization key in configuration. This is used as protection to ensure only valid requests are handled. You can also disable the normal regular license checks - as there is no point in these running if they will be blocked:
205+
206+
```json
207+
"Umbraco": {
208+
"Licenses": {
209+
"Umbraco.Forms": "<your license key>"
210+
},
211+
"LicensesOptions": {
212+
"EnableScheduledValidation": false,
213+
"ValidatedLicenseRelayAuthKey": "<your authorization key>"
214+
}
215+
```
216+
217+
Your Internet-enabled server should make a request of the following form to the online license validation service:
218+
219+
```
220+
POST https://license-validation.umbraco.com/api/ValidateLicense
221+
{
222+
"ProductId": "Umbraco.Forms",
223+
"LicenseKey": "<your license key>",
224+
"Domain": "<your licensed domain>"
225+
}
226+
```
227+
228+
The response should be relayed exactly via an HTTP request to your restricted Umbraco environment:
229+
230+
```
231+
POST http://<your umbraco environment>/umbraco/licenses/validatedLicense/relay?productId=<product id>&licenseKey=<license key>
232+
```
233+
234+
A header with a key of `X-AUTH-KEY` and the value of the authorization key you have configured should be provided.
235+
236+
This will trigger the same processes that occur when the normal scheduled validation completes ensuring your product is considered licensed.

14/umbraco-forms/installation/the-licensing-model.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Umbraco Forms is a commercial product. You have a 14-day free trial to try out t
77
Licenses are sold per domain and will also work on all subdomains. With every license, you will be able to configure two development/testing domains.
88

99
{% hint style="info" %}
10-
The licenses are not bound to a specific product version. They will work for all versions of the related product.
10+
The licenses are not bound to a specific product version. They will work for all versions of the related product, but version 17+ will only be available through a subscription based license (see [announcement](https://github.com/umbraco/Announcements/issues/25)).
1111
{% endhint %}
1212

1313
Let's say that you have a license configured for your domain, `mysite.com`, and you've configured two development domains, `devdomain.com` and `devdomain2.com`.

15/umbraco-forms/installation/the-licensing-model.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Umbraco Forms is a commercial product. You have a 14-day free trial to try out t
77
Licenses are sold per domain and will also work on all subdomains. With every license, you will be able to configure two development/testing domains.
88

99
{% hint style="info" %}
10-
The licenses are not bound to a specific product version. They will work for all versions of the related product.
10+
The licenses are not bound to a specific product version. They will work for all versions of the related product, but version 17+ will only be available through a subscription based license (see [announcement](https://github.com/umbraco/Announcements/issues/25)).
1111
{% endhint %}
1212

1313
Let's say that you have a license configured for your domain, `mysite.com`, and you've configured two development domains, `devdomain.com` and `devdomain2.com`.

0 commit comments

Comments
 (0)