Federation

This section explains all configuration items related to federation, which refers to the functionality of connecting multiple Kadi4Mat instances. Currently, this mainly facilitates federated search of different resources stored in one or more “external” Kadi4Mat instances from within another instance of Kadi4Mat. The central configuration is done via the FEDERATED_INSTANCES configuration item, as explained below.

Note

Using federation requires an account in all Kadi4Mat instances that should be connected. This is the case for both the system administrator, initially configuring the connection, and the users of this functionality.

FEDERATED_INSTANCES

A dictionary specifying one or more external Kadi4Mat instances to enable for federated search in the following form:

{
    "example": {
        "title": "Kadi4Mat Example",
        "url": "https://kadi4mat.example.edu",
        "client_id": "<client_id>",
        "client_secret": "<client_secret>",
    },
}

Each dictionary key specifies a unique name (here: example) of the external Kadi4Mat instance, mapping to the instance-specific configuration. The respective configuration items are described in the next section.

Defaults to {}.

Instance configuration

The following configuration options have to be specified for each external Kadi4Mat instance:

title

The title of the external Kadi4Mat instance which will be displayed to users within the GUI of Kadi4Mat.

Defaults to the unique name of the corresponding instance.

url

The full URL of the external Kadi4Mat instance.

Defaults to None.

client_id

The client ID required to perform the OAuth2 authorization flow with the external Kadi4Mat instance. It can be obtained (together with the client secret) directly via the GUI of the respective external Kadi4Mat instance by navigating to Settings > Applications and creating a new application. Besides specifying some general application metadata, the following settings are necessary for the integration to work correctly:

  • Redirect URIs: Must be in the form of https://<server_name>/settings/services/authorize/<name>, where the <server_name> placeholder corresponds to the configured SERVER_NAME of Kadi4Mat, while the <name> placeholder corresponds to the unique name of the respective and configured external Kadi4Mat instance.

  • Scopes: It is recommended to limit the scopes to the ones necessary to perform searching of all supported resources, which corresponds to collection.read, record.read and template.read. In addition, the user.read scope is required if information about the creators of resources should be shown.

Defaults to None.

client_secret

The client secret required to perform the OAuth2 authorization flow with the external Kadi4Mat instance. See the client_id configuration option on how to obtain it.

Defaults to None.