# OKTA

This article outlines the configuration steps for setting up OKTA Single Sign-On integration with OvalEdge using the SAML 2.0 authentication protocol. It includes supporting details about OvalEdge, OKTA, SAML 2.0 components, authentication flow, configuration steps, and validation instructions.

## Purpose

The purpose of this article is to provide clear information about the configuration, mapping, connection, and validation steps required to set up OKTA SSO for OvalEdge using SAML 2.0.

## Prerequisites and Dependencies

* Access to the OKTA administrator console
* Access to OvalEdge administrator configuration
* SSL-enabled application URL
* Load balancer DNS or domain URL
* SAML 2.0 supported authentication
* Ability to modify the oasis.properties file
* IdP metadata URL from OKTA

## Environment Details

| Component               | Details                                 |
| ----------------------- | --------------------------------------- |
| Application             | OvalEdge                                |
| Identity Provider       | OKTA                                    |
| Authentication Protocol | SAML 2.0                                |
| Configuration File      | oasis.properties                        |
| Required Parameters     | samlHTTPMetadataProvider, entityBaseURL |

## Introduction to OvalEdge, Okta, and SAML 2.0

### OvalEdge

OvalEdge is a web-based application that provides a centralized catalog of an organization’s data sources and enforces role-based access controls. It supports Username and Password, OKTA, and Active Directory for authentication.

### OKTA

Okta is a cloud-based identity management service that also works with many on-premises applications. It allows organizations to control employee access to applications and devices.

**Key features of Okta include:**

* User provisioning
* Single Sign-On (SSO)
* Integration with Active Directory (AD) and LDAP
* Centralized user de-provisioning
* Multi-Factor Authentication (MFA)
* Mobile identity management
* Flexible security policies

OvalEdge uses the SAML 2.0 protocol with Okta for single sign-on. Use Okta for authentication only or for both authentication and authorization in the OvalEdge application.

### SAML 2.0

**Security Assertion Markup Language (SAML)** is an open standard that lets **Identity Providers (IdPs)** send login credentials to **service providers (SPs)**. It allows users to log in to multiple websites using a single set of credentials.

<div align="left"><figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F5Gh6UBLEp5jRcnHIQLbP%2Fimage.png?alt=media&#x26;token=0fd069cb-59f7-442e-b872-d7b5be8274c6" alt="" width="563"><figcaption></figcaption></figure></div>

### SAML 2.0 Terminologies

* **Assertion**: XML is passed between the service provider and the identity provider.
* **Assertion Consumer Services (ACS):** The target resource within the SP to which the IdP sends the SAML 2.0 response assertion.
* **Attribute**: Unique information about a user that is passed within an assertion.&#x20;
* **Identity Provider (IdP)**: A trusted entity providing authentication services to the SP on behalf of the user principal.&#x20;
* **Issuer**: A unique string that must match the IdP and SP.&#x20;
* **SAML 2.0 Request**: An assertion that the SP passes to the IdP to request that a user be authenticated.&#x20;
* **SAML 2.0 Response**: An assertion that the IdP passes to the SP for an authenticated user.&#x20;
* **Service Provider:** The web application that the user wants to access.

#### SAML 2.0 Authentication

* In the first step of SAML 2.0 Authentication, the user tries to access the application/ web service (Service Provider). The service provider verifies if the user is already authenticated within the system.
* If the user is already authenticated, content can be made available directly to the user. Otherwise, the service provider starts the authentication process if the user is not authenticated.
* The service provider determines the identity provider and redirects user requests to that provider, i.e., single sign-on service.
* In the third step of SAML 2.0 authentication, the user's browser sends an authentication request to the SSO service.
* The SSO service returns a request that includes the authentication information the service provider needs in a SAML 2.0 Response parameter.
* The SAML 2.0 Response parameter is passed on to the service provider.
* The service provider processes this response, allows the user to log in, and informs the user where the requested resource is.
* Users can now request the resources they want.
* The resource is finally returned.

## Configure Okta SSO

### Create the Okta Application

The OvalEdge needs to be configured for OKTA integration using SAML 2.0 authentication.

1. Log in to **OKTA**. In Applications, click on **Create a New App Integration**.&#x20;
2. Select **SAML 2.0** from the list of available options and click on the **Next** button.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FH3IF3ptp4wFXmvvJd1Gn%2Fimage.png?alt=media&#x26;token=3f548e7f-f23b-4af0-a58e-92bccf1132c7" alt=""><figcaption></figcaption></figure>

