Der Connect Server beinhaltet eine eigenständige Benutzerverwaltung auf Basis des Microsoft Identity Frameworks. Diese kann bei Bedarf deaktiviert und durch eine Authentifizierung mittels Azure Active Directory ersetzt werden. Die hierfür notwendigen Schritte zur Konfiguration werden im Folgenden grob umrissen. Die Konfiguration solle unbedingt durch eine Person mit Erfahrung in den Bereichen Azure Active Directory und Authentifizierung über OIDC durchgeführt werden, um eventuelle Sicherheitslücken aufgrund von Konfigurationsfehlern auszuschließen.
Voraussetzungen
Für die Einrichtung benötigen Sie einen Azure AD Mandanten (Tenant). Sofern dieser noch nicht vorhanden ist, folgen Sie bitte den Schritten des Dokuments The Connect Server includes a standalone user administration based on the Microsoft Identity Framework. If required, this can be deactivated and replaced by authentication using Azure Active Directory. The configuration steps required for this are roughly outlined below. The configuration should be performed by a person with experience in the areas of Azure Active Directory and authentication via OIDC in order to rule out possible security gaps due to configuration errors.
Requirements
For the setup you need an Azure AD tenant. If this is not yet available, please follow the steps in the document https://docs.microsoft.com/deen-deus/azure/active-directory/develop/quickstart-create-new-tenant. Außerdem muss der Connect Server vollständig installiert und für den Zugriff über HTTPS konfiguriert sein.
Vorbereitungen
Registrieren des Connect Servers
...
Also, the Connect Server must be fully installed and configured for access over HTTPS.
Preparations
Registering the Connect Server
Log in to the Azure Portal (https://portal.azure.com)
...
and navigate to the Azure Active Directory
...
Wählen Sie den Unterpunkt “App registrations” aus und klicken Sie auf “New registration”.
...
service.
Select the subitem "App registrations" and click on "New registration".
Enter a name (e.g. "Connect Server AAD") and select the account types that can log on to the Connect Server (e.g. only accounts from your own organization). The Redirect URI field can be left blank, it will be added in a later configuration step. Unless your domain has been verified as a publisher, uncheck the "Permissions → Grant admin consent to openid and offline_access
...
...
Nun werden einige Informationen der neu registrierten App angezeigt (im folgenden Screenshot durch xxx… unkenntlich gemacht). Kopieren Sie die Werte für die Felder “Display name“, “Application (client) ID” und “Directory (tenant) ID” oder drucken Sie diese aus. Diese Werte werden für spätere Konfigurationsschritte benötigt.
...
...
Navigieren Sie nun in den Bereich “Manage → Branding & Properties” und kopieren Sie die dort unter “Publisher Domain” angezeigte Domäne oder drucken Sie diese Informationen aus. Auch dieser Wert wird für spätere Konfigurationsschritte benötigt.
...
...
Wechseln Sie nun in den Bereich “Expose an API” und klicken Sie auf “Add a scope”. Es erscheint ein neuer Bereich mit einem Vorschlag für die URI des neu angelegten Scopes. Klicken Sie auf die Schaltfläche “Save and continue“ um fortzufahren.
...
...
Vervollständigen Sie nun die fehlenden Informationen wie im folgenden Screenshot. Kopieren Sie den Scope-Namen (hier: “API.Access”) sowie die darunter angezeigte URI oder drucken Sie die Informationen aus. Diese Werte wird für spätere Konfigurationsschritte benötigt. Klicken Sie auf die Schaltfläche “Add scope”, um die Änderungen zu sichern.
...
...
Wechseln Sie nun in den Abschnitt “Authentication“ und klicken Sie im Bereich “Platform configurations“ auf die Schaltfläche “Add a platform”. Daraufhin wird auf der rechten Seite die Auswahl der verfügbaren Plattformen angezeigt. Klicken Sie hier auf “Web”.
...
...
permission" checkbox - otherwise this checkbox will not be displayed. Now click the Register button to register the new app in Azure AD.
Now some information of the newly registered app is displayed (made unrecognizable by xxx... in the following screenshot). Copy or print the values for the fields "Display name", "Application (client) ID" and "Directory (tenant) ID". These values are needed for later configuration steps.
Now navigate to the "Manage → Branding & Properties" area and copy the domain displayed there under "Publisher Domain" or print this information. This value is also needed for later configuration steps.
Now switch to the "Expose an API" area and click on "Add a scope". A new area appears with a suggestion for the URI of the newly created scope. Click on the "Save and continue" button to continue.
Now complete the missing information as shown in the following screenshot. Copy the scope name (here: "API.Access") and the URI displayed below it or print the information. These values will be needed for later configuration steps. Click the "Add scope" button to save the changes.
Now switch to the "Authentication" section and click the "Add a platform" button in the "Platform configurations" area. The selection of available platforms is then displayed on the right-hand side. Click on "Web" here.
In the Redirect URIs field, enter the value "https://localhost/authentication/oidc/
...
signin" (if you are not using the default port 443 for HTTPS, add the port specification). In the Front-channel logout URL field, enter the value "https://localhost/authentication/oidc/
...
Klicken Sie nun im Bereich “Redirect URIs” auf die Schaltfläche “Add URI” und erfassen Sie alle weiteren URIs unter denen die Connect Server Installation erreicht werden kann. Ergänzen Sie hierbei sämtliche URIs um den Pfad “/authentication/oidc/signin“. Sofern die Connect Server Installation vom Internet aus erreichbar ist, ersetzen Sie in unter “Front-channel logout URL” den URI-Teil “https://localhost“ (ggf. inkl. Portangabe) durch den tatsächlich vom Internet aus sichtbaren Hostnamen und Port. Klicken Sie auf die Schaltfläche “Save“, um die Änderungen zu speichern.
...
...
Wechseln sie nun in den Bereich “App roles” und legen Sie mit Hilfe der Schaltfläche “Create app role” die in untenstehender Tabelle aufgelisteten Rollen an. Die Rollenliste sollte am Ende folgendermaßen aussehen:
...
Rollendefinitionen für den Connect Server
...
signout" (if you are not using the default port 443 for HTTPS, add the port information). In the Implicit grant and hybrid flows section, make sure that the Access tokens checkboxes are selected. not is activated. Then activate the "ID Tokens" checkbox. Then click on the "Configure" button.
Now click the "Add URI" button in the "Redirect URIs" area and enter all additional URIs under which the Connect Server installation can be reached. Add the path "/authentication/oidc/signin" to all URIs. If the Connect Server installation can be reached from the Internet, replace the URI part "/authentication/oidc/signin" in the "Front-channel logout URL".https://localhost" (incl. port specification, if applicable) by the host name and port actually visible from the Internet. Click the "Save" button to save the changes.
Now switch to the "App roles" section and create the roles listed in the table below using the "Create app role" button. The role list should look like this at the end:
Role definitions for the Connect Server
The following table lists the roles supported by the Connect Server.
Display Name | Type | Value | Description |
---|---|---|---|
Administrator | Users/Groups | Administrator | A Connect Server Administrator with unrestricted access. |
Connection Administratoradministrator | Users/Groups | ConnectionAdministrator | A user with the authorization to create, change and delete connections. |
Database Administratoradministrator | Users/Groups | DatabaseAdministrator | A user with the authorization to perform database management tasks. |
Flow Administratoradministrator | Users/Groups | FlowAdministrator | A user with the authorization to create, change and delete flows. |
Monitoring Administratoradministrator | Users/Groups | MonitoringAdministrator | A user with the authorization to monitor, modify, restart, and delete tasks. |
Monitoring User | Users/Groups | MonitoringUser | A user with the authorization to monitor tasks. |
Service Administratoradministrator | Users/Groups | ServiceAdministrator | A user with the authorization to create, change and delete service definitions. |
...
Registering the Connect Server
...
frontend
Log in to the Azure Portal
...
...
and navigate to the Azure Active Directory
...
Wählen Sie den Unterpunkt “App registrations” aus und klicken Sie auf “New registration”.
...
service.
Select the subitem "App registrations" and click on "New registration".
Enter a name (e.g. "Connect Server Frontend AAD") and select the account types that can log on to the Connect Server (e.g. only accounts from your own organization). The Redirect URI field can be left blank, it will be added in a later configuration step. Unless your domain has been verified as a publisher, uncheck the "Permissions → Grant admin consent to openid and offline_access
...
...
Nun werden einige Informationen der neu registrierten App angezeigt (im folgenden Screenshot durch xxx… unkenntlich gemacht). Kopieren Sie die Werte für die Felder “Display name“ und “Application (client) ID” oder drucken Sie diese aus. Diese Werte werden für spätere Konfigurationsschritte benötigt.
...
...
Wechseln Sie nun in den Abschnitt “Authentication“ und klicken Sie im Bereich “Platform configurations“ auf die Schaltfläche “Add a platform”. Daraufhin wird auf der rechten Seite die Auswahl der verfügbaren Plattformen angezeigt. Klicken Sie hier auf “Single-page application”.
...
...
permission" checkbox - otherwise this checkbox will not be displayed. Now click the Register button to register the new app in Azure AD.
Now some information of the newly registered app is displayed (made unrecognizable by xxx... in the following screenshot). Copy or print the values for the fields "Display name" and "Application (client) ID". These values are needed for later configuration steps.
Now switch to the "Authentication" section and click the "Add a platform" button in the "Platform configurations" area. The selection of available platforms is then displayed on the right-hand side. Click on "Single-page application" here.
Enter the value "https://localhost/authentication/login-
...
...
Klicken Sie nun im Bereich “Redirect URIs” auf die Schaltfläche “Add URI” und erfassen Sie alle weiteren URIs unter denen die Connect Server Installation erreicht werden kann. Ergänzen Sie hierbei sämtliche URIs um den Pfad “/authentication/login-callback“. Klicken Sie auf die Schaltfläche “Save“, um die Änderungen zu speichern.
...
...
Wechseln Sie nun in den Bereich “API permissions”. Die Berechtigung “User.Read” sollte4 in der Übersicht der vorhandenen Berechtigungen bereits eingetragen sein. Sollte die nicht der Falls sein, dann ergänzen Sie diese. Klicken Sie nun auf die Schaltfläche “Add permission” und klicken Sie am oberen Bildrand auf “My APIs”. In der App-Liste sollte nun ein Eintrag für den oben als App registrierten Connect Server angezeigt werden. Klicken Sie nun auf diesen Eintrag.
...
...
Markieren Sie nun die zuvor angelegte Berechtigung “Access.API” und klicken Sie auf die Schaltfläche “Add permissions”.
...
...
Klicken Sie nun auf die Schaltfläche “Grant admin consent” um die neu zugeordnete Berechtigung zu genehmigen.
...
...
Bestätigen Sie die Genehmigung durch einen Klick auf die Schaltfläche “Yes”.
...
...
Überprüfen Sie, dass die nun konfigurierten Berechtigungen wie folgt aussehen:
...
...
Wechseln sie nun in den Bereich “App roles” und legen Sie mit Hilfe der Schaltfläche “Create app role” die in untenstehender Tabelle aufgelisteten Rollen an. Die Rollenliste sollte am Ende folgendermaßen aussehen:
...
Rollendefinitionen für den Connect Server Frontend
...
callback" in the "Redirect URIs" field (if you are not using the standard port 443 for HTTPS, add the port specification). In the Implicit grant and hybrid flows section, make sure that the Access tokens and ID tokens checkboxes are selected. not are activated. Then click on the "Configure" button.
Now click the "Add URI" button in the "Redirect URIs" area and enter all additional URIs under which the Connect Server installation can be reached. Add the path "/authentication/login-callback" to all URIs. Click the "Save" button to save the changes.
Now switch to the "API permissions" area. The "User.Read" permission should4 already be entered in the overview of existing permissions. If this is not the case, then add it. Now click on the "Add permission" button and click on "My APIs" at the top of the screen. In the app list you should now see an entry for the Connect Server registered as an app above. Now click on this entry.
Now highlight the "Access.API" permission you created earlier and click the "Add permissions" button.
Now click on the "Grant admin consent" button to approve the newly assigned permission.
Confirm the approval by clicking the "Yes" button.
Verify that the permissions now configured are as follows:
Now switch to the "App roles" section and create the roles listed in the table below using the "Create app role" button. The role list should look like this at the end:
Role definitions for the Connect Server frontend
The following table lists the roles supported by the Connect Server frontend.
Display Name | Type | Value | Description |
---|---|---|---|
Administrator | Users/Groups | Administrator | A Connect Server Administrator with unrestricted access. |
Connection Administratoradministrator | Users/Groups | ConnectionAdministrator | A user with the authorization to create, change and delete connections. |
Database Administratoradministrator | Users/Groups | DatabaseAdministrator | A user with the authorization to perform database management tasks. |
Flow Administratoradministrator | Users/Groups | FlowAdministrator | A user with the authorization to create, change and delete flows. |
Monitoring Administratoradministrator | Users/Groups | MonitoringAdministrator | A user with the authorization to monitor, modify, restart, and delete tasks. |
Monitoring User | Users/Groups | MonitoringUser | A user with the authorization to monitor tasks. |
Service Administratoradministrator | Users/Groups | ServiceAdministrator | A user with the authorization to create, change and delete service definitions. |
...
Configuring the Connect
...
Server
In de Konfigurationsdatei des Connect Servers (normalerweise “appsettings.json”) muss folgender Block ergänzt werdenthe Connect Server configuration file (usually "appsettings.json") the following block must be added:
Code Block | ||
---|---|---|
| ||
"Security": { "Identity": { "AzureAd": { "Common": { "Instance": "https://login.microsoftonline.com/", "Domain": "mycompany.com", "TenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }, "Backend": { "ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "Audience": "api://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }, "Frontend": { "ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "Scope": "api://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/API.Access" } } } }, |
Die einzelnen Werte haben folgende BedeutungThe individual values have the following meaning:
Name | BeschreibungDescription |
---|---|
Security.Identity.AzureAd.Common.Instance | Die Basis-URI der zu verwendenden Azure AD-Instanz. In der Regel muss hier der Wert “httpsThe base URI of the Azure AD instance to be used. As a rule, the value "https://login.microsoftonline.com/“ stehen" must be entered here. |
Security.Identity.AzureAd.Common.DomainDer Name | der Domäne deren Benutzer sich anmelden dürfen (z. B. “galileo-group.de” oder “mycompany.com”The name of the domain whose users are allowed to log in (e.g. "galileo-group.de" or "mycompany.com"). |
Security.Identity.AzureAd.Common.TenantId | Die Tenant ID des zugehörigen Microsoft Tenants. Diese wurde in den Schritten zur Azure AD Konfiguration ermitteltThe tenant ID of the associated Microsoft tenant. This was determined in the Azure AD configuration steps. |
Security.Identity.AzureAd.Backend.ClientId | Die Client ID der im Azure AD registrierten App für den The client ID of the app registered in Azure AD for the Connect Server. |
Security.Identity.AzureAd.Backend.Audience | Die URI des bei der Azure AD Konfiguration angelegten Scopes ohne “The URI of the scope created during Azure AD configuration without "/API.Access”Access". |
Security.Identity.AzureAd.Frontend.ClientId | Die Client ID der im Azure AD registrierten App für das Connect Server FrontendThe client ID of the app registered in Azure AD for the Connect Server frontend. |
Security.Identity.AzureAd.Frontend.Scope | Die URI des bei der Azure AD Konfiguration angelegten ScopesThe URI of the scope created during Azure AD configuration. |
After changing the configuration, a customized version of the start page is generated for the WebAssembly-based GUI, which references other JavaScript libraries. Since the browser may use an old version of this page from the browser cache the next time it is called, this may result in errors while executing JavaScript code. In this case, force the cached page to be refreshed by holding down the Shift key while clicking the refresh page button in the browser.
Using Basic Authentication for Connections
When using Azure AD, there are a few things to keep in mind if you want to authenticate individual connections using the HttpBasicAuthenticationHandler server handler:
The app registration for the server application must be adapted to allow logon via user and password. To do this, activate the "Allow public client flows" option under Authentication → Advanced settings.
Two-factor authentication must not be active for the user used, as this prevents logging in using a user name and password.
The user used must have already successfully logged in to the Connect Server backend (URI .../server) at least once and agreed to the requested permissions.
Currently, only the combination of user and password is checked for validity. Requesting specific scopes may be enabled in later versions of Connect Server.
Especially for a publicly accessible Connect Server, the configuration changes described above represent a weakening of security, so the risk and benefits of this scenario should be carefully assessed.