Workflows are not supported in your browser.
Please use a recent version of Chrome, Edge, Firefox or Safari to display this page.

SAML Single Sign-On (SSO) for v7

Metric Insights supports Single Sign-On (SSO) authentication, with Users being able to log into Metric Insights via a central Location (Identity Provider - IdP).

  • Metric Insights uses SAML (Security Assertion Markup Language) for authentication,
  • Some common SAML implementations that can be used are by Okta, Microsoft (ADFS), Oracle.

What version of MI are you using?

Video Tutorial - Example of OKTA Setup

Generate Metadata XML from Metric Insights

Append /simplesaml to the Metric Insights URL, i.e. https://<Metric Insights Server>/simplesaml

Generate Metadata XML from Metric Insights
  1. Open the Federation tab
  2. Click on [Show metadata] link 

Entity ID we are choosing on this step is using metricinsights-sp authentication source. The same  source is to be set in the SAML config in further steps.

SAML 2.0 SP Metadata - Google Chrome
  1. Copy the Metadata XML (yellow area)
  2. Provide that to your SAML Identity Provider (IdP)
  3. Request the provider to return a Metadata key (typically xml) that includes the user ID, first name, last name, and email values for Metric Insights to use

Download and Verify .xml File Received from IdP

Verify that your IdP defined firstName, lastName, Email and UID attributes in the Metadata key file (the .xml file ).

If not provided in the saml.xml file, these attributes values are to be populated in saml.php file manually:

define('SAML_UID_FIELD', '<name as defined in IdP>'); 
define('SAML_EMAIL_FIELD', '<name as defined in IdP>');
define('SAML_FNAME_FIELD', '<name as defined in IdP>');
define('SAML_LNAME_FIELD', '<name as defined in IdP>');

You can find more information on how to configure Okta (one of IdP providers) for MI SAML SSL setup in our Knowledge Base article

Create saml.php File.

The saml.php file from 5.x can be used on v6.x if the hostname is identical for both instances (the IdP looks for incoming requests from the 'approved' hostname/URL only). You can just place this file in the /opt/mi/external_config directory inside the web container. 

If the hostname has changed for 6.x instance, a new saml.php must be created using metadata for the 6.x instance and a new profile is to be set in the IdP to represent v6.x.

What version of MI are you using?

  1. Copy the .xml file provided by IdP to the MI app server
  2. All the required metadata is going to be given in the response. Copy it and paste into the saml.php file located at /opt/mi/iv/engine/config/saml.php
  3. Parse the .xml file by running the following command:
/opt/mi/iv/data/bin/mi-saml-config.php --input-file <path to saml.xml> --saml-type adfsv3

1.1. Example of Identifying Web Container in Simple install
docker ps
Click to copy
1.2. Example of Identifying Web Container in K8s
kubectl get pods -n <your namespace for MI cluster>
Click to copy
1.3. Example of Identifying Web Container in AWS ECS

For AWS ECS installation please use AWS UI console

1.4. Example of Identifying Web Container in Docker Swarm
docker service ls
  1. Move saml.xml file from host to the web container identified above by replacing <web container ID> with your web container ID:

docker mv /opt/mi/saml.xml <web container ID>:/opt/mi/saml.xml

3.1. For Simple Installation

mi-console

3.2. For K8s (Kubernetes)

kubectl exec -it <web master name> -n <your namespace for MI cluster> bash

3.3. For Docker Swarm and AWS ECS (while being on ECS worker)

docker exec -it <web container ID> bash

From inside web container run the following command:

/opt/mi/iv/data/bin/mi-saml-config.php --input-file <full path to saml.xml> --saml-type adfsv3

  1. The metadata given in the response representing DEFINE section is to be copy-pasted into the saml.php file
  2. Store the saml.php in /opt/mi/external_config

cd external_config/

vim saml.php 

Check saml.php File Permissions and Owner

SAML Single Sign-On (SSO) | Controlling Access to Metric Insights | Help & Documentation - Google Chrome

We recommend to set:

  • the file access level for 644 (-rw-r--r--)  
  • the owner of the file for www-data:www-data (www-data user in  www-data user group).

You can change the files access using chmod linux command, to change the owner use chown

Enable SAML in Metric Insights

Access Admin > System > System Variables

Enable SAML in Metric Insights
  1. Enter "SAML" in search field
  2. Set the SAML_ENABLED field to 'Y' using edit icon on right
  3. [Commit Changes]

Configure MI Loading Screen Behavior

Optionally, you can change the loading screen behavior from the default message to spinner.

  1. Enter "SAML_LOADING_SCREEN_OPTION" in search field
  2. Click on the gear icon
  3. Configure SAML_LOADING_SCREEN_OPTION:
    • "message": Display text message
    • "spinner": Display loading indicator
  4. [Save]
  5. [Commit changes]

TEST SAML Configuration

1. Change the Admin Password in the saml.php File
2. Login to the SimpleSAML Installation Page as Admin
  1. Click [Login as administrator]
3. Test Authentication Sources

Access the Authentication tab

SimpleSAMLphp installation page - Google Chrome
  1. Click [Test configured authentication sources]
  2. Remembering that you used metricinsights-sp in our very first step, (first step), click on metricinsights-sp to test

If setup correctly, then you will be redirected to your IdP to sign in.

4. Check SAML Fields
Enter your username and password - Google Chrome

Upon successful login you will be redirected back to Metric Insights and the screen will show you the values of SAML FIELDS, so you can check your mapping in saml.php.

