# PingFederate

This document describes the procedure for integrating PingFederate Single Sign-On (SSO) with the OvalEdge application. The integration leverages Active Directory (AD) for authentication, ensuring centralized identity management and secure access to OvalEdge.

The process covers:

* Active Directory data store configuration in PingFederate
* Password Credential Validator (PCV) setup
* Identity Provider (IdP) adaptor configuration
* SAML Entity ID setup
* Service Provider (SP) connection configuration for OvalEdge
* Metadata exchange and application-level configuration

This guide is intended for System Administrators, DevOps Engineers, and Identity Management specialists who manage enterprise SSO integrations.

## Prerequisites

Before starting the integration, ensure the following:

* Infrastructure
  * Access to PingFederate server with administrative credentials
  * Access to the OvalEdge application server (Linux or Windows)
  * Active Directory (AD) environment with valid user accounts
* System Requirements
  * PingFederate configured and accessible
  * Tomcat running OvalEdge application
  * Network connectivity between PingFederate, OvalEdge, and AD servers
* Files and Configurations
  * Ability to update oasis.properties and setenv.sh (Linux) or tomcat9w\.exe (Windows)
  * Export/import permissions for SAML metadata on PingFederate and OvalEdge

## Integration Procedure

### Active Directory Data Store Creation

* Log in to **PingFederate** with administrator credentials.

  <div align="left"><figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FYNklg0URALWq0dB7e4qd%2F2.jpg?alt=media&#x26;token=20e08761-ce8a-46cb-8c57-c409b62a4c44" alt=""><figcaption></figcaption></figure></div>
* Navigate to:

  ```
  System > Data Stores > Add New Data Store
  ```

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fq9MUrBKy5VUqSazXKdwy%2F3.jpg?alt=media&#x26;token=05569f52-222f-44ce-bfd6-60ea7f7bef36" alt=""><figcaption></figcaption></figure>
* Provide the following:
  * **Name:** Any descriptive name
  * **Type:** Directory (LDAP)

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FaUDTaEgknDnM2jhXnbWw%2F4.jpg?alt=media&#x26;token=bd05ad75-1720-4837-be86-365f7ff116cc" alt=""><figcaption></figcaption></figure>
* Enter the Active Directory details:
  * **Hostname:** `<AD Server hostname or IP>`

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FxHpsx3ceyrSbObQ5rROm%2Fimage.png?alt=media&#x26;token=cf0c4177-c97a-421f-85a6-4a04e79526b0" alt=""><figcaption></figcaption></figure>
  * **User DN:** `CN=Administrator,CN=Users,DC=<domain>,DC=<tld>`

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FXLUCbyrMdL70f6Y3HhSA%2F6.jpg?alt=media&#x26;token=d106224e-d42d-421b-83ce-12da2ae2675b" alt=""><figcaption></figcaption></figure>
  * **Password:** AD administrator password
* Click **Next**, review details, and **save**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FkUXwFCBNf6rXxKgQ3x4y%2F7.jpg?alt=media&#x26;token=539d6b50-2a14-4c10-8c63-62dfdecc0212" alt=""><figcaption></figcaption></figure>

### Password Credential Validator (PCV) Creation

