Skip to content

When it comes to security AdaptiveScale is divided in two sections:

  • Secure store - for storing credentials and other secrutiy related info used during operations like accessing data source.
  • Authentication (LDAP) - for allowing/restricting acces to the platform.

Secure Store

To secure credentials platform utilizes Java KeyStore in JKS format to create a secure store file. Location of this file and the password used for it's encryption can be configured in application.properties file. Note: these values need to be modified before any data source is added - otherwise all data source passwords for existing data sources need to be re-entered through UI->Data Source->Edit form.

Property Value Required Description
proedms.secure.store.file keystore.jks Yes Location of the file where to store keys
proedms.secure.store.type JCEKS Yes Type of the keystore. Currently only JCEKS is supported

Authentication (LDAP)

Authentication in AdaptiveScale is optional and can be enabled/disabled from application.properties file. AdaptiveScale uses LDAP for authentication and it also provides the ability to bring up local server based on provided LDIFF file. Once the user credentials are verified JWT token is created which is valid for 24 hours and all subsequent interactions have this token provided in Authorization header property.

There are few properties that are required to be set in application.properties in order to enable authentication.

Property Value Required Description
proedms.security.authentication.enabled true Y This property enables the authenticaiton mechanism in general. Default: false
proedms.jwt.auth.type SECRET Y Indicates the type of secret JWT will use to has/ecnrypt tokens. Can be set to SECRET for using string type of key. Can be set to KEY for using private key file.
proedms.jwt.secret [String/Path] Y Depending on how the property proedms.jwt.auth.type this can be either a string type of secret or location to private key file.
ldap.user.dn.patterns ex:uid={0},ou=people Y User DN Pattern - A DN pattern that can used to directly login users to the LDAP database. This pattern is used for creating a DN string for "direct" user authentication, where the pattern is relative to the base DN in the ldapUrl.
Note: uid needs to have {0} as value as it will be matched against username provided during login.
ldap.group.search.base ex: ou=groups Y Subtree to search for username
ldap.url ex: ldap://localhost:8389/dc=AdaptiveScale,dc=com Y LDAP url to connect to - can be set as localhost if AdaptiveScale embeded LDAP is to be used.
ldap.password.attribute userPassword Y Name of the attribute for password in LDAP. Default:userPassword.

AdaptiveScale also provided embeded LDAP server that can be activated by providing additional properties to properties file. This is useful for the cases where users don't have their own LDAP server or don't want to connect the platform with existing LDAP server. Keeping the configuration sa examples from abvoe and additionally setting the following configurations will allows users to start AdaptiveScale embedded LDAP server based on provided LDIFF file which will contains LDAP data.

Property Value Required Description
spring.ldap.embedded.ldif file:///opt/apt/auth.ldif Y Absolute path to LDIFF file
spring.ldap.embedded.base-dn dc=AdaptiveScale,dc=com Y A base dn from where the server will search for users. This is dependent with LDIFF contents and is also needed in ldap.url property.
spring.ldap.embedded.port 8389 Y Port on which embedded LDAP server will run.

Using embedded server requires LDIFF file which is a copy of LDAP data structure dumped to single file. The following example ldiff matches the example configurations given above and creates user with username admin and password admin. Create a file with .ldif extension and add the follwing as it's content.

# LDAP Auth data
dn: dc=AdaptiveScale,dc=com
objectclass: top
objectclass: domain
objectclass: extensibleObject
dc: AdaptiveScale

# Organizational Units
dn: ou=groups,dc=AdaptiveScale,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups

dn: ou=people,dc=AdaptiveScale,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people

# Accounts
dn: uid=admin,ou=people,dc=AdaptiveScale,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: AdaptiveScale
sn: AdaptiveScale
uid: admin
userPassword: admin

# Create Group Admin
dn: cn=admins,ou=groups,dc=AdaptiveScale,dc=com
objectclass: top
objectclass: groupOfUniqueNames
cn: admins
ou: admin
uniqueMember: uid=admin,ou=people,dc=AdaptiveScale,dc=com

Starting AdaptiveScale with the configration set as above will land user in Login screen where user admin and password admin can be used to authenticate.