Support for SAML in PAS for OpenEdge
- Last Updated: March 30, 2020
- 4 minute read
- OpenEdge
- Version 12.2
- Documentation
It is important to note that PAS for OpenEdge does not serve as a direct-login service provider. This means that end users do not directly access a PAS for OpenEdge web application. Instead, a PAS for OpenEdge client application acts as the intermediary between the user and the PAS for OpenEdge web application. A PAS for OpenEdge client application can be any REST or JavaScript program that can send and receive HTTP messages.
The client application is also responsible for sending SAML requests to an identity provider, receiving a SAML assertion from it, and then sending the assertion to the PAS for OpenEdge web application. The assertion must be sent via the basic authentication header in an HTTP request.
To set up a PAS for OpenEdge web application as a SAML service provider, you must configure the web application's oeablSecurity.properties file.
How SAML works in PAS for OpenEdge
- A user uses a browser to connect to a PAS for OpenEdge client application and tries to perform an operation that requires a resource deployed on a PAS for OpenEdge web application.
- The PAS for OpenEdge client application generates a SAML authentication request and redirects the user's browser to the configured identity provider's SSO URL.
- The identity provider processes the SAML request and presents the user with an authentication challenge.
- The user responds to the authentication challenge by supplying the required credentials.
- The identity provider authenticates the user and generates a SAML response containing a SAML assertion and redirects the user's browser to the client application's ACS URL.
- The PAS for OpenEdge client application receives the SAML response, processes it, and sends the SAML assertion to the PAS for OpenEdge web application by passing it in an HTTP Authorization header.
- The PAS for OpenEdge web application processes the SAML assertion based on
properties configured in its oeablSecurity.properties
file. It performs tasks such as:
- Decryption: If the assertion is encrypted and/or signed, the PAS for OpenEdge web application uses the identity provider's public key (exposed via the provider's metadata) to decrypt the message.
- Validity Period Check: The PAS for OpenEdge web application verifies that the assertion is not past its expiry date.
- First Level HTTP Method Validation: The PAS for OpenEdge web application checks if the HTTP method used by the PAS client to send the SAML assertion is a permitted method.
- ACS URL Validation (Optional): Depending on the
property settings, the PAS for OpenEdge web application may also
match the assertion's
<AudienceRestriction>element against the PAS client's ACS URL (exposed via the client's metadata). - Authorization: The PAS for OpenEdge web application obtains the user's roles from attribute statements in the SAML assertion and determines if the user is authorized to access the requested resource. It does this by matching the roles obtained from the assertion with the roles defined for resource URLs in the oeablSecurity.csv file.
- Second Level HTTP Method Validation: The PAS for OpenEdge web application verifies that the HTTP method used in the request matches the permitted HTTP method defined for the requested resource URL in the oeablSecurity.csv file.
- Client-Principal Creation: If the PAS for OpenEdge web application is able to perform the previous tasks successfully, it creates a sealed Client-Principal object and passes the object to the relevant ABL resource.
- Response: Finally, the PAS for OpenEdge web application sends a response to the client application.
- The client application processes the response and grants access to the end user to perform their desired operation.
How SAML assertion elements map to Client-Principal object attributes
If the PAS for OpenEdge web application is able to validate the SAML assertion, it creates a sealed Client-Principal object and passes it to the required ABL resource.
| Client-Principal attribute | SAML assertion field |
|---|---|
USER-ID1 |
NameID1 |
DOMAIN-NAME1 |
NameID1 |
SESSION-ID |
SessionIndex
attribute in AuthnStatement |
LOGIN-EXPIRATION-TIMESTAMP3 |
attribute in Conditions |
ROLES2 |
Optional attributes for roles 2 |
1 If the NameID is an email address, PAS for
OpenEdge uses the '@' separator to extract the
user-id and the domain name.
2 The names of these optional attributes must be set in the
samlToken.UserDetails.roleAttrName property in the
oeablSecurity.properties file.
3 The oeablSecurity.properties file has a property named
samlToken.webSSOProcessingFilter.responseSkew. If a value is
specified for this property (in seconds), it is added to the
NotOnOrAfter timestamp.
Other attribute values are populated based on the
OEClientPrincipalFilter properties set in the
oeablSecurity.properties file.
If there are other attributes that you want to set, that are not covered by
either the SAML assertion or the default OEClientPrincipalFilter, you can set them using any of the 10
key-value OEClientPrincipalFilter static
properties. For example, if you want to set the DOMAIN-DESCRIPTION attribute, you can modify a key-value property as
follows:
OEClientPrincipalFilter.properties.1.key=DOMAIN-DESCRIPTION
OEClientPrincipalFilter.properties.1.value=OEApplication