Administer Transact users and groups

Transact supports Tomcat, OpenLDAP and Microsoft Active Directory protocols to maintain a roster of users and groups. OpenLDAP is the default management system that is enabled and configured following a clean installation of Transact. There are two main configuration files:

<Transact Folder>\Application\WEB-INF\classes\META-INF\dcma-user-connectivity\user-connectivity.properties

This file contains the settings necessary to populate groups names in Transact Batch Class Management. The file contains settings for LDAP, Tomcat and MS Active Directory.

<Transact Folder>\JavaAppServer\conf\server.xml

This file tells Transact how users should be authenticated when they log in to Transact.

Configuring Apache Tomcat

Apache Tomcat configuration is set in the following files:

<Transact Folder>\Application\WEB-INF\classes\META-INF\dcma-user-connectivity\user-connectivity.properties

This file contains the settings necessary to populate groups names in Transact Batch Class Management. The following settings should be set for Tomcat:

user.tomcatUserXmlPath=<Transact Folder>\\JavaAppServer\\conf\\tomcat-users.xml
user.connection=2
<Transact Folder>\JavaAppServer\conf\server.xml

This file tells Transact that users should be authenticated using Tomcat. The file should have the following Realm:

<Realm className="org.apache.catalina.realm.MemoryRealm"/>
<Transact Folder>\JavaAppServer\conf\tomcat-users.xml

This file contains user groups and users. For example, a group called "admin" and a user called "ephesoft" with password "demo" is defined as follows:

<role rolename="admin"/>
<user username="ephesoft" password="demo" roles="admin"/>

Configuring OpenLDAP

OpenLDAP Software is a free, open source implementation of the Lightweight Directory Access Protocol (LDAP) developed by the OpenLDAP Project. It is released under its own BSD-style license called the OpenLDAP Public License. LDAP is a platform-independent protocol. To connect to the Transact LDAP database and modify groups, users, permissions, and other settings, administrators can use the bundled JExplorer tool at the following location:

<Transact Folder>\Dependencies\OpenLDAP\ldap-client\jxplorer-3.2.1\jxplorer.bat

Connection to LDAP configuration is enabled in these files:

<Transact Folder>\Application\WEB-INF\classes\META-INF\dcma-user-connectivity\user-connectivity.properties

This file contains the settings necessary to populate group names in Transact Batch Class Management. The following settings should be set for LDAP configuration:

user.ldap_url=ldap://localhost:389
user.ldap_config=com.sun.jndi.ldap.LdapCtxFactory
user.ldap_domain_component_name=ephesoft
user.ldap_domain_component_organization=com
user.ldap_username=cn=Manager,dc=ephesoft,dc=com
user.ldap_password=*******
user.connection=0
<Transact Folder>\JavaAppServer\conf\server.xml

This file tells Transact that users should be authenticated using Tomcat. The file should have the following Realm:

<Realm   className="org.apache.catalina.realm.JNDIRealm"
connectionURL="ldap://localhost:389"
connectionName="cn=Manager,dc=ephesoft,dc=com"
connectionPassword="secret"
userPattern="cn={0},ou=people,dc=ephesoft,dc=com"
roleBase="ou=groups,dc=ephesoft,dc=com"
roleName="cn"
roleSearch="uniqueMember={0}"
/>

Configuring Active Directory

To configure Active Directory, modify the user-connectivity.properties file, which is located in:

<Transact Folder>\Application\WEB-INF\classes\META-INF\dcma-user-connectivity

Set the following:

This setting will be in sync with the one done while setting the Realm.

Setting changes to LDAP

Normal LDAP service allows you to search on root domain without any further configuration. So there is not much change to be made in order to make LDAP work with root domain chosen as base. Following are the changes:

  • user.ldap_user_base to empty.

  • user.ldap_group_base to empty.

The following is a sample configuration for user-connectivity.properties file:

 user.ldap_url=ldap://localhost:389
    user.ldap_config=com.sun.jndi.ldap.LdapCtxFactory
    user.ldap_domain_component_name=ephesoft
    user.ldap_domain_component_organization=com
    user.ldap_username=cn=Manager,dc=ephesoft,dc=com
    user.ldap_password=secret
    user.ldap_user_base=
    user.ldap_group_base=
            user.msactivedirectory_url=ldap://msad.ephesoft.com:3268
            user.msactivedirectory_config=com.sun.jndi.ldap.LdapCtxFactory
            user.msactivedirectory_context_path=
            user.msactivedirectory_domain_component_name=ephesoft
            user.msactivedirectory_domain_component_organization=com
            user.msactivedirectory_user_name=CN=administrator,DC=ephesoft,DC=com
            user.msactivedirectory_password=Passw0rd
                  # filter can have |(OR), &(AND) and !(NOT)
                  # | (|(cn=a*))
                  # & (&(cn=a*))
                  # ! (!(cn=a*))
                  # complex example ((!(cn=a*))(|(cn=ephesoft*)(&(cn=b*)))
                  user.msactivedirectory_group_search_filter=(!(cn=*h*oft*))
                  user.tomcatUserXmlPath=C:\\Ephesoft\\JavaAppServer/conf/tomcat-users.xml
    # 0 for LDAP
    # 1 for MS Active Directory
    # 2 for Tomcat
    user.connection=1

Next, modify the Realm settings in the server.xml file located in:

<Transact Folder>\JavaAppServer\conf

