Configure Identity Providers
Get started with OAuth2/Open ID Connect (OIDC) Identity Provider configuration to enable security integration with other systems or 3rd parties in your IT landscape
Objective
Manhattan Active® Platform Access Management has administrative screens that manage various security aspects, including authentication, login modes, OAuth client setup, and Identity Provider Configuration. Documents that describe various flavors of Identity Provider Setup for external integration are based on the type of Identity Provider Integration Sought. There are two available:
Introduction
As a premier SaaS provider in the market, Manhattan prioritizes the security of its Active Platform software. In alignment with this commitment, we are pleased to announce the release of an enhanced version of the Manhattan Identity & Access Management (IAM) system, named Access Management 2.0. This updated version not only delivers enhanced security features but also offers improved integration capabilities with customer-owned identity platforms such as Azure and Okta.
Previously, the Manhattan Active Platform supported Just In Time (JIT) user provisioning exclusively for the SAML 2.0 protocol. With Access Management 2.0, JIT support has been extended to include the OpenID Connect (OIDC) protocol as well.
The subsequent sections provide comprehensive guidance, including illustrative screen captures, on configuring Access Management 2.0 alongside Azure and Okta as external Identity Providers (IdPs) for both JIT and non-JIT use cases within the OIDC protocol.
Assumptions
- The configuration screens shown for both Azure and Okta could change with time.
- This document will be kept in alignment when that happens.
- If further assistance is needed during configuring Access Management 2.0 for OIDC JIT/Non-JIT, please reach out to your Manhattan Services Representatives to seek help and report any issues with this document.
Special Note
- Access Management 2.0 creates a Local User for every external Identity Provider (IdP) User.
- After creation in the JIT Flow, such external Users are also created in the Organization Database.
- If, subsequently, the same user is deleted and recreated through the JIT process, to remove roles/orgs/locations, such deletion is:
- First, not needed
- Second, it blocks the same user from logging in because Access Management 2.0 cannot find the Id of the internal user
- To proceed, usually add and remove roles/org/location, and the JIT process will update the same user in the Organization DB.
- If such users must be deleted, please reach out to Manhattan Operations for a subsequent cleanup in the Access Management 2.0 DB.
1 - Configure Okta SAML 2.0 IdP for JIT
Get started with SAML 2.0 Identity Provider configuration to enable security integration with other systems or 3rd parties in your IT landscape
Objective
This page describes the Okta SAML 2.0 setup with JIT and Non JIT flows.
Integrating Access Management 2.0 with Okta SAML 2.0
This section shows how to integrate Access Management 2.0 (AM 2.0) with Okta, where Okta will serve as the Identity Provider (IdP). The protocol used for authentication is SAML 2.0. Steps involve exchanging the IdP Metadata (URL generating XML) and the Service Provider Metadata URL between the IdP and the AM 2.0 SP.
Step 1: Identity provider in AM 2.0.
Login to AM 2.0 Admin Console. Select the maactive realm.
Note: In case you have Restricted Admin Access on AM 2.0, then use the URL:
https://<stack_name>-auth.<domain_name>/auth/admin/maactive/console/
Click on the Identity Providers option from the left panel and select SAML v2.0 from the list of providers.
Enter the Alias. This will be the default display name on the login page.
Please note that the Alias forms a part of the redirect URL. In case it does not reflect, you can create the Redirect URI yourself and keep the URL handy.
Eg. if Alias is set as - samlokta
Redirect URI - https://localdocker:8443/auth/realms/sample/broker/samlokta/endpoint
Optionally enter Display Name. This is the name that will be displayed, in case you need it to be different from the alias.
Take note of the Service provider entity ID value from the same page.
Step 2: SAML 2.0 App Registration in Okta
Next, we need to create an IDP in Okta.
In the Okta admin page, go to Applications → Click Create App Integration.
Select the SAML 2.0 radio button, and click Next.
Provide the application name under the App name, and click Next.
Copy Redirect URI from AM 2.0’s provider page, from Step 1. Configure this URL in the Single sign on URL field.
Copy the Service Provider Entity ID from AM 2.0’s provider page, from Step 1 and configure this URL in the Audience URI field.
Leave other fields to default values. Hit Next. Select the fields as indicated below and select Finish.
Paste the metadata link from Okta in the SAML entity descriptor field on AM 2.0’s provider page. If the URL is correct, you will see a green tick on the right.
Click on Add. This will create a basic SP configuration on AM 2.0 for this Okta application.
Scroll down and set the Want AuthnRequests signed option to be On.
Now scroll to the bottom of AM 2.0’s provider configuration page and select First Login Flow and Post Login Flow, if not already pre-selected.
Click on Save.
In case a customer requires SAML JIT need to be enabled, we need to add 4 mandatory mappers on both sides - AM 2.0 as well as Okta. In case SAML JIT is not required, please skip this step entirely.
To add mappers in AM 2.0, click the Mappers tab on the same SP configuration page. Click on the Add mapper button.
Configure User.UserId mapper by filling in the fields as shown in the image below.
Click on Save.
Similarly, configure User.LocaleId mapper by filling in the fields as shown in the image below.
Click on Save.
Similarly, configure User.PrimaryOrgId mapper by filling in the fields as shown in the image below.
Click on Save.
Similarly, configure User.Roles mapper by filling in the fields as shown in the image below.
Click on Save.
To add mappers on the Okta side to support SAML JIT, go to the General settings tab and click on the Edit button in SAML Settings.
Navigate to the SAML Tab by clicking on the Configure SAML button. Go to the Configure SAML tab and add the 4 attributes as shown below.
Note: the values shown in the above image in the Okta side mapper configuration are only for example. Please enter values as per your requirements.
Click on Next and then click on Finish. You are now done with the SAML JIT configuration.
To configure logout, a Signing certificate needs to be extracted from AM 2.0 and saved on the Okta side.
To extract this Signing certificate from AM 2.0, go to Realm settings → Keys → Certificate.
The certificate will look like below:
Follow the template shown below to create a new certificate file.
—–BEGIN CERTIFICATE—–
<PASTE THE CERT HERE!>
—–END CERTIFICATE—–
Replace the text “<PASTE THE CERT HERE!>” with the copied certificate data from above. It should look like this after the replace:
This file needs to be saved on the Okta side. Now on the Okta side, go to the General settings tab and click the Edit button in SAML Settings. Click on Show Advanced Settings.
The certificate saved goes in the Signature Certificate field.
Get the Single Logout URL from the AM 2.0 metadata URL of this realm. The metadata link can be found on the IDP configuration page, as shown below.
The metadata will look like below:
Extract this URL and save it in the Single Logout URL field.
The SP issuer will be the same as the SP Entity ID, which we saw in Step 1.
After saving all of these changes, go to the Sign On tab in Okta and get the metadata URL.
Okta metadata will now have a SingleLogoutService field populated to reflect the Logout URL.
Use this URL to configure the logout on the AM 2.0 side. Save the change.
Step 8: Additional attributes configuration
- In case additional attributes are needed, they can be configured as well. Below is a list of attributes can be configured. You will have to pass the attribute from the IDP side to receive on SP side.
Keycloak Attribute Name | SAML Attribute Name | Multi Valued or Not |
---|
User.UserId | User.UserId | No |
User.PrimaryOrgId | User.PrimaryOrgId | No |
User.FirstName | User.FirstName | No |
User.LastName | User.LastName | No |
User.LocaleId | User.LocaleId | No |
User.DateOfBirth | User.DateOfBirth | No |
User.UserOrgs | User.UserOrgs | Yes |
User.Locations | User.Locations | Yes |
User.Roles | User.Roles | Yes |
User.Gender | User.Gender | No |
User.Address1 | User.Address1 | No |
User.Address2 | User.Address2 | No |
User.City | User.City | No |
User.State | User.State | No |
User.PostalCode | User.PostalCode | No |
User.Country | User.Country | No |
User.Phone | User.Phone | No |
User.Email2 | User.Email2 | No |
User.UserTimeZone | User.UserTimeZone | No |
User.AvailableUserLocales | User.AvailableUserLocales | Yes |
2 - Configure Okta OIDC IdP for JIT
Get started with OAuth2 / Open ID Connect (OIDC) Identity Provider configuration to enable security integration with other systems or 3rd parties in your IT landscape
Objective
This page describes the Okta OIDC setup with JIT and Non JIT flows.
Integrating Access Management 2.0 with OKTA OIDC
This section shows how to integrate Access Management 2.0 with OKTA, where OKTA will behave as the Identity Provider (IdP). The protocol used for authentication is OIDC. Steps involve creating an OIDC client on both sides.
Step 1: Identity provider in Access Management 2.0.
- Login to the Access Management 2.0 admin console. Select the correct realm, here it’s maactive.
https://mpsos-auth.sce.manh.com/auth/
If you only have Restricted Admin Access, then use the URL:
https://<stack_short_name>-auth.<domain_name>/auth/admin/maactive/console/
- Click Identity Providers → Add providers and select OpenID Connect provider from the list of providers.
- Enter the Alias and the Display name.
Alias also forms part of Redirect URL. For example, if the Alias is scoeoidc
, then the Redirect URI is:
https://mpsos-auth.sce.manh.com/auth/realms/maactive/broker/scoeoidc/endpoint
Copy this redirect URI to register the application In OKTA.
Step 2: App Registration in OKTA
The instructions described below can be used to integrate the Manhattan Active Cloud Platform with OKTA Login
- Login to your OKTA Account → Go to Applications → Click Create App Integration.
- Select OIDC - OpenID connect radio button and then Web/Native Application radio button on the Application Type Panel, and click Next.
Provide the name of the application and paste that Redirect URI from step1-C to Okta Sign-in redirect URIs
The below screen will be displayed after Save Operation on Okta.
- Follow the below steps to create a client_secret key.
Edit and select client secret → save.
As soon as you hit Save, you see Client Secret. Copy this for further configuration.
Unselect Proof Key for Code Exchange (PKCE)
Copy the Client ID, Client Secret from the above screen, and Metadata Well known URI as below to register it in Access Management 2.0.
There is a concept in OIDC Application called the Metadata Well Known URI.
The general format (in Okta) is https://host:<port>/oauth2/default/.well-known/openid-configuration
. In our case:
https://dev-95801423.okta.com/oauth2/default/.well-known/openid-configuration
- Assign users to the application in OKTA.
Step 3: Integrating Access Management 2.0 with OKTA OIDC
- Go to Access Management 2.0 Admin and paste the OpenID connect metadata URI in the Discovery endpoint as shown below (click on show metadata to see the rest of the endpoints).
- Select Client Authentication as Client secret sent as basic auth, paste the client ID and client secret value, and then hit add.
- Next, click on advanced to add the default scopes as shown below.
Next, choose the First Login Flow as MA first Broker login if not already configured.
Once done, choose the MA post login flow as the Post Login Flow drop down. This is an important step, and it is needed for the IDP login to work fine.
Manually add users to the application with appropriate roles.
This completes the integration of Access Management 2.0 and OKTA using the OIDC protocol.
Click on the application URL and use the icon in the UI to log in through OKTA-ODIC. In our case it is scoeoidc
Step 4: Enabling JWT-OIDC-JIT – OKTA
Creating/adding mappers in Access Management 2.0:
To add mappers in Access Management 2.0, go to Access Management 2.0’s provider configuration page,
Select the identity providers (Scoeoidc) and click on the Mappers tab.
Click on Add mapper and create the below mappers by filling in the fields as shown in the below screenshots.
Step 5: Adding Custom claims in OKTA:
Login to OKTA portal https://okta-devok12.okta.com/
Login to your OKTA Account → Go to Directory → Click Profile Editor → select User (default).
Next, click on Add Attribute to add the required customer user attributes.
Save and Next:
Once the attributes are added to the profile-editor, custom attributes fields will be displayed for the user under the profile.
Define the values for custom attributes.
Next is Add claims, go to Security tab on the left-hand side, and select the API option.
Under the Authorization Servers tab, select the default authorization server.
Under the claims header, click on the Add Claim button.
Create a new claim called “primary_org_id” as shown below. Click save.
Create a new claim called “preferred_roles” as shown below. Click save.
Create a new claim called “LocaleId” as shown below. Click save.
Follow the above steps to add attributes based on customer requirements.
- Next, assign users to this application in OKTA.
Step 6: Viewing Claims and Attributes in Okta’s Token Preview
Okta provides a way to view the custom claims or attributes passed under the token preview in the authorization server.
- In the Okta admin console, navigate to Security > API > Authorization Servers, select default authorization server, and then go to the Token Preview.
Select the properties for your token request to preview a token payload (ClientID, Grant type, user, and scopes).
Note: By default, the claims for preferred_username, first name (given_name), and last name (family_name) will be available in the Okta token.
Step 7: JWT-OIDC-JIT Required claims in OKTA.
Note: Please take special care to make sure values mapped to your Identity Provider do not have any unwanted spaces, commas, or other invalid characters before or after the values.
Attributes Shown Below can be configured on IDP as well as SP.
Access Management 2.0 Attribute Name | Okta OIDC Claim Name |
---|
User.UserId | preferred_username |
User.PrimaryOrgId | primary_org_id |
User.FirstName | given_name |
User.LastNameA | family_nam |
User.LocaleId | LocaleId/locale |
User.DateOfBirth | birthdate |
User.UserOrgs | user_orgs |
User.Locations | locations |
User.Gender | gender |
User.Address1 | street_address |
User.Address2 | street_address2 |
User.City | locality |
User.State | region |
User.PostalCode | postal_code |
User.Country | country |
User.Phone | phone_number |
User.Email2 | email |
User.UserTimeZone | zoneinfo |
User.AvailableUserLocales | available_user_locales |
3 - Configure Azure Identity Providers
Get started with OAuth2/Open ID Connect (OIDC) Identity Provider configuration to enable security integration with other systems or 3rd parties in your IT landscape
Objective
This page describes Azure Ad OIDC Setup with JIT and Non JIT Flows.
Integrating Access Management 2.0 with Azure OIDC
This section shows how to integrate Access Management 2.0 with Azure AD, where Azure will behave as an Identity Provider (IdP). The protocol used for authentication is OpenID Connect (OIDC). Steps involve creating an OIDC client on both sides.
Step 1: Identity provider in Access Management 2.0.
- Login to the Access Management 2.0 Admin console and select the correct realm, here it’s maactive.
https://mpsos-auth.sce.manh.com/auth/
If you only have Restricted Admin Access, then use the URL.
https://<stack_short_name>-auth.<domain_name>/auth/admin/maactive/console/
- Click Identity Providers → Add providers and select OpenID Connect provider from the list of providers.
- Enter the Alias and the Display name.
Alias also forms part of the Redirect URL. For example, if Alias is scoeoidcazure
, then the redirect URI is:
https://mpsos-auth.sce.manh.com/auth/realms/maactive/broker/scoeoidcazure/endpoint
Copy this redirect URI to register the application In Azure.
Step 2: OIDC App Registration in Microsoft Azure AD
The instructions described below can be used to integrate Manhattan Active Cloud Platform with Microsoft Azure AD Login:
- Login to https://portal.azure.com/#home as an Administrator or Co-Administrator to create a new Application.
- Select App Registration from the homepage or search for the same from the search bar.
- Select New Registration to create an OIDC application.
- Set the application name, select web application from the drop-down, and paste the redirect URI that has been copied from Access Management 2.0:
https://mpsos-auth.sce.manh.com/auth/realms/maactive/broker/scoeoidcazure/endpoint
Once the redirect URI is pasted, register the application.
This creates the new application (client) in Azure Portal. Note down the client ID, which is also the application ID.
- Creation of client secret Key.
- Select the application (
scoeoidc
) → select certificate and secrets to create a new secret key. - Select New client secret. Describe this secret. Hit Add.
Note: Write down the Client secret value, and make sure you register the key “Value”.
This will be the only chance to capture the key. Never send the secrets over emails.
- Enable permission for this application
- Select API permissions.
- Click on Grant admin consent. Confirm in yes.
- Copy Endpoints for this client to configure in Access Management 2.0. These endpoints can be captured by clicking on Endpoints, as shown below.
Copy the OpenID Connect metadata document (also known as the OIDC Well Known URL across the Security Industry, like SAML IdP Metadata) to configure it in Access Management 2.0.
https://login.microsoftonline.com/c38aa44d-4165-427e-94a7-62d15e922c35/v2.0/.well-known/openid-configuration
Configure the OpenID Connect application using OpenID Connect Application Endpoints in Access Management 2.0.
- Assign the users or groups to this application in Azure.
Step 3: Integrating Access Management 2.0 with Azure OIDC
- Go to Access Management 2.0 Admin Console and paste the OpenID connect metadata in the Discovery endpoint as shown below (click on show metadata to see the rest of the endpoints).
- Select Client Authentication as Client secret sent as basic auth, paste the client ID and Client secret value, then hit Add.
- Next, click on Advanced to add the default scopes as shown below.
- Next, choose the First login flow as MA first Broker login if not yet configured.
Also, choose Post login flow as MA post login flow if not configured already. This is an important step, and it is needed for the IDP login to work fine.
- Ensure users were added to the application with appropriate roles.
This completes the integration of Access Management 2.0 and Azure using the OIDC protocol.
- Click on the application URL and use the icon in the UI to log in through Azure-ODIC. A better-looking screen is expected soon. The number of IdP Login buttons/Options will depend on how many IdPs the user has configured within Access Management 2.0. In our case, it is
scoeazure-oidc
.
Step 4: Enabling JWT-OIDC-JIT - Azure
In case Just In Time (JIT) User Provisioning is not needed, please skip this step 4.
If JIT needs to be enabled, we need to add six mandatory mappers on each side in Access Management 2.0, as well as Azure.
- To add mappers in Access Management 2.0, go to the Access Management 2.0 provider configuration page, select the identity providers (
Scoeazure-oidc
), and click on the Mappers tab.
Step 5: Adding Custom claims in Azure AD
Login to Azure portal https://portal.azure.com/#home
We have multiple options in Azure AD to pass the required claims in the response token.
Steps for Enabling Optional claim for OIDC in Azure:
- In AZURE AD, go to Token Configuration → Add optional claim ID → select preferred_username and add available required claims as well.
If we do not have options to pass the required attributes/claims in token configuration, we can pass it through managed claims.
Go to Enterprise applications → Single Sign-on → Attributes and claims.
Go to Enterprise applications and search for the application (in our case: scoeoidc
)
- Select the application and click on the Single sign-on Tab.
Similarly, add other attributes as well.
- To make these changes work and send the attributes in the ID token, we need to update the acceptMappedClaims to true in the application manifest.
Go to App registrations → <application name(scoeoidc)>
→ manifest.
Next, assign users to this application.
Once the above steps are performed, the user will be created in the application.
- JWT Token response using Postman.
We can check the sent claims/attributes in the JWT token response using Postman. Use the token endpoint, client ID, and client secret key to get the token response ID of the user in Postman.
POST Request:
A successful request would get HTTP 200 OK responses having an ID token and access token, as shown below.
- Go to https://jwt.io/ and paste the ID token in the debugger to know what response is sent from the token.
Step 6: JWT-OIDC-JIT Required claims in Azure.
Note: Please take special care to make sure values mapped to your Identity Provider do not have any unwanted spaces, commas, or other invalid characters before or after the values.
The attributes in the table below can be configured on both IDP and SP by following the steps above.
Access Management 2.0 Attribute Name | Okta OIDC Claim Name |
---|
User.UserId | preferred_username |
User.PrimaryOrgId | primary_org_id |
User.FirstName | given_name |
User.LastNameA | family_nam |
User.LocaleId | LocaleId/locale |
User.DateOfBirth | birthdate |
User.UserOrgs | user_orgs |
User.Locations | locations |
User.Gender | gender |
User.Address1 | street_address |
User.Address2 | street_address2 |
User.City | locality |
User.State | region |
User.PostalCode | postal_code |
User.Country | country |
User.Phone | phone_number |
User.Email2 | email |
User.UserTimeZone | zoneinfo |
User.AvailableUserLocales | available_user_locales |