Enable ABL application authentication
- Last Updated: March 16, 2023
- 3 minute read
- OpenEdge
- Version 12.2
- Documentation
-
instance-name/webapps/webapp-name/WEB-INF/oeablSecurity.properties
- Properties and values applied to the web application.
- Matches the deployment configuration and supersedes the property values defined in instance-name/conf/openedge.properties.
- Can contain all or a subset of Spring Security properties.
-
instance-name/ablapps/abl-app-name/conf/oeablSecurity.properties
- Defaults applied to all web applications within a single ABL application.
- Matches the deployment configuration and supersedes the property values defined in instance-name/conf/openedge.properties.
- Can contain all or a subset of Spring Security properties.
-
instance-name/conf/oeablSecurity.properties
- Superset of Spring Security properties.
- Defaults applied to all web applications across all deployed ABL applications.
Before running and deploying business applications to a production instance, you should increase the security level by enabling authentication in a staging environment. Out of the box, the authentication mode of the production instance is set to anonymous, which is the lowest security level. The security level is set minimally because it is impossible to foresee which authentication implementation you might require.
The Spring Security framework, which is an integral part of PAS for OpenEdge, is adaptable to a wide variety of authentication models and architecture.
- Open the oeablSecurity.properties file
at the security layer you require:
- instance-name/webapps/webapp-name/WEB-INF/oeablSecurity.properties
- instance-name/ablapps/abl-app-name/conf/oeablSecurity.properties
- instance-name /conf/oeablSecurity.properties
- Set the login model for
spring.login.model. The following HTTP client authentication login models are supported:Login Model Description anonymousThe default. All clients have public access. No direct logins or Single sign-on (SSO) allowed. basicUsers authenticate using the HTTP BASIC header direct logins and SSO headers. formUsers authenticate using a HTTP POST message and form data for direct login and SSO headers. containerUsers authenticate via Tomcat realm services and authorize URL access via Spring Security. ssoOpenEdge SSO using ClientPrincipal access tokens. No direct login – only SSO headers. oauth2OpenEdge support for validating OAuth2 JWT tokens for URL authorization. For more information, see Authenticate using OAuth2 and JWT . samlUsers authenticate and authorize using SAML token. For more information, see Authenticate using SAML. You can customize the Spring login process using the associated <type>LoginModel.xml. Edit the $CATALINA_BASE/webapps/ROOT/WEB-INF/spring/<type>LoginModel.xml. For more information on customization, see the Spring documentation.Note: Add a migration task to review any customizations after upgrading Spring versions for any Spring updates. - Select the user account source for
http.all.authmanager. The following user account sources are supported:User Account Source Description localSource is web application WEB-INF/users.properties with clear-text passwords. For more information, see Local and Extended Local user accounts in Manage Progress Application Server (PAS) for OpenEdge.
extlocalSource is the application WEB-INF/users.properties with encrypted passwords. For more information, see Local and Extended Local user accounts in Manage Progress Application Server (PAS) for OpenEdge.
ldapSource is simple LDAP (or Active Directory) server configuration. For more information, see LDAP user accounts in Manage Progress Application Server (PAS) for OpenEdge.
oerealmSource is a bridge to ABL application maintained user accounts. For more information, see OERealm user account configurations in Manage Progress Application Server (PAS) for OpenEdge.
adSource is a simple (constrained) Active Directory configuration. For more information, see Active Directory user accounts in Manage Progress Application Server (PAS) for OpenEdge.
stsSource is the OpenEdge Authentication Gateway client. For more information, see the OpenEdge Authentication Gateway Guide in OpenEdge Getting Started: OpenEdge Authentication Gateway Guide.
- Update the default
ABLDomainRegistry.keystoreto include your domain name and domain access-code. Perform the following steps:- Design the OpenEdge domain name space to be used by the ABL application or instance, and assign a Domain Access Code (DAC) to each domain name.
- Create an
ABLDomainRegistry.csvfile with domain names and clear-text DAC pairs, one pair per line. Domain names and DACs are separated by a comma. For example:domain-name,clear-text-DAC - Use the
gendomregutility to create an encrypted Java keystore file from the CSV file. For example:$DLC/bin/gendomreg ABLDomainRegistry.csv ABLDomainRegistry.keystore - Copy the encrypted Java keystore file to the
.../confdirectory of each PAS for OpenEdge instance. Delete or override the default one.Note: If you use a non-default name for the keystore file, change the.registryFileproperty in theoeablSecurity.propertiesfile to the non-default keystore name. - Design the role name pattern that will be used to designate an OpenEdge domain. For more information, see Obtain a domain name from a role name.
- When you have established a role name pattern, construct the Java RegEx pattern that will distinguish the domain name from any other normal user account granted roles.
- Set the OEClientPrincipalFilter bean's domainRoleFilter property to the value of the Java RegEx match pattern.
- If required by your security practice, set the
OEClientPrincipal.validateClientDomainproperty in the oeablSecurity.properties totrue. TheOEClientPrincipal.validateClientDomainproperty is a Boolean value that when set to true and when there is a domainRoleFilter defined, it compares the domain specified by the client to the domain produced by the domainRoleFilter. If the domains do not match, then the client request is rejected.