* Navigate to:

  ```
  System > Password Credential Validators
  ```

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F0diaI8K28ClXa8JvAoDa%2F8.jpg?alt=media&#x26;token=749052a6-bbc9-418c-8b30-285228b3e07a" alt=""><figcaption></figcaption></figure>
* Click **Create New Instance**.
* Provide:

  * **Instance Name / ID:** Any name
  * **Type:** LDAP Username Password Credential Validator

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FXEo611j3vVCoyaFslJVt%2F9.jpg?alt=media&#x26;token=fbd03f28-75ce-40ca-a6a2-6592b4a91c39" alt=""><figcaption></figcaption></figure>
* In **Instance Configuration**, enter:

  * **LDAP Datastore:** Select the datastore created in Step 1
  * **Search Base:** Distinguished Name (DN) of the AD root
  * **Search Filter:**

    ```
    sAMAccountName=${username}
    ```

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FU0bP2ST5ssX7FrnvJS5Z%2F10.jpg?alt=media&#x26;token=dd3ba5db-9ece-48ef-8ed4-8380812bcafd" alt=""><figcaption></figcaption></figure>
* In the **Extended Contract**, add `memberOf`.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fti5Iu9QNRzm6nWipj3ml%2F11.jpg?alt=media&#x26;token=df5b2f63-18ff-4e95-9e3a-1e5f420cac65" alt=""><figcaption></figcaption></figure>
* Review and save the validator.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FYLgS4qpiOqaNJzMykzqN%2F12.jpg?alt=media&#x26;token=1b2ceb57-e798-44ef-8706-c06b61afbf54" alt=""><figcaption></figcaption></figure>

### IdP Adaptor Creation

* Navigate to:

  ```
  Authentication > IdP Adaptors
  ```
* Click **Create New Instance**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F40Hz1aXfcOjzqyNzZhdm%2F13.jpg?alt=media&#x26;token=93085d89-7756-4f9c-92fb-ac7f040058e3" alt=""><figcaption></figcaption></figure>
* Enter:
  * **Instance Name / ID:** Any name
  * **Type:** HTML Form IdP Adaptor
* Under **Adaptor Settings**, link the AD datastore created earlier.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FgZqbroIMVFZQAPUZJFXi%2F14.jpg?alt=media&#x26;token=5d9dcd7a-279f-4bc9-92c4-17ff66b5b310" alt=""><figcaption></figcaption></figure>
* In the **Extended Contract**, add attributes:

  * Name
  * Email
  * firstName
  * lastName

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FHwl3LHVhCFLgsloe2YDx%2F15.jpg?alt=media&#x26;token=2d399747-3d66-425b-adda-18f87fe25e74" alt=""><figcaption></figcaption></figure>
* In the **Adaptor Attribute section**, enter the highlighted details and then click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F77OtpEjNgb9ieKTVS7Uw%2F16.jpg?alt=media&#x26;token=990d7588-ebc3-46ff-a800-4d6b5edfe5a3" alt=""><figcaption></figcaption></figure>
* In the **Adaptor Contract Mapping tab**, click **Configure Adaptor Contract**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FFqU5BgMOETIXGMGx47Kq%2Fimage.png?alt=media&#x26;token=9cf1cbe1-b254-45ef-9b28-68056e322d87" alt=""><figcaption></figcaption></figure>
* Click **Add Attribute Sources**. Fill in the details:

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F2fD3mNYBPpfYxqjDJ5YS%2F17.jpg?alt=media&#x26;token=99d9178c-cdc3-4141-8415-fbc66c2982f2" alt=""><figcaption></figcaption></figure>

  * **Attribute Source ID:** Any name of your choice
  * **Attribute Source Description:** Any description
  * **Active Data Store:** Select the Active Directory created in the datastore section

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FgQJHfmwaUN4NGoYyqior%2F19.jpg?alt=media&#x26;token=ee486cf5-d64b-4ff9-ba88-a2e273473fe2" alt=""><figcaption></figcaption></figure>
* Enter the filter details as shown, then click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FntwMwp93uyrqv2FxZBlV%2F21.jpg?alt=media&#x26;token=e541da5d-74da-423e-92e1-da042f6c749b" alt=""><figcaption></figcaption></figure>
* Review the changes and click **Done**.<br>

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F4dhgPFgVknHNeuJXzpkb%2Fimage.png?alt=media&#x26;token=c27fa942-c5c0-4413-94d0-ff47744465ad" alt=""><figcaption></figcaption></figure>
* Click **Adaptor Contract Fulfillment** → enter details → **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FoaXPk09cKnu4rYPug90J%2Fimage.png?alt=media&#x26;token=00ad72b0-36fa-4645-a306-8d19bcf3ea23" alt=""><figcaption></figcaption></figure>
* Continue clicking **Next** and then **Save**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F6R2yp97dnKZqUYuWiarJ%2F28.jpg?alt=media&#x26;token=6e92813b-da97-4374-b7b8-057fb82ce065" alt=""><figcaption></figcaption></figure>

