Flexmonster Software License Agreement (“Agreement”) has been significantly revised and is effective as of September 30, 2024.
The following modifications were made:
The modified version of Flexmonster Software License Agreement is available here.
Downloading, installing, and/or continuing to use Flexmonster Software after September 30, 2024, constitutes Licensee’s acceptance of the terms and conditions of the modified version of Flexmonster Software License Agreement. If Licensee does not agree to any of these terms and conditions, they must cease using Flexmonster Software and must not download, install, use, access, or continue to access Flexmonster Software. By continuing to use Flexmonster Software or renewing the license under License Model or Maintenance after the effective date of any modifications to Agreement, Licensee accepts and agrees to be bound by the terms and conditions of the modified Agreement.
This tutorial describes how to configure the data access security in Flexmonster Data Server used as a Windows/Unix service. To connect the Data Server to your data, refer to the Data sources guide. To install the Data Server as a service, see the Installing Flexmonster Data Server as a Windows/Unix service guide.
Flexmonster Data Server supports different essential security configurations, such as built-in basic authorization and HTTPS.
By default, Flexmonster Data Server is accessible to anyone who can reach its host. Using the built-in basic authorization, you can restrict access to Flexmonster Data Server.
Open Flexmonster Admin Panel and go to Security > Add New User. Define a username and password, then select Create to add the user.
Note Once a user is created, you cannot change the username.
Learn more about managing the users in our guide on the Admin Panel.
Go to the Settings tab. Turn on the basic authorization using the Basic auth toggle switch:
Basic Authorization requires certain origins to be defined in the Access-Control-Allow-Origin
header. Origin is a domain that sends requests to Flexmonster Data Server (e.g., http://localhost:8080
or https://example.com
).
To specify origins that can send requests to the Data Server, fill in the Allow origin input field on the Settings tab.
To specify several origins, separate them with a comma:
In this step, credentials are configured in Flexmonster Pivot. There are two ways to configure credentials:
withCredentials
property: dataSource: {In this case, you need to enter your login and password when first connecting to Flexmonster Data Server.
type: "api",
url: "http://localhost:9500",
index: "data",
withCredentials: true
}
dataSource: {
type: "api",
url: "http://localhost:9500",
index: "data",
requestHeaders: {
"Authorization": "Basic QWxhZGRpbjpPcGVuU2VzYW1l"
}
}
Note The header should be specified in the standard for basic authentication format.
In this case, the authorization will be automatic, and the browser will not ask for the login and password.
All data sent by HTTP is not encrypted and can be inspected. To make the Data Server more secure, we added an option to enable the HTTPS protocol. Follow the steps below to configure a secure HTTPS connection.
Open Flexmonster Admin Panel and go to the Settings tab. Turn on HTTPS using the HTTPS toggle switch:
Add an SSL/TLS certificate. There are three ways to add a certificate:
.pfx
file..pem
file.To add a certificate as a .pfx
file, do the following:
PFX Certificate
.Note Adding the certificate is possible only when HTTPS is enabled.
Your configuration should look similar to the following:
To add a certificate as a .pem
file, do the following:
PEM Certificate
.Note Adding the certificate is possible only when HTTPS is enabled.
Your configuration should look similar to the following:
To add a certificate using its subject and store, do the following:
Subject-Store
.Current User
. If the needed location is Local Machine
, select this option in the Location configuration.Note Adding the certificate is possible only when HTTPS is enabled.
Your configuration should look similar to the following:
The Protocols configuration establishes the HTTP protocols enabled on a connection endpoint or for the server. The Protocols configuration can have one of the following values: HTTP1
, HTTP2
, and HTTP1 and HTTP2
. For example:
If you need to use your own authorization mechanism, you can restrict public access to Flexmonster Data Server and enable access to it through a reverse proxy. This approach requires implementing the proxy, which is responsible for data access control. The proxy will decide which requests should be accepted and passed to the Data Server, and which requests should be declined.
Note The proxy has to implement the custom data source API to handle requests from Flexmonster Pivot. Then the proxy will be able to redirect Flexmonster Pivot’s requests to the Data Server. To see the full list of requests sent by Flexmonster Pivot, refer to our documentation.
Role-based access is supported when using Flexmonster Data Server as a DLL. Flexmonster.DataServer.Core.dll
allows performing server-side filtering, so it becomes possible to show different subsets of the data to different user groups.
To demonstrate the usage of server-side filtering for role-based permissions, we created an ASP.NET application with a custom server using Flexmonster.DataServer.Core.dll. The GitHub repository contains a solution file DemoDataServerCore.sln
, so the sample can be opened and launched via Visual Studio.
To start the sample application from the console, run the following commands:
cd DemoDataServerCore
dotnet restore
dotnet run
To see the result, open http://localhost:5000/
in the browser.
On the page, there is the pivot table and a dropdown menu. Select a role from the menu to see how it affects the data shown in Flexmonster.
To see how the server-side filtering is implemented in the sample server, refer to the FlexmonsterAPIController.cs file.
To learn more about the server filter, see the Implementing the server filter guide.
When using the Data Server as a service, connection strings and other configurations are stored in the flexmonster-data-server/flexmonster-config.json file. If you want to store sensitive configurations more securely, use the Data Server as a console application and set the configurations dynamically as command-line arguments or environment variables.
Note Setting configurations dynamically is not available for the Data Server as a service.
You may be interested in the following articles: