|
There are four special roles in |
Here are some quick tests to check if the LDAP configuration is correct:
Since you are using LDAP to define |
In this scenario, a user authenticates to his windows account and tries to use . Since the user is already authenticated to the network,
will recognize his credentials and automatically forward the user to his
account, if he is a designer, or allow the user to use a form/flow if those resources are available to the tenant.
The basic deployment is IIS fronting and the authentication is done against LDAP. For that to work you need:
Please also refer to the force auth property for forms and flows. Force auth lets you override SSO for an individual form or flow.
Once all is configured and running it is possible to test these scenarios:
In this case, the server and the Active Directory server are running on the same machine. The user is already authenticated to the windows network and points the browser to:
http://[server]/frevvo/web/tn/[LDAP tenant]/login |
Substitute LDAP tenant above with the tenant name you configured with the LDAP Security Manager. The server variable should be the ip address of the machine where Active Directory is installed .
The user will automatically authenticate to . It is crucial that the LDAP user is known to
, in other words, the user should be one of the entries retrieved by the LDAP expression configured in the property com.frevvo.security.ldap.allUsersFilter in frevvo.xml.
In this case, the server and the Active Directory server are running on different machines. The user is trying to hit the URL below from outside the network.
http://[server]/frevvo/web/tn/[LDAP tenant]/login |
Substitute LDAP tenant above with the tenant name you configured with the LDAP Security Manager and the server variable with the ip address of the machine where Active Directory is installed.
Since the user is not authenticated in the windows Network, he will be prompted by the browser for credentials. IIS will authenticate the user in the network and forward the request to . The user will be automatically redirected to his initial page without having to re-enter his credentials.
This parameter is needed in frevvo.xml for various activities like accessing ACL page , publishing templates , resetting tasks etc. Let's say you have a browser signed in via SSO to machine m1 (port 80). IIS is running on m1 (port 80) redirecting /frevvo/web to frevvo running on m2:8082. The browser submits form to m1, IIS redirects to m2:8082. The doc action is a frevvo:// URI which gets resolved to http://m1/frevvo/... POSTs to this URI but m1 rejects the POST since it is not authenticated.
To avoid situations such as these, set frevvo.internal.baseurl to the actual host:port of the server. Follow these steps:
Parameter name="frevvo.internal.baseurl" value="http:// <ip of the m/c where frevvo server is hosted>:<port>" override="false"/> |
If your system is configured for LDAP SSO, the upload and video controls exhibit the following behaviors:
|
This is the case where the user will authenticate through the 's login page but the user data is in LDAP. Once you complete the LDAP configuration you should have a tenant configured with the LDAP security manager. Lets assume that the tenant name you created is 'LDAP' and there is a user 'john' in LDAP. In that case, in
's login page:
Username: john@LDAP Password: ***** Tenant: <blank> |
The password provided in the login page is the user's password in LDAP. A very important point to note is that the user name, "john" in the example above, needs to match the value for the LDAP entry attribute configured in the property com.frevvo.security.ldap.userIdDisplayAttribute. For instance, for Active Directory, the value of this property is normally sAMAccountName. That means will try to find an entry in LDAP that has sAMAccountName=john. You can configure any attribute that uniquely identify the user and that the possible values don't have spaces.
Active directory attributes can be retrieved from the LDAP server using Business Rules. The rules use the _data.getParameter('subject.attribute) feature to make the information available. There are many attributes available in Active Directory. Multi valued attributes are also supported. This feature works if you are using an LDAP or LDAP Container Security Manager configuration.
If you are using the tomcat bundle, First Name, Last Name and Employee Email are already configured in the LDAP sections of the <frevvo-home>\tomcat\conf\catalina\localhost\frevvo.xml file. If you want to pull additional information, you must add the "com.frevvo.security.Idap.customAttributes" configuration parameter to the <frevvo-home>\tomcat\conf\catalina\localhost\frevvo.xml file. The value of the parameter is a comma separated list of attribute names to be retrieved, Let's use the Employee ID, Type and Number as an example.
Follow these steps to modify the configuration:
<Parameter name="com.frevvo.security.ldap.customAttributes" value="employeeNumber,employeeType,employeeID,middleName,carLicense" override="false"/> |
5. Save the file after all your changes are made.
6. Restart .
If things are not working as you expected:
Below are some common cases to help with troubleshooting. All of them assume that the connectivity is working, meaning that you tested, from the same box where is running that the connection parameters to the LDAP server you configured in
are correct.
This is can be a problem with the expression you configured in com.frevvo.security.ldap.allUsersFilter (for users) and/or com.frevvo.security.ldap.allGroupsFilter (for groups). Also verify that the search bases are correct, properties com.frevvo.security.ldap.usersBase (users) and com.frevvo.security.ldap.groupsBase (groups). The LDAP Browser is useful here. Execute a search using the same expression and bases you configured in and check if the result is correct.
Another potential issue is case sensitivity. Please refer to the topic Mixed or Upper case User Names below.
Another potential issue is case sensitivity. Please refer to the topic Mixed or Upper case User Names below.
A common cause is that the distinguished name attribute is incorrect. That attribute is defined by the property com.frevvo.security.ldap.distinguishedNameAttribute. If you can't determine the distinguished name attribute for your system you can try the fall back strategy described here. Some common distinguished name attributes can be found here
To avoid case issues follow these three steps described in more detail below:
|
The first issue is cased by the user login in. For instance, John Stevens LDAP account is JStevens but he logs in as jstevens, he will be recognized by case insensitive LDAP and thus granted access but will not be recognized as a designer or as a tenant admin by . To solve this, set the property com.frevvo.security.ldap.ignoreCase to true.
To prevent issues you could always login to using lower case jstevens. LDAP will grant access as it is case insensitive and
will know that you may have the designer or admin special permission. However users can forget to do this. To force this configure
's web.xml parameter frevvo.login.userid.case by adding the <context-param> lines you see below. You can specify a value of either lower or upper.
<context-param> <param-name>frevvo.login.userid.case</param-name> <param-value>lower</param-value> <description>Force all login user ids to upper or lower case</description> </context-param> |
The second problem is in directing tasks to frevvo users if your LDAP user names are mixed case. One solution is to use hidden controls on your forms with rules to convert the case of user names to lower case. The example below shows two text controls on a form, one visible, EmployeeMixedCase, and the other hidden, Employee.
A user types a name (regardless of case) into the EmployeeMixedCase control. The hidden Employee control has a business rule that takes the value of the visible control and converts it to lowercase.
Employee.value = EmployeeMixedCase.value.toLowerCase(); |
The form or workflow routing can then use {Employee} rather than the control that may be mixed case.
Changing the case of LDAP userids in Active Directory can cause undesired results. Use caution. |
This parameter is needed in frevvo.xml for various activities like accessing ACL page , publishing templates , resetting tasks etc. Let's say you have a browser signed in via SSO to machine m1 (port 80). IIS is running on m1 (port 80) redirecting /frevvo/web to frevvo running on m2:8082. Browser submits form to m1, IIS redirects to m2:8082. The doc action is a frevvo:// URI which gets resolved to http://m1/frevvo/... POSTs to this URI but m1 rejects the POST since it is not authenticated.
To avoid situations such as these, set frevvo.internal.baseurl to the actual host:port of the server. Follow these steps:
Parameter name="frevvo.internal.baseurl" value="http://<ip of the m/c where frevvo server is hosted>:<port>" override="false"/> |
If your system is configured for LDAP SSO and the upload and video controls may exhibit the following behaviors:
|
<Parameter name="com.frevvo.security.ldap.connection.url" value="ldap://[your server]:[port, typically the default is 389 ]" override="false"/> <Parameter name="com.frevvo.security.ldap.connection.name" value="[user name]" override="false"/> <Parameter name="com.frevvo.security.ldap.connection.password" value="[user password]" override="false"/> <Parameter name="com.frevvo.security.ldap.usersBase" value="CN=Users,DC=test,DC=windows,DC=frevvo,DC=com" override="false"/> <Parameter name="com.frevvo.security.ldap.groupsBase" value="CN=Users,DC=test,DC=windows,DC=frevvo,DC=com" override="false"/> <Parameter name="com.frevvo.security.ldap.userIdDisplayAttribute" value="sAMAccountName" override="false"/> <Parameter name="com.frevvo.security.ldap.groupIdDisplayAttribute" value="sAMAccountName" override="false"/> <Parameter name="com.frevvo.security.ldap.notifications" value="true" override="false"/> <Parameter name="com.frevvo.security.ldap.allGroupsFilter" value="(objectClass=group)" override="false"/> <Parameter name="com.frevvo.security.ldap.allUsersFilter" value="(objectClass=user)" override="false"/> <Parameter name="com.frevvo.security.ldap.distinguishedNameAttribute" value="distinguishedName" override="false"/> <Parameter name="com.frevvo.security.ldap.userMemberOfAttribute" value="memberOf" override="false"/> <Parameter name="com.frevvo.security.ldap.groupMemberAttribute" value="member" override="false"/> <Parameter name="com.frevvo.security.ldap.firstNameAttribute" value="givenName" override="false"/> <Parameter name="com.frevvo.security.ldap.lastNameAttribute" value="sn" override="false"/> <Parameter name="com.frevvo.security.ldap.emailAttribute" value="mail" override="false"/> |
<Parameter name="com.frevvo.security.ldap.connection.url" value="ldap://[your server]:[port, typically the default is 389 ]" override="false"/> <Parameter name="com.frevvo.security.ldap.connection.name" value="cn=admin,dc=test,dc=frevvo,dc=com" override="false"/> <Parameter name="com.frevvo.security.ldap.connection.password" value="[user password]" override="false"/> <Parameter name="com.frevvo.security.ldap.usersBase" value="DC=test,DC=frevvo,DC=com" override="false"/> <Parameter name="com.frevvo.security.ldap.groupsBase" value="DC=test,DC=frevvo,DC=com" override="false"/> <Parameter name="com.frevvo.security.ldap.userIdDisplayAttribute" value="uid" override="false"/> <Parameter name="com.frevvo.security.ldap.groupIdDislayAttribute" value="entryDN" override="false"/> <Parameter name="com.frevvo.security.ldap.notifications" value="true" override="false"/> <Parameter name="com.frevvo.security.ldap.allGroupsFilter" value="(|(objectClass=groupOfUniqueNames)(objectClass=organizationalRole))" override="false"/> <Parameter name="com.frevvo.security.ldap.allUsersFilter" value="(objectClass=person)" override="false"/> <Parameter name="com.frevvo.security.ldap.distinguishedNameAttribute" value="entryDN" override="false"/> <Parameter name="com.frevvo.security.ldap.groupMemberAttribute" value="uniqueMember" override="false"/> <Parameter name="com.frevvo.security.ldap.userMemberOfAttribute" value="" override="false"/> <Parameter name="com.frevvo.security.ldap.firstNameAttribute" value="cn" override="false"/> <Parameter name="com.frevvo.security.ldap.lastNameAttribute" value="sn" override="false"/> <Parameter name="com.frevvo.security.ldap.emailAttribute" value="mail" override="false"/> |
These are the properties used to configure the LDAP connector. The properties in bold are required.
Property | Description |
---|---|
com.frevvo.security.ldap.connection.url | ldap server url |
com.frevvo.security.ldap.connection.name | User to connect to LDAP. This user must have the proper permissions to read and run queries in the ldap server. If using Active Directory, it is common to specify the domain. For instance, TEST\Administrator refers to the user Administrator in the TEST domain. |
com.frevvo.security.ldap.connection.password | Password for the user defined in com.frevvo.security.ldap.connection.name. |
com.frevvo.security.ldap.usersBase | Searches for users will start from the ldap node specified by this property.If the value is empty the searches will start from the root domain. |
com.frevvo.security.ldap.groupsBase | Searches for the groups will start from the ldap node specified by this property. If the value is empty, searches will start from the root domain |
com.frevvo.security.ldap.userIdDisplayAttribute | User attribute that will be visible in frevvo. This is what will be displayed in the list of users a tenant admin sees and has to be unique in the server. Another restriction is that the values for the attribute configured here cannot have spaces. For instance, don't configure CN as the value since it can contain spaces in most systems. |
com.frevvo.security.ldap.groupIdDisplayAttribute | Group attribute that will be visible in frevvo. This is, for instance, what will be displayed in the list of groups a tenant admin sees or the groups used in workflows. This attribute has to be unique in the server. |
com.frevvo.security.ldap.notifications | Notifications are emails sent by frevvo to workflows participants. If ''true'', notifications will be sent. (default=true) |
com.frevvo.security.ldap.allGroupsFilter | The expected value is an LDAP filter expression. The expression should return the groups that will be available to be used in frevvo workflows. com.frevvo.security.ldap.groupIdDisplayAttribute |
com.frevvo.security.ldap.allUsersFilter | The expected value is an LDAP filter expression. The expression should return the users that will be available to be used in frevvo work flows and authentication. com.frevvo.security.ldap.groupIdDisplayAttribute |
com.frevvo.security.ldap.frevvoDesignersFilter Deprecated in 4.5 | The expected value is an LDAP filter expression. This expression needs to return a list of users (not groups) that will be considered frevvo designers. Microsoft Active directory Default groups (Domain Users etc.) are not supported. |
com.frevvo.security.ldap.frevvoTenantAdminFilter Deprecated in 4.5 | The expected value is an LDAP filter expression. This expression needs to return a list of users (not groups) that will be considered frevvo tenant admins. Microsoft Active directory Default groups (Domain Users etc.) are not supported. |
com.frevvo.security.ldap.distinguishedNameAttribute Deprecated in 4.1.3 | Deprecated in 4.1.3. Name of the ''distinguished name'' attribute. |
com.frevvo.security.ldap.userMemberOfAttribute | |
com.frevvo.security.ldap.groupMemberAttribute | |
com.frevvo.security.ldap.firstNameAttribute | Name of the user ''first name'' attribute |
com.frevvo.security.ldap.lastNameAttribute | Name of the user ''last name'' attribute. |
com.frevvo.security.ldap.emailAttribute | Name of the user ''email'' attribute in the LDAP server. This is used in email notifications |
com.frevvo.security.ldap.managerAttribute | |
com.frevvo.security.ldap.cache | Enable or disable the caching of users and groups. The default value is 'true'. This property is no longer needed and can be removed. It has been deprecated. |
com.frevvo.security.ldap.ignoreCase | This makes frevvo ignore the case stored in LDAP systems, primarily for the purpose of determining roles. |
com.frevvo.security.ldap.customAttributes | This is a a comma separated list of attribute names to be retrieved from the LDAP Server. |