### Entity ID Configuration

* Navigate to **System > Server.**

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FWhWXnRXKyal2bJS3fqVI%2F29.jpg?alt=media&#x26;token=c03747e1-250a-4983-846d-a6e8133131e0" alt=""><figcaption></figcaption></figure>
* Enter a **SAML 2.0 Entity ID** (any valid URL).

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FygfJnR8J8xgGJiv5Wazm%2F30.jpg?alt=media&#x26;token=d4925ca5-73bf-4997-a4cd-7814d7d22f04" alt=""><figcaption></figcaption></figure>
* Proceed through the wizard and save the configuration.

### Service Provider (SP) Connection (OvalEdge Application)

* Navigate to **Applications > SP Connections** in PingFederate.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FxVdCDF97imxcoGfuAQxp%2F31.jpg?alt=media&#x26;token=84f8d46e-da39-41fc-8764-558965715df5" alt=""><figcaption></figcaption></figure>
* Click **Create Connection**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FUYca0NxOi0N1KZdtnS5o%2F32.jpg?alt=media&#x26;token=020fd809-8b75-47fd-9b57-b82548621f39" alt=""><figcaption></figcaption></figure>
* Select **Do not use a template** and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FrLtO1ASos40dsXBqrG91%2F33.jpg?alt=media&#x26;token=0243a818-6c3e-4f0d-a829-1e2c2a3bc79f" alt=""><figcaption></figcaption></figure>
* Choose **Browser SSO** as the connection type.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FUxw4fiz1pXnkhXZg9hHc%2F34.jpg?alt=media&#x26;token=a3050a28-d134-44a3-bd5e-6621374b6bbc" alt=""><figcaption></figcaption></figure>
* In the Import Metadata URL, select **None** and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FP7ATGmMxA5CpZaHSwym1%2F35.jpg?alt=media&#x26;token=e9af664e-26a5-41e3-9992-e9dc2747835d" alt=""><figcaption></figcaption></figure>
* In **General Info**, enter:

  * **Partner’s Entity ID**: `https://<IP-or-DNS>/saml/metadata`
  * **Connection Name**: `https://<IP-or-DNS>/saml/metadata`
  * **Base URL**: `https://<IP-or-DNS>` (OvalEdge application URL)

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FuM7bKbR4FTS1m0fkKfim%2F36.jpg?alt=media&#x26;token=7cc4f421-5cf1-410d-b4b5-07d17f1399e1" alt=""><figcaption></figcaption></figure>

  <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>Here, <code>https://&#x3C;IP-or-DNS></code> is an OvalEdge application URL.</p></div>