<Realm   className="org.apache.catalina.realm.JNDIRealm"
               connectionURL="ldap://<Server-Name/IP>:3268"
               connectionName="<Authenticated-User-Name>"
               connectionPassword="<Authenticated-User-Password>"
                     userBase="<Any Chosen User Base>"
                     userSearch="<Unique Parameter for user search Suggested: (sAMAccountName={0})>"
                     userSubtree="true"
                     referrals="follow"
                          roleBase="<Any Chosen User Base>"
                          roleName="cn"
                          roleSubtree="true"
                          roleSearch="(member={0})"
                                 
    />

The following is a sample Realm configuration:

<Realm   className="org.apache.catalina.realm.JNDIRealm"
               connectionURL="ldap://msad.ephesoft.com:3268"
               connectionName="CN=administrator,DC=ephesoft,DC=com"
               connectionPassword="password"
                   userBase="DC=ephesoft,DC=com"
                   userSearch="(sAMAccountName={0})"
                   userSubtree="true"
                   referrals="follow"
                       roleBase="DC=ephesoft,DC=com"
                       roleName="cn"
                       roleSubtree="true"
                       roleSearch="(member={0})"
                                 
    />

Specify the Active Directory group as super admin

To specify the super admin, navigate to <Transact_Directory>\Application\WEB-INF\classes\META-INF and open application.properties. Set the following property:

user.super_admin=<GroupName>

The following is a sample application.properties file:

#Super admin group update disabled.
    ephesoft.product.version=3.0.2.0
    report.ant.buildfile.path=C:\\Ephesoft\\Report/ephesoft-reporting/build.xml
    enable.reporting=true
    enable.uploadBatch=true
  #default doc type view can be "dropdown_list" or "suggest_box"
    document.default_doc_type_view=suggest_box_view
    function_key_script_name=ScriptFunctionKey
  #This property value has become obsolete. No need to set its value from version 3.0.2.0 onwards.
    tesseract_version_3=C:\\Ephesoft\\Application/native/Tesseract-OCR
    field_value_change_script_name=ScriptFieldValueChange
    row_count=50
    zip_switch=true
    update_interval=5
    preloaded_image_count=3
  #0 for html cleaner(default)
  #any other value for Tidy parser (Support for EE 2.4 or earlier)
    html_parser=0
    custom_reports_url=http://www.ephesoft.com
    custom_reports_title=Ephesoft
    custom_reports_pop_up_xdimension=500
    custom_reports_pop_up_ydimension=500
    enable.restart_all_batch=false
    batchlist.table_row_count=15
    zoom_count=1
    create_batch_instance_backup=off
    plugin_upload_folder_path=C:\\Ephesoft\\SharedFolders/plugin-upload-folder
    user.super_admin=admin
    help_url=http://www.ephesoft.com/wiki/index.php?title=Special:Search
    batch_copy_timeout=3600
  # 1-RoundRobin (Default)
  # 0-BatchInstancePriority
    workflow.batchPickingAlgo=0
  # false for review panel as closed on Review-Validation screen for batches with READY_FOR_VALIDATION state
  # true for review panel as open by default on Review-Validation screen for batches with READY_FOR_VALIDATION state
    default_review_panel_open=false
  # 0 for limited/metered user
  # 1 for shared user(not implemented)
  # 2 for dedicated
    user_type=2
  # file size limit in KB.
    upload_batch_limit=1024
  # Set this property as true if super admin roles has been updated
    update_super_admin_group=false

If there are multiple users with the same name (as defined by CN), it could cause ambiguity when attempting to authenticate an account. To resolve this issue, see Resolving ambiguous user accounts.

Authorization of Transact URLs

Transact has several URLs, which include the following:

  • BatchList.html

  • BatchClassManagement.html

  • BatchInstanceManagement.html

  • ReviewValidate.html

  • WebScanner.html

  • Reporting.html

Administrators can authorize access to these URLs using group/role names defined in Tomcat, LDAP and MS Active Directory. Web.xml can be found here: <Transact Folder>\WEB_INF\web.xml

By default, all URLs are authorized by all groups by using * in the auth-constrain node:

<auth-constraint>
			<role-name>*</role-name>
</auth-constraint>

To authorize a specific security role or LDAP container, modify the role-name node. This example assigns the admin role to BatchInstanceManagement.html through the <auth-constraint> element.

<security-constraint>
         <web-resource-collection>
               <web-resource-name>batch instance management</web-resource-name>
               <url-pattern>/BatchInstanceManagement.html</url-pattern>
               <http-method>GET</http-method>
               <http-method>POST</http-method>
         </web-resource-collection>
         <auth-constraint>
               <role-name>admin</role-name>
         </auth-constraint>
 </security-constraint>

To allow multiple roles, add <role-name> elements in <auth-constraint> as shown below.

<security-constraint>
         <web-resource-collection>
               <web-resource-name>batch instance management</web-resource-name>
               <url-pattern>/BatchInstanceManagement.html</url-pattern>
               <http-method>GET</http-method>
               <http-method>POST</http-method>
         </web-resource-collection>
         <auth-constraint>
               <role-name>role2</role-name>
               <role-name>admin</role-name>
         </auth-constraint>
 </security-constraint>

The <security-role> tag need not to be modified. It can remain as a single entry (*) allowing all groups. It may give warnings if the <security-role> tag is not mapped to groups individually. These warnings can be eliminated by providing mapping for roles in the <security-role> tag.

<security-role>
            <role-name>*</role-name>
 </security-role>