Metric Insights supports Single Sign-On (SSO) authentication, with Users being able to log into Metric Insights via a central Location (Identity Provider - IdP).

  • Metric Insights uses SAML (Security Assertion Markup Language) for authentication,
  • Some common SAML implementations that can be used are by Okta, Microsoft (ADFS), Oracle.

This article describes how to configure Metric Insights to work with a SAML-based IdP using Okta as an example. This process comprises the following steps:

  1. Generate Metadata XML from Metric Insights
    1. Access the Installation Page for SimpleSAML in Metric Insights
    2. Copy Metadata
  2. Obtain Metadata XML from Idp
    1. Create New Application in Okta
    2. Configure Application
    3. Provide General Settings
    4. Provide Attribute Statements
    5. Finish Creating Application
    6. View IdP Metadata
    7. Copy IdP Metadata
  3. Finish SAML Configuration in MI Console
  4. Configure MI Loading Screen Behavior

If you're getting the "<Attribute Name> attribute is missing in the assertion or not mapped properly." error, see Getting "attribute is missing in the assertion or not mapped properly." Error.

Append /simplesaml/module.php/admin/ to your Metric Insights URL, i.e. https://<Metric Insights Server>/simplesaml/module.php/admin/.

NOTE: The SAML Admin password can be found in the web container under /opt/mi/external_config/saml.php, its value is stored in the SAML_ADMIN_PASSWORD variable. Its value must be changed from the default one in order to be able to log in.

  1. Open the Federation tab
  2. Click on the arrow icon

The Entity ID we are choosing on this step is using metricinsights-sp authentication source. The same source is to be set in the SAML config in further steps.

Copy the parameters' values to generate an IdP XML from Okta:

  1. Single sign-on URL: The value of the entityID parameter,
  2. SP Entity ID: The value of the Location parameter of the md: AssertionConsumerService element with Binding parameter's value ending with HTTP-POST.

Access Okta Admin menu

  1. Access Applications
  2. [Create App Integration]
  3. Select SAML 2.0
  4. [Next]
  1. Provide a descriptive App name
  2. [Next]

Provide values for the following two parameters:

  1. Single sign-on URL
  2. Audience URI (SP Entity ID)

See Copy Metadata for information on where to find the needed values.

Optionally, the value for Default RelayState can be provided and assigned to the MI instance hostname.

Add the following Attribute Statements:

  1. Name: uid, Value: user.login
  2. Name: email, Value: user.email
  3. [Next]
  1. Select "I'm an Okta customer adding an internal app"
  2. Select "This is an internal app that we have created"
  3. [Finish]
  1. Access the Assignments tab to assign the application to the users
  2. Access the Sign On tab
  3. [View SAML setup instructions]
  1. Copy metadata
    • Save it in an XML file for SAML SSO configuration via MI Console or keep it in clipboard for manual configuration

The recommended way of finishing the SAML configuration for v7 is via MI Console. Alternatively, you can finish SAML configuration manually.

NOTE: Only users that are System Admins can access the MI Console.

Access MI Console > Configuration > SAML

  1. Enable SAML
  2. [Confirm]
  3. Enter Validation Code from the selected authentication app and [Verify]
  1. [Upload Provider Metadata] selecting the XML metadata from IdP.
  2. [Confirm]
  3. Enter Validation Code from the selected authentication app and [Verify]

The message in Identity Provider Metadata field is no longer displayed and all mandatory Variables in SAML Configuration section are assigned values. Proceed with configuring MI loading screen behavior.

This section describes the process of finishing configuration of SAML manually, which can be used for both v7 and v6.

sudo mi-web

  1. Access external_config directory: cd /opt/mi/external_config
  2. Create new file which will contain metadata from IdP: nano <Metadata file name>
  3. Paste the previously copied IdP XML into the created file
  4. Ctrl + X to close the file
  5. Y to save
  6. View and verify the created file: cat <Metadata file name>
  7. Run the following command to save SAML configuration: /opt/mi/web/backend/data/bin/mi-saml-config.php --input-file <Full path to XML metadata> --save --saml-type adfsv3
  8. Two files are updated by the mi-saml-config.php script:
    • saml.php: Stores SAML configuration information,
    • saml20-idp-remote.local.php: Stores the certificate required to check signature.

Once SAML configuration is saved, proceed to check the result in MI console.

We recommend to set:

  • The file access level for 644 (-rw-r--r--),
  • the owner of the file for www-data:www-data (www-data user in www-data user group).

You can change the files access using chmod linux command, to change the owner use chown

Access Admin > System > System Variables

  1. Enter "SAML" in search field
  2. Set the SAML_ENABLED field to 'Y' using the gear icon on the right
  3. [Commit Changes]
  4. [Proceed]
  1. Access the Test tab
    • For v6, access the Authentication tab
  2. Access metricinsights-sp
    • If setup correctly, then you will be redirected to your IdP to sign in. Upon successful login you will be redirected back to Metric Insights and the screen will show you the values of SAML fields, so you can check your mapping in saml.php.

Optionally, you can change the loading screen behavior from the default message to spinner.

  1. Enter "SAML_LOADING_SCREEN_OPTION" in search field
  2. Click on the gear icon
  3. Configure SAML_LOADING_SCREEN_OPTION:
    • "message": Display text message
    • "spinner": Display loading indicator
  4. [Save]
  5. [Commit changes]
Congratulations, you are done!