* Click **Browser SSO**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FYYq73qaOUqSgM65YiejR%2F37.jpg?alt=media&#x26;token=11d0c51a-c621-4f8f-a00b-2c14c0db7bf9" alt=""><figcaption></figcaption></figure>
* Enable both **IdP-Initiated** and **SP-Initiated SSO.**

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2ForkvQBgAe7R8KKnU7yFa%2F38.jpg?alt=media&#x26;token=7396b234-d7d0-44f9-9bd2-35bf286b8b60" alt=""><figcaption></figcaption></figure>
* In Assertion-Lifetime, click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fkwt9uybROMy4NIxz6ITq%2F39.jpg?alt=media&#x26;token=fd30dd36-0448-4f3e-97eb-c8feb38f7e00" alt=""><figcaption></figcaption></figure>
* Click **Configure Assertions Creation** and then click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FcvYhkjOdoZbRTDxIoO13%2F40.jpg?alt=media&#x26;token=61f7fb9f-d7db-45a8-9a90-0a0aeeb85d91" alt=""><figcaption></figcaption></figure>
* Select the **STANDARD** checkbox and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FrX4I2VvC7y2f3yJELQGW%2F41.jpg?alt=media&#x26;token=699066fe-358d-4da9-8806-7855c96e515f" alt=""><figcaption></figcaption></figure>
* Add/Edit the attributes and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FBaHoo2619sxp02oNmTUq%2F42.jpg?alt=media&#x26;token=ded7f9e9-b961-4d3b-a57a-20b6fe5f6334" alt=""><figcaption></figcaption></figure>
* Click **Map New adaptor Instance**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FUeCLjzEOnbOwwN8ZbE9y%2F43.jpg?alt=media&#x26;token=6e85e67f-ff00-4d52-a0cf-68a1144e6d87" alt=""><figcaption></figcaption></figure>
* Select the **Adaptor Name** that we created in the Adaptor instance creation section and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FWhEd2Fg59T6hQl1ykrfa%2F44.jpg?alt=media&#x26;token=4086b1ac-63e9-4f87-8c9f-12349aec3342" alt=""><figcaption></figcaption></figure>
* Select the checkbox and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FupecJ5rf6AsoPMVAcRc1%2F45.jpg?alt=media&#x26;token=4bd5d2b2-7e07-45b2-b342-f0b91485bda2" alt=""><figcaption></figcaption></figure>
* In **Attribute Contract Fulfillment**, enter the details below and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FUUopXSDEkv1bdIe46KIC%2F46.jpg?alt=media&#x26;token=dbf54f1b-e13f-48f9-8601-40fcc682e3ec" alt=""><figcaption></figcaption></figure>

  <br>

  **Configure role expressions (example):**

  ```java
  #groupCnOnly = new java.util.ArrayList(),
  #groups = #this.get("roles")!=null ? #this.get("roles").getValues() : {},
  #groups.{
    #group = #this,
    #group = new javax.naming.ldap.LdapName(#group),
    #cn = #group.getRdn(#group.size() - 1).getValue().toString(),
    #groupCnOnly.add(#cn)
  },
  #this.get("roles")!=null ? new org.sourceid.saml20.adapter.attribute.AttributeValue(#groupCnOnly) : null
  ```