3. Give the App name as OvalEdge and upload the OvalEdge logo, which is optional.

{% hint style="info" %}
The OvalEdge log can be downloaded from the website [www.ovaledge.com](http://www.ovaledge.com).
{% endhint %}

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FIfL5oBB5va6VXHundMVb%2Fimage.png?alt=media&#x26;token=a0ba9613-b54b-4633-b4b7-2f47878bbebf" alt=""><figcaption></figcaption></figure>

4. Now, configure the SAML Settings.

<div align="left"><figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FmZu7teilsB4pDjRDG9mI%2Funknown.png?alt=media&#x26;token=1b36f1f5-bd8f-4dcf-a522-9a110925b429" alt=""><figcaption></figcaption></figure></div>

5. **Single Sign-on URL**: This should be the application URL of the load balancer, followed by {context}/saml/SSO   \
   **Example**: <https://xxx.xxxxxx.xxxx/{context}/saml/SSO>

{% hint style="info" %}
It must be SSL-enabled.
{% endhint %}

6. **Receipt URL and Destination URL**: This should be the Load Balancer DNS or Domain URL with HTTPS   \
   **Example**: <https://xxxxx.xxxxxx.xxxx/>
7. **Audience URI (SP Entity ID)**: If the application URL includes a context or port number, make sure to include them. Otherwise, just use the base application URL followed by {context}/saml/metadata.   \
   **Example**: <https://xxxxx.xxxxx.xxxx/{context}/saml/metadata>

### Mapping of OKTA fields to OvalEdge

1. Use the following name and value to map the attributes shown in the screenshot below.
   1. userId
   2. firstName
   3. lastName
   4. email

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FAtyBVkAwd99nKsnpAux9%2Funknown.png?alt=media&#x26;token=b24703fb-e8b7-4015-a8f5-17f1d533e75a" alt=""><figcaption></figcaption></figure>

2. Also, map the roles that will match against the **OKTA GroupName** values and **OvalEdge Manage Roles**.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FwnsaEQ8VoKqqKVYP7cEA%2Funknown.png?alt=media&#x26;token=105cafa9-ce40-48be-bd5e-a02b32345d71" alt=""><figcaption></figcaption></figure>

3. This Prefix must be configured in the OvalEdge Configuration as saml.role.prefix value.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FU6glxW783lWHMr0RUfxM%2Funknown.png?alt=media&#x26;token=52b515d4-ba95-4cb6-b36d-169cf5970d43" alt=""><figcaption></figcaption></figure>

4. Under "**Are you a customer or a partner**?", select "**I’m an Okta customer adding an internal app**", then click the **Finish** button to complete the configuration.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F0nl09IobXCVgbaDwvaqC%2Funknown.png?alt=media&#x26;token=688a31f6-3681-4e9c-9439-7c354427cf8d" alt=""><figcaption></figcaption></figure>

5. To maintain group management in the OKTA, click on **Add Group** and enter **Name** and **Group Description**.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F6HQTXXMK5Lz3lZ4zGkTu%2Funknown.png?alt=media&#x26;token=9b20826b-b3a6-40b0-a6f9-7a7c538e9cf4" alt=""><figcaption></figcaption></figure>

6. The groups that were created are displayed below.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FAFP3ZVkIQN6XzFgG6S6C%2Funknown.png?alt=media&#x26;token=99b37b5c-8616-4019-a231-feb26bdd3e7b" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}

* A Prefix must be added before the group name when adding Groups in OKTA.
* If the user is not assigned to any of the groups, then the user will get the OE\_PUBLIC role by default.
  {% endhint %}

## Role Management

The most preferred way of role management is to manage users and roles in OKTA. In the OE Application, create the following: Manage roles by mapping to OKTA Groups.

For Example, the Manage roles in the OKTA group and OvalEdge application are given below:&#x20;

| OKTA GROUP               | OvalEdge Application |
| ------------------------ | -------------------- |
| Okta.OvalEdge.xxx        | xxx                  |
| Okta.OvalEdge.OE\_ADMIN  | OE\_ADMIN            |
| Okta.OvalEdge.OE\_PUBLIC | OE\_PUBLIC           |
| Okta.OvalEdge.OE\_xxxxx  | OE\_xxxxx            |

The only suffix will be created in the OvalEdge application.

{% hint style="info" %}
The permissions for these roles will be managed in OvalEdge. However, user/ role management will be done in OKTA. Use a naming convention, but it must be configured in OvalEdge.
{% endhint %}

### Adding people to the OKTA

1. Add users by providing the following information:

<div align="left"><figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FNpEEhevyYmQt1YXlCKDY%2Funknown.png?alt=media&#x26;token=9ae19a78-8d3f-4c02-9c54-64e1dff7b56d" alt=""><figcaption></figcaption></figure></div>

### Assign the user to roles

1. Roles can be assigned to the users as shown below:&#x20;

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fu0cUDu649QQxIL3dGxag%2Funknown.png?alt=media&#x26;token=61d8ed06-4481-43b3-a0df-b5df27848d60" alt=""><figcaption></figcaption></figure>

2. The application username can be changed using the **edit** icon.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FC0A2tETAev7j71QOJP3I%2Funknown.png?alt=media&#x26;token=f95d1ac0-92fb-4f58-985e-678c88a7b30f" alt=""><figcaption></figcaption></figure>

3. Capture the Identity Provider metadata URL from the OKTA portal, as mentioned in the screenshot below.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FeJg1f4YNKxGLIjzG8qjK%2Funknown.jpeg?alt=media&#x26;token=8fe2a1dd-5505-4cd1-ab5e-6663fd99ca13" alt=""><figcaption></figcaption></figure>

4. Click on **View IdP metadata**, and the **XML file** is displayed. Copy the **URL** from the browser and mention it in the **samlHTTPMetadataProvider:** \<IdP Metadata URL>
5. Open the oasis.properties file and add the following variables, respectively
   1. **samlHTTPMetadataProvider**: \<IdP Metadata URL>
   2. **entityBaseURL**: https\://\<domain>&#x20;
6. Save the oasis.properties file and restart the OvalEdge App.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FXDinxUJbFUjoN6wqwDGm%2Funknown.png?alt=media&#x26;token=56325c93-1485-478b-83b8-7e39ab3674ae" alt=""><figcaption></figcaption></figure>

7. Edit the setenv.sh file in the Tomcat bin folder, and update the security type parameter from db to saml:&#x20;

<mark style="color:$primary;">Update</mark> <mark style="color:$primary;"></mark><mark style="color:$primary;">**-DOVALEDGE\_SECURITY\_TYPE=db**</mark> <mark style="color:$primary;"></mark><mark style="color:$primary;">to</mark> <mark style="color:$primary;"></mark><mark style="color:$primary;">**-DOVALEDGE\_SECURITY\_TYPE=saml.**</mark>

## Testing the Roles&#x20;

Testing the Roles with REMOTE and HYBRID SAML Type

1. With Hybrid, the Users would get the role from the OvalEdge Application.
2. With Remote, the Users would get the role from OKTA.

{% hint style="info" %}
For the first time, Users logged in with the Admin Role can go to Configuration and specify the Job Parameter.
{% endhint %}

### OvalEdge SAML Type as HYBRID

In the OvalEdge Configuration page, update the reload of the configurations.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FdmGR1o183t1rmFvcvgk0%2Fimage.png?alt=media&#x26;token=0daf78ce-1d6b-4392-9e6c-79fbdc4842ee" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If the New User logs in with the domain, they will get the initial role as OE\_PUBLIC, as the roles are coming in through the application.
{% endhint %}

### For REMOTE SAML Type

1. Change the OvalEdge SAML Type to **REMOTE** from **HYBRID** in the “**Configuration**” through Admin User and Click on “**Reload the Configuration**”.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F2Jr699hQKfxRnmVxFL0U%2Funknown.png?alt=media&#x26;token=186e6b2c-5b1e-4de4-84f1-09d2ffafb349" alt=""><figcaption></figcaption></figure>

2. Admin users can customize the Roles using the **Administration** > **Users and Roles** > **Roles**.

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FR5Crg5n5GlBiic3qMMRo%2Funknown.png?alt=media&#x26;token=63d7dd02-90ad-405d-9652-7f2d802f7f5d" alt=""><figcaption></figcaption></figure>

3. After adding the roles, it would appear for logged-in users in **Users and Roles Management**, as shown below:

<figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FJ5GgJnom3YbMI755T0hR%2Funknown.png?alt=media&#x26;token=f942107a-4cce-4e27-97f7-08bee58bcf61" alt=""><figcaption></figcaption></figure>

4. Okta is successfully integrated with OvalEdge using SAML 2.0-based SSO.

***

Copyright © 2025, OvalEdge LLC, Peachtree Corners, GA, USA.