* In the **Issuance Criteria**, click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FdMSyTKfKLjiMBMGdJHKW%2F47.jpg?alt=media&#x26;token=7f942561-54ec-4a24-a4ec-70d962d7f531" alt=""><figcaption></figcaption></figure>
* Review the Summary and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FQ4bhoU12XX695l09dLdl%2F48.jpg?alt=media&#x26;token=d0c937a0-4945-4002-af98-cc4695f3cd35" alt=""><figcaption></figcaption></figure>
* Review the Assertion Configuration, and click on **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F3utOuiCi1KObBwlZ9ZHL%2F49.jpg?alt=media&#x26;token=c8726668-834f-4f66-950f-75f908c6208f" alt=""><figcaption></figcaption></figure>
* **Configure Protocol Settings:**

  * **Endpoint URL**: `https://<IP-or-DNS>/saml/SSO`

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FYhyszxqsV7YkPC0O7pJV%2F50.jpg?alt=media&#x26;token=67ca4503-b992-466d-bb0c-a3f29c901964" alt=""><figcaption></figcaption></figure>
* Select the highlighted checkbox and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FghIiXyHRWbog8qZLquTO%2F51.jpg?alt=media&#x26;token=534362d6-2330-46f4-aa56-ee0c8d5a5c8f" alt=""><figcaption></figcaption></figure>
* In the **signature policy**, enable the **SIGN RESPONSE AS REQUIRED** checkbox and click on **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FGUt6bDTG2gUc8tUuERq3%2F52.jpg?alt=media&#x26;token=ad79d6c3-fe4e-4da9-be70-5334494eb90c" alt=""><figcaption></figcaption></figure>
* In the **Encryption policy**, click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FZP2Qlg6EbgHDgGqgsfbt%2F53.jpg?alt=media&#x26;token=a5f71647-44fd-4b5c-a1c5-adea38293890" alt=""><figcaption></figcaption></figure>
* In **summary**, review the changes and click **Done**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FFXuDUw9CqjwP7gqreLJy%2F54.jpg?alt=media&#x26;token=9a765e60-ddb2-4086-8a05-c5fffbf87b37" alt=""><figcaption></figcaption></figure>
* In the **Protocol Settings,** click **Next,** and **Done**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F2PPJXMcTgjRV0SyNu3mH%2F55.jpg?alt=media&#x26;token=c1e2228e-3ef4-46d0-a306-2e97641c3b8c" alt=""><figcaption></figcaption></figure>
* In the **Browser SSO** tab, click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F3FXC3H8FPDDm21OCnF8D%2F56.jpg?alt=media&#x26;token=fa81ab65-8d00-463d-abe4-2a37c2f3b6bc" alt=""><figcaption></figcaption></figure>
* In the **Credentials** tab, click **Configure Credentials**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FvaUKojcTCfVvMH3WrfSj%2F57.jpg?alt=media&#x26;token=b9bc84f3-6fea-4d25-9d5b-d65c090f1f0b" alt=""><figcaption></figcaption></figure>
* Click **Manage Certificates**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FRCjtTxewO0vNZhy0c9YY%2F58.jpg?alt=media&#x26;token=fe3f7dbd-b289-4aad-a986-d422d8f0e27d" alt=""><figcaption></figcaption></figure>
* Click **Create New**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F2IFZNTGya17hsJ8gfnSE%2F59.jpg?alt=media&#x26;token=df91cee0-4049-4b4d-82c0-276a745634ea" alt=""><figcaption></figcaption></figure>
* Add the following details and click **Next**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FzGbn1srsSZlYNGsgbGBT%2F60.jpg?alt=media&#x26;token=11b387ec-9f19-4efb-89cd-e2dd54adf677" alt=""><figcaption></figcaption></figure>
* Review the changes, and click **Done**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FmHIlsKDzE3DFWgyhiNl5%2F61.jpg?alt=media&#x26;token=ea9177ea-00ba-492e-9e22-37f3575c360e" alt=""><figcaption></figcaption></figure>
* In the **Digital Signature Settings**, click **Next,** and **Done**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fro3GSXeAuKKRbOGrCKGM%2F62.jpg?alt=media&#x26;token=7067ac5c-8d5b-4d7a-9155-559a846c3090" alt=""><figcaption></figcaption></figure>
* Review the page and click **Done**.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FexdzWEXS2zP4ba0fN6jI%2F63.jpg?alt=media&#x26;token=9b0c5887-f994-4c14-b7d4-42a7cb159ea1" alt=""><figcaption></figcaption></figure>
* The **Connection Name and Connection ID** are displayed.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fo46Ulqg2zn3b5htKOy9M%2F64.jpg?alt=media&#x26;token=09cbf46e-70f2-4f09-b7a9-3f530d48526e" alt=""><figcaption></figcaption></figure>
* Click **Select Action** and **Export Metadata,** as shown below.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FvY7xHsRN5px6ENKwe37f%2F65.jpg?alt=media&#x26;token=4c18c441-92a6-43e9-9dd4-94ae50a2add6" alt=""><figcaption></figcaption></figure>

### OvalEdge Application Configuration

* Place the `metadata.xml` file (exported) in the OvalEdge application server directory.
* Update `oasis.properties` to reference the metadata file path.
* Configure Tomcat environment variable:
  * **Linux**: Edit `setenv.sh` and add:

    ```bash
    -DOVALEDGE_SECURITY_TYPE=saml
    ```
  * **Windows**: Run:

    ```bash
    tomcat9w.exe //ES/tomcat1
    ```

    and add:

    ```bash
    -DOVALEDGE_SECURITY_TYPE=saml
    ```
* Now log in to the OvalEdge application, click **Continue with SSO**, and log in with your Ping credentials.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FNpp5YQx7kYMz9DlQ8p9U%2F66.jpg?alt=media&#x26;token=3a123a14-16d8-44c4-820a-6553c23b50ee" alt=""><figcaption></figcaption></figure>

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FTe7KuPVtYVlrgXkMdMwh%2F67.jpg?alt=media&#x26;token=2927c26e-ffba-4460-88d0-8d28bde4d120" alt=""><figcaption></figcaption></figure>

### Update OvalEdge system settings

* Navigate to **System Settings > SSO**
* Set:

  ```properties
  ovaledge.extauth.authtype = REMOTE
  ```

  *(default is HYBRID)*

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FU2vG2FVSSi6RtyFaO4np%2F68.jpg?alt=media&#x26;token=4e3778bb-83c6-46e5-a1c6-1cbb70b5a3a5" alt=""><figcaption></figcaption></figure>
* Now connect to the application server (Windows or Linux), create a folder with any name, and paste the `metadata.xml` (step 34) file into that folder.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FVAyKnPyZhCr5RBeb9Y67%2F69.jpg?alt=media&#x26;token=0fbcd7b5-48e4-41df-97a7-e20b7058d185" alt=""><figcaption></figcaption></figure>
* Copy the `metadata.xml` file path, paste it into the `oasis.properties` file as shown below, and save the file.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fg1rCdqUZdTWsSJD66ZFM%2F70.jpg?alt=media&#x26;token=dc67a891-7b9a-4b50-962e-b80dc23c79ad" alt=""><figcaption></figcaption></figure>
* Now, navigate to the Tomcat bin directory and configure `setenv.sh` (for Windows use `tomcat9w.exe`) file with:

  ```bash
  -DOVALEDGE_SECURITY_TYPE=saml
  ```

  * **Windows**:\
    Navigate to the Tomcat bin folder, open the command prompt here, execute the command below, and make changes:<br>

    ```bash
    tomcat9w.exe //ES/tomcat1
    ```

    \
    \&#xNAN;*Sample Reference Screenshot:*

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FBqz8CSmfJtHaOC5X7BM1%2F71.jpg?alt=media&#x26;token=3253cf3e-823f-4052-9165-a4d5c49ac7a2" alt=""><figcaption></figcaption></figure>

    <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>Here tomcat1 is the Tomcat service name.</p></div>
  * **Linux**:\
    Now navigate to the Tomcat bin path and edit `setenv.sh`.\
    In `-DOVALEDGE_SECURITY_TYPE=saml`, add `saml`, as shown below:

    ```bash
    -DOVALEDGE_SECURITY_TYPE=saml
    ```

    \
    \&#xNAN;*Sample Reference Screenshot:*

    <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2Fq8bHQ2yjGm2TmAyac5fH%2F72.jpg?alt=media&#x26;token=1691ba10-cb70-4686-b0d4-cb190fb260e7" alt=""><figcaption></figcaption></figure>
* Now restart Tomcat services and check the application after 5 minutes, as shown below. Now, you can log in to the application with AD users.

  <figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F52RNaDxV2ApirJwTXQTB%2F73.jpg?alt=media&#x26;token=0d806753-c441-48ed-b974-d09115971755" alt=""><figcaption></figcaption></figure>

## Validation

* Verify that users from AD can log in to OvalEdge via SSO.
* Check that user attributes (**Name, Email, Groups**) are correctly mapped.
* Confirm that role-based access is applied according to AD group membership.

## Rollback Instructions

* If login fails after enabling SSO:
  * Revert:

    ```properties
    ovaledge.extauth.authtype = HYBRID
    ```
  * Remove or comment out the:

    ```bash
    -DOVALEDGE_SECURITY_TYPE=saml
    ```

    parameter in Tomcat.
  * Restart Tomcat services.

***

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