跨平台版本
Version 24.3.9111
Version 24.3.9111
跨平台版本
知行之桥的跨平台版本与基于 Jetty 构建的 web 服务器绑定在一起,因此无需任何外部服务器配置即可运行。此外,该安装包括一个. WAR文件,可以部署到任何Java servlet容器,如 Apache Tomcat, Eclipse Jetty,或者IBM WebSphere。
内置 Jetty 服务器要求服务器上安装 JDK 11 或更高版本。部署到外部 Java servlet 则需要 Servlet 3.0 (Jetty 8+、Tomcat 7+、JBoss EAP 6/7、Glassfish 3、WebLogic 12+、WebSphere 8+等)。
注意:无论如何部署知行之桥,运行应用程序的用户都必须能够读写 AppDirectory
中的文件和文件夹。Java Edition 安装程序中包含的服务安装程序将使用 cdataarc 作为该用户。
如果该应用程序以前是以其他用户身份运行的,并且你希望恢复 cdataarc 用户运行该应用程序所需的权限,则命令类似于:
sudo chown -R cdataarc:cdataarc /opt/arc
Windows
在 Windows 中,知行之桥默认安装为服务。 要访问该应用程序,必须首先确保该服务正在运行。 服务运行后,可以通过打开网络浏览器并在 URL 字段中输入 http://localhost:8080/ 来访问知行之桥管理控制台。
还可以通过 java
命令在没有服务的情况下运行应用程序。我们建议使用服务,但此方法对于某些配置可能很有用。
启动和停止服务
可以通过以下任一方式启动和停止该服务:
开始菜单
知行之桥安装程序创建开始菜单快捷方式,使可以轻松使用该应用程序。 要访问这些快捷方式,请打开 开始 菜单并展开 知行之桥 文件夹。 这些快捷键可用:
-
启动 知行之桥 管理控制台:在默认 Web 浏览器中打开 Web 浏览器窗口,访问管理控制台 URL http://localhost:8080/。 如果服务未运行,Web 浏览器将返回错误。
-
启动 知行之桥:启动知行之桥服务。 默认情况下,此服务在 Windows 启动时运行,因此无需每次运行应用程序时都运行此命令。
-
停止 知行之桥:停止知行之桥服务。 当升级知行之桥 时,必须执行此操作。
服务管理控制台
要打开服务管理控制台,请打开开始菜单并键入服务。 选择出现的 服务 应用程序。
向下滚动到名为 知行之桥 的服务。 如果该服务正在运行,状态列显示正在运行。 右键单击该服务可访问“启动”、“停止”和“重新启动”选项。
命令提示符
高级用户可以使用 Windows 命令提示符向服务手动发出命令。 打开命令提示符并将目录更改为安装文件夹(默认情况下为“C:\Program Files\CData\CData Arc”)。
注意:还可以使用 Microsoft PowerShell 窗口发出这些命令,但语法略有不同。 如果使用 PowerShell,请相应地修改命令。
要启动知行之桥服务,请发出以下命令:
arc.exe -start
使用以下命令重新启动或停止服务:
arc.exe --restart --ServiceName "知行之桥"
arc.exe --stop --ServiceName "知行之桥"
在没有服务的情况下启动
要运行知行之桥而不启动服务,请在安装文件夹中打开命令提示符。 发出以下命令来启动应用程序:
java -jar arc.jar
Linux
将 知行之桥 安装到选择的位置 后,可以将 知行之桥 作为服务运行或运行 手动申请。 如果将 知行之桥 用于关键应用程序,则我们建议使用服务。
将 知行之桥 作为服务运行
将 知行之桥 作为服务运行使应用程序能够独立于任何用户进程运行,并在重新启动时自动重新启动。 这是关键应用的首选方法。
我们建议创建一个守护进程来管理 Linux 上的 知行之桥 应用程序。 安装包中包含的脚本可以自动执行此操作。 如果需要,还可以手动创建守护程序。
配置 知行之桥 守护进程的最安全方法是运行安装包中包含的脚本,前提是系统使用 systemd 守护进程管理器:
bash ./service.sh
该脚本创建一个名为 arc.service
的守护进程。 然后可以使用 systemctl
来管理守护进程:
systemctl enable arc
systemctl start arc
运行独立应用程序
要启动知行之桥而不创建服务,请使用终端打开安装目录中的 arc.jar 文件,如下所示:
java -jar arc.jar
配置嵌入式 Jetty 服务器
知行之桥 经过预先配置,可在任何环境中立即工作。 但是,可以通过在 知行之桥 安装目录(对于 Windows, 默认为 C:\Program Files\CData\CData Arc
)。
生成 arc.properties 文件
在对嵌入式 Jetty 服务器进行任何自定义之前,必须创建 arc.properties 文件。 在arc.jar所在的安装目录下执行以下命令:
java -jar arc.jar -GenerateProperties
这将在安装目录中创建 arc.properties
文件。 该文件包含可以修改为更改端口或启用 TLS/SSL的参数。
注意:生成此文件后,升级到 知行之桥 不会覆盖它。
更改端口
要配置内置服务器侦听的端口:
-
在
InstallationDirectory
中找到arc.properties
文件,在文本编辑器中打开。 -
找到有
cdata.http.port
的一行:cdata.http.port=8080
-
将这里的值改为需要的值。
启用TLS/SSL
启用 TLS/SSL 连接 (HTTPS) 还涉及修改安装目录中的 arc.properties
文件:
-
设置
cdata.tls.keyStoreType
属性来制定 keystore 的类型。可用的值为:jks, pkcs12, 和 jceks。 -
设置
cdata.tls.keyStorePath
属性来指定 keystore 的路径。注意,可以用 ${cdata.home} 来代表安装目录。 -
设置
cdata.tls.keyStorePassword
属性来指定 keystore 的密码。 -
设置
cdata.tls.port
属性来指定服务器将监听的端口。 -
可选。设置
cdata.http.port
为空值以关闭 非 TLS/SSL 连接。
最终的结果大概类似于下面这个样子:
;; HTTP
cdata.http.port=
;; TLS
cdata.tls.port=8443
cdata.tls.keyStoreType=PKCS12
cdata.tls.keyStorePath=${cdata.home}/mycertificate.pfx
cdata.tls.keyStorePassword=mypassword
注意:如果你在知行之桥中配置外部的私钥文件,请务必将证书的所有者更改为用于运行知行之桥的服务帐户 (如:cdataarc:cdataarc)。
生成 Jetty XML 文件
在大多数部署中,arc.properties
文件为嵌入式 Jetty 服务器提供了全套必要的配置选项。 但是,如果需要更复杂的部署,则可以生成一个 Jetty XML 文件作为进一步修改的起点。 要生成该文件,请在 arc.jar 所在的 知行之桥 安装目录中运行以下命令:
java -jar arc.jar -GenerateXML
命令完成后,arc.xml 配置文件将出现在 webapp
文件夹中。 只要它保留在该文件夹中,就可以用来启动应用程序。
启动和停止服务
如果 service.sh
脚本已用于设置知行之桥服务,请参考下面的“作为服务运行”部分。 否则,可参考“在进程中运行”部分。
在进程中运行
内置 Jetty 服务器通过执行从安装过程中下载的应用程序中提取的“arc.jar”文件来启动。 标准 Java 语法可用于执行此文件并启动服务器:
java -jar arc.jar
要停止服务,只需向此命令传递一个 -stop
附加参数:
java -jar arc.jar -stop
作为服务运行
知行之桥可以使用标准的系统服务命令来操作服务,引用 &prod.objname:tolower;
作为服务的名称。
启动服务:
systemctl start arc
停止服务:
systemctl stop arc
重启服务:
systemctl restart arc
配置 LDAP 认证
如果您使用 嵌入式 Jetty 服务器,则以下步骤将配置知行之桥使用 LDAP 对用户进行身份验证。
配置 arc.properties
如果它尚不存在,请使用以下命令生成默认 arc.properties文件:
java -jar arc.jar -GenerateProperties
以下设置指示嵌入式 Jetty 服务器使用 LDAP 进行身份验证:
cdata.loginService.ldap.enabled=true
您可能希望使用和其他部分相同的方式在文件内部将其分段:
;; LDAP
cdata.loginService.ldap.enabled=true
插入特定 LDAP 服务器所需的任何其他设置,以及知行之桥所需的最低设置。知行之桥至少需要满足以下条件:
cdata.loginService.ldap.hostname
cdata.loginService.ldap.bindDn
cdata.loginService.ldap.bindPassword
可用设置的完整列表如下:
cdata.loginService.ldap.userIdAttribute
cdata.loginService.ldap.debug
cdata.loginService.ldap.forceBindingLogin
cdata.loginService.ldap.bindPassword
cdata.loginService.ldap.roleMemberAttribute
cdata.loginService.ldap.useLdaps
cdata.loginService.ldap.roleBaseDn
cdata.loginService.ldap.bindDn
cdata.loginService.ldap.userPasswordAttribute
cdata.loginService.ldap.hostname
cdata.loginService.ldap.userRdnAttribute
cdata.loginService.ldap.roleObjectClass
cdata.loginService.ldap.port
cdata.loginService.ldap.authenticationMethod
cdata.loginService.ldap.userBaseDn
cdata.loginService.ldap.contextFactory
cdata.loginService.ldap.userObjectClass
cdata.loginService.ldap.roleNameAttribute
以下是 arc.properties
中一个完整的 LDAP 部分的示例:
;; LDAP
cdata.loginService.ldap.enabled=true
cdata.loginService.ldap.bindDn="CN=ldapuser,DC=example,DC=org"
cdata.loginService.ldap.hostname="127.0.0.1"
cdata.loginService.ldap.bindPassword="Adminpassword1"
cdata.loginService.ldap.port="1389"
cdata.loginService.ldap.debug=true
cdata.loginService.ldap.authenticationMethod="simple"
cdata.loginService.ldap.userBaseDn="DC=example,DC=org"
cdata.loginService.ldap.userRdnAttribute="cn"
cdata.loginService.ldap.userPasswordAttribute="userPassword"
cdata.loginService.ldap.forceBindingLogin="true"
cdata.loginService.ldap.roleBaseDn="DC=example,DC=org"
cdata.loginService.ldap.roleNameAttribute="cn"
cdata.loginService.ldap.roleMemberAttribute="member"
cdata.loginService.ldap.useLdaps="false"
在知行之桥中创建 LDAP 用户
为了让用户通过 LDAP 服务器登录知行之桥,您必须将每个 LDAP 用户添加到知行之桥。这样,知行之桥就可以尝试使用在 LDAP 服务器上配置的用户登录。请按照以下步骤创建每个用户(有关管理用户的更多详细信息,请参阅 用户管理和角色):
- 启动知行之桥并以知行之桥管理员用户身份登录。
- 创建需要访问知行之桥的所有 LDAP 用户。单击导航栏中的齿轮图标并选择 用户。知行之桥用户名必须与 LDAP 用户名相同。例如,如果您的 LDAP 用户名是
user01
和user02
,则您必须在知行之桥中使用相同的用户名。
添加所有用户后,您可以停止应用程序。
测试配置
在创建的 arc.properties
文件中添加必要的 LDAP 设置,将 LDAP 用户添加到知行之桥并确认其配置符合 LDAP 服务器的要求后,您就可以测试功能了。
使用 java -jar arc.jar
或启动知行之桥服务来启动知行之桥。当您看到登录界面时,尝试使用您的某个 LDAP 用户登录。输入 LDAP 服务器上的用户名和密码(必须与您在知行之桥的 用户 部分中输入的用户名相同)。
登录过程会根据知行之桥中配置的用户检查登录用户,然后根据 LDAP 服务器检查登录用户,以确保用户存在并允许访问应用程序。如果配置成功,您将以该用户身份登录应用程序。
使用 Apache Tomcat
部署 WAR 文件
将 WAR 文件部署到 Tomcat 有多种选择。
-
将 WAR 文件复制到
webapps
文件夹中。 -
在 Tomcat 的管理控制台内部署 WAR 文件。 Tomcat 文档更详细地介绍了此方法。
WAR 文件可能会超过 Tomcat 中允许文件上传的默认最大大小。 为了解决部署期间的错误,可以编辑管理器应用程序的 WEB.XML 文件以允许使用更大的文件。 根据服务器的 tomcat 配置,此文件可能位于 /usr/share/tomcat7-admin/manager/WEB-INF
或其他类似目录中。 在此文件中,你可以更改允许的最大文件大小的字节大小。 例如,要允许部署 200MB WAR 文件,请编辑以下值以更改允许的最大文件大小:
<multipart-config>
<!-- 最大 200 MB -->
<max-file-size>209715200</max-file-size>
<max-request-size>209715200</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
JAAS(Java Authentication and Service) 配置
要使知行之桥能够在应用程序内动态管理用户,您必须按照以下指南中的说明配置 JAAS。本指南使用 arc.xml
来控制 Tomcat 的配置。知行软件建议您使用 arc.xml
而不是 server.xml
来控制 Tomcat 配置。我们还建议您将任何应用程序上下文覆盖(例如 APP_DIRECTORY
或 APP_DB
)重新定位到定义 JAASRealm 模块的 arc.xml
。
注意:这是使用知行之桥设置任何 Tomcat 所需的第一步。
创建登录模块(Login Module)
在此处创建名为 jaas.config
的 JAAS 配置文件: $CATALINA_BASE/conf/jaas.config
。
在 jaas.config
中添加如下内容以使用标准身份验证:
Arc {
arc.LoginModule required;
};
注意:如果您想使用 LDAP,请继续进行标准登录模块设置。完成后请按照使用 LDAP 验证用户 中的步骤进行操作。
创建(或修改)JAASRealm 模块
-
检查
$CATALINA_BASE/conf/Catalina/localhost/
中是否有arc.xml
文件。如果有,请编辑arc.xml
并添加下面的 XML 上下文块。如果该路径中不存在arc.xml
,则需要创建它,然后添加下面的 XML 上下文块。这应该是arc.xml
中唯一的内容。<Context> <Realm className="org.apache.catalina.realm.JAASRealm" appName="Arc" userClassNames="arc.SimplePrincipal" roleClassNames="arc.GroupPrincipal" /> </Context>
注意:根据 Tomcat 实例的配置方式,此路径可能略有不同。在此示例中,
Catalina
指的是引擎名称,而localhost
是server.xml
中定义的主机名。 -
通过将
copyXML
属性设置为 true,更新 Tomcat 服务器的server.xml
配置文件中的<Host/>
元素,如下所示:<Host name="localhost" appBase="webapps" unpackWARS="true" autoDeploy="true" copyXML="true"> ... </Host>
注意: 如果
server.xml
中存在特定于应用程序的上下文,则它优先于arc.xml
。知行软件建议在任何上下文覆盖中使用arc.xml
而不是server.xml
。例如:<Context path="Arc"> ... </Context>
使登录模块可见
JVM 必须指向登录模块 (jaas.config),以便配置可见性。将 JVM 上的 java.security.auth.login.config
系统属性设置为 jaas.config
文件的路径。这可以通过附加到 $CATALINA_BASE/conf/catalina.properties
文件来完成,如下所示:
java.security.auth.login.config=${catalina.base}/conf/jaas.config
使用 LDAP 验证用户
在配置知行之桥以将 LDAP 与 Tomcat 结合使用之前,请按照 配置 Java 身份验证和服务 (JAAS) 说明操作,以便创建管理员用户,这是将 LDAP 用户添加到知行之桥之前所必需的。配置登录模块并成功以管理员用户身份登录知行之桥后,请按照以下步骤配置 LDAP 支持。
-
以管理员用户身份登录知行之桥。要创建需要访问知行之桥的所有 LDAP 用户,请单击导航栏上的 设置 齿轮图标,然后选择 用户。知行之桥用户名必须与 LDAP 用户名相同。例如,如果您的 LDAP 用户名是
user01
和user02
,则您必须在知行之桥中使用相同的用户名。 -
修改您在 创建登录模块 中创建的
$CATALINA_BASE/conf/jaas.config
文件,使其与您的 LDAP 服务器兼容。您必须向jaas.config
添加一些配置选项。a. 通过添加
com.sun.security.auth.module.LdapLoginModule REQUIRED
确保 LDAP 登录模块是必需的。您还需要将之前创建的登录模块设为可选。为此,请设置arc.LoginModule optional;
。b. 添加所需的 LDAP 模块配置选项。至少需要以下选项:
userProvider
、authIdentity
、userFilter
和useSSL
。您为这些选项提供的值特定于您的 LDAP 服务器和要求:请咨询您的服务器管理员或 LDAP 文档以确定这些值。下面是一个您可以预期的示例:请注意,arc.loginModule
设置为optional
,而com.sun.security.auth.module.LdapLoginModule
设置为REQUIRED
。Arc { com.sun.security.auth.module.LdapLoginModule REQUIRED userProvider="ldap://openldap:1389/ou=users,dc=example,dc=org" authIdentity="CN={USERNAME},OU=users,DC=example,DC=org" userFilter="(cn={USERNAME})" useSSL=false; debug=false; arc.LoginModuleoptional; };
注意:如果任何值包含特殊令牌
{USERNAME}
,则该令牌将在登录时替换为提供的用户名值。
完成这些步骤后,您的 LDAP 用户就可以登录知行之桥。
配置数据目录权限
允许运行 Java servlet 容器的进程的用户对数据目录进行读/写访问:
-
Windows:
C:\ProgramData\CData\Arc\
-
Linux:
~/cdata/arc/
重新启动 Tomcat 服务器以使更改生效。 你现在可以登录到该应用程序。
在 WebSphere 中进行配置
要在 Websphere 中配置知行之桥,请按照以下步骤操作。
在 WebSphere 中创建知行之桥应用程序
注意:本指南介绍了在 WebSphere 中安装知行之桥的基本方法。如果您需要更多自定义 Websphere 安装,请咨询您的内部团队,了解可能需要包含哪些其他设置或选项。
-
在 WebSphere 中,导航至 Applications > New Application > New Enterprise Application。
- 上传 arc.war
- 选择 Fast path 并单击 Next。
-
打开 Install New Application 页面,左侧有六个步骤。
- Select installation options:(可选)将应用程序名称从
arc_war
更改为所需的应用程序名称。 - Map modules to servers:将 Arc 模块映射到所需的服务器。
- Map virtual hosts for Web modules:设置要用于 Arc 模块的虚拟主机。
- Map context roots for Web modules:(可选)定义应用程序在服务器上可访问的路径。默认值为
/
。 - Metadata for modules:(可选)选择是否启用 metadata-complete 属性。
- Summary:查看设置摘要。如果满意,请单击 Finish。
- Select installation options:(可选)将应用程序名称从
配置 WebSphere类加载器
为了使 WebSphere 能够正确加载应用程序资源,需要执行以下步骤:
- 在 WebSphere 中,导航至:Application > Application Types > WebSphere enterprise applications。
- 选择你为 知行之桥 创建的应用程序。。
- 在 Detail Properties 部分下,选择 Class loading and update detection。
- 选择 Classes loaded with local class loader first (parent last)。
- 选择 Single class loader for application。
- 点击 OK,然后是 Save。
JAAS(Java Authentication and Service)配置
为了允许知行之桥在 WebSphere Application Server 中动态管理用户,需要以下操作:
-
导航至 Security > Global security > Enable application security,并选中 Enable application security 复选框。这将启用应用程序 (知行之桥) 级安全,这是使用您在以下步骤中创建的知行之桥登录模块所必需的。
- 将 arc.LoginModule 添加到系统登录,如下所示:
- 导航至 Security > Global security > Java Authentication and Authorization Service > System logins > WEB_INBOUND。
- 单击 New 添加名为
arc.LoginModule
的新条目。 - 选中 Use login module proxy 复选框。
- 在 Authentication strategy 下选择 OPTIONAL。
- 在 Custom properties 下添加 isWebSphere 并将其设置为 true。
- 单击OK。然后单击Save。
- 使用 WEB_INBOUND 页面上的set order按钮更改模块的顺序,以便 arc.LoginModule 的模块顺序为 1。
- 创建组:
- 导航至:Users and Groups > Manage Groups > Create。
- 创建组: cdata_admin, cdata_standard, cdata_support。
- 将组映射到角色:
- 导航至:Applications > Application Types > WebSphere enterprise applications > 你的知行之桥应用程序名_war > Security role to user/group mapping。
- 将 cdata_admin 组映射到 cdata_admin 角色。
- 将 cdata_standard 组映射到 cdata_standard 角色。
- 将 cdata_support 组映射到 cdata_support 角色。
- 将 All Authenticated in Application’s Realm 映射到 cdata_user 角色。
- 将
com.ibm.ws.webcontainer.AllowQueryParamWithNoEqual
属性设置为true
:- 进入到 Server > Server Types > Web Sphere Application Servers, 选择托管知行之桥的服务器。
- 选择 Container Settings > Web Container Settings > Web Container。
- 选择 Additional Properties > Custom Properties。
- 添加新属性:
com.ibm.ws.webcontainer.AllowQueryParamWithNoEqual
。 - 将值设置为
true
。
- 重启 WebSphere。
现在,知行之桥已可访问,并可与知行之桥登录模块一起使用。这可在应用程序级别安全地管理用户。要配置 LDAP,请阅读以下部分。
使用 LDAP 验证用户
在配置知行之桥以将 LDAP 与 WebSphere 结合使用之前,请按照配置 Java 身份验证和服务 (JAAS) 说明创建本地管理员用户。在将 LDAP 用户添加到知行之桥之前,必须先拥有该用户。配置登录模块并能以管理员用户身份成功登录知行之桥后,请按照以下步骤配置 LDAP 支持。
-
以本地管理员用户身份登录知行之桥。要在知行之桥中创建 LDAP 用户,请单击导航栏中的设置齿轮图标,然后选择 用户。知行之桥用户名必须与 LDAP 服务器中的用户名相同。例如,如果您的 LDAP 用户名是
user01
和user02
,则您必须在知行之桥中使用相同的用户名。 -
将 LDAP 存储库添加到 WebSphere。
- 在 WebSphere 中,导航到 Security > Global security。在 User account repository 部分中,确保在 Federated repositories 中选择了 Available realm definitions。单击 Configure。
- 这将打开 Federated repositories 页面。找到 Repositories in the realm 表并单击 Add repositories。
- 在下一页上,单击 New repository 并选择 LDAP repository。
- 在打开的配置界面上,输入有关 LDAP 服务器的详细信息。必填字段标有星号,但您必须查阅 LDAP 服务器文档以确定需要输入的任何其他必要设置。基本必需设置包括:
- Directory type
- Primary host name
- Port
- Bind distinguished name (DN)
- Bind password
- 输入设置值后,单击 OK。
- 在打开的 Repository reference 界面上,输入 LDAP 服务器的可分辨基本名称,然后单击 OK。例如:
- 单击表中的 LDAP 存储库标识符,测试您的 LDAP 配置。在以下示例中,它是 LDAP1:
- 出现新 LDAP 存储库的常规属性。在 Related Items 下找到底部附近的 LDAP Test Query 按钮。
- 输入身份验证详细信息,根据需要添加搜索过滤器,然后单击 Test Query。如果查询成功,您的搜索结果将从 LDAP 服务器返回。如果遇到错误,请查阅 WebSphere 文档或 LDAP 服务器的文档。
- 保存更改并重新启动 WebSphere 以完成该过程。成功配置后,登录知行之桥的用户将通过 LDAP 进行身份验证。
- 在 WebSphere 中,导航到 Security > Global security。在 User account repository 部分中,确保在 Federated repositories 中选择了 Available realm definitions。单击 Configure。
调试设置
如果您在 LDAP 或 arc.LoginModule 方面遇到配置问题,请按照以下步骤启用 WebSphere 日志的调试日志记录。
arc.LoginModule
-
导航到 Security > Global security > Java Authentication 和 Authorization Service > System logins > WEB_INBOUND > arc.LoginModule。
- 在 Custom Properties 下添加 debug 并将值设置为 true。
-
导航到 Troubleshooting > Logs and trace > 你的知行之桥服务 > Change log detail levels > Runtime。
- 在文本框中输入以下内容:
arc.*=all: arc.LoginModule=all
- 选中Save runtime changes to configuration as well复选框。
- 单击OK保存更改。重新启动 WebSphere。
- 在文本框中输入以下内容:
ltpaLoginModule 和 wsMapDefaultInboundLoginModule
-
导航到 Security > Global security > Java Authentication and Authorization Service > System logins > WEB_INBOUND,为每个模块添加一个 debug 自定义属性,并将其值设置为 true。
-
导航到 Troubleshooting > Logs and trace > 你的知行之桥服务 > Change log detail levels > Runtime 并添加以下
com.ibm.ws.security.server.lm.ltpaLoginModule=all: com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule=all
。- 选中 Save runtime changes to configuration as well 复选框。
- 单击 OK 保存更改。重新启动 WebSphere。
配置数据目录权限
允许运行用户对数据目录进行读/写访问:
-
Windows:
C:\ProgramData\CData\Arc\
-
Linux:
~/cdata/arc/
重新启动 WebSphere 服务器以使更改生效。 现在可以登录该应用程序。
在 Jetty 中进行配置
尽管 知行之桥 附带嵌入式 Jetty Web 服务器,但也可以通过外部 Jetty 设置来使用该应用程序。
部署 WAR 文件和 arc.xml
将 arc.war 复制到 ${JETTY_BASE}
的 webapps
文件夹中。同时将 arc.xml 文件放在同一个 ${JETTY_BASE}
文件夹中。如果您没有 arc.xml,则需要创建它。对于 Jetty 的标准配置,arc.xml 文件至少需要包含以下内容:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="arcServer" class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/</Set>
<Set name="war">/var/lib/jetty/webapps/arc.war</Set>
<Set name="securityHandler">
<New class="org.eclipse.jetty.security.ConstraintSecurityHandler">
<Set name="loginService">
<New class="org.eclipse.jetty.jaas.JAASLoginService">
<!-- 此名称与 web.xml 中的 **login-config > realm-name** 相同。 -->
<Set name="name">ArcRealm</Set>
<!-- LoginModuleName 必须与您的 LoginModule 名称匹配,如您的登录模块配置文件中声明的那样。-->
<Set name="loginModuleName">Arc</Set>
<!-- 设置自定义角色的主体类名。-->
<Set name="roleClassNames">
<Array type="java.lang.String">
<Item>arc.GroupPrincipal</Item>
</Array>
</Set>
</New>
</Set>
</New>
</Set>
</Configure>
配置 JAAS(Java Authentication and Service )
需要以下步骤来配置 JAAS 并允许知行之桥管理应用程序用户。
添加 JAAS 模块
运行以下命令安装 JAAS 模块:
java -jar ${JETTY_HOME}/start.jar --add-module=jaas
创建知行之桥登录模块
创建一个名为 login.conf 的登录配置文件,并将其放在以下路径:{JETTY_BASE}/etc/login.conf
。将以下内容放入 login.conf 文件中:
文件内容如下:
Arc {
arc.LoginModule required debug=true;
};
更新安全处理程序
安全处理程序配置位于 arc.xml 配置文件中。如果您使用 部署 WAR 文件和 arc.xml 中的内容创建了 arc.xml 文件,则可以跳过此步骤,因为此更改已存在于该内容中。否则,请按如下方式修改 securityHandler
块:
<Set name="securityHandler">
<New class="org.eclipse.jetty.security.ConstraintSecurityHandler">
<Set name="loginService">
<New class="org.eclipse.jetty.jaas.JAASLoginService">
<!-- 此名称与 web.xml 中的 **login-config > realm-name** 相同。 -->
<Set name="name">ArcRealm</Set>
<!-- LoginModuleName 必须与您的 LoginModule 名称匹配,如您的登录模块配置文件中声明的那样。-->
<Set name="loginModuleName">Arc</Set>
<!-- 设置自定义角色的主体类名。-->
<Set name="roleClassNames">
<Array type="java.lang.String">
<Item>arc.GroupPrincipal</Item>
</Array>
</Set>
</New>
</Set>
</New>
</Set>
Jetty 中的 LDAP
为了在 Jetty 中运行知行之桥时配置 LDAP,您需要使用标准知行之桥登录模块配置知行之桥以在 Jetty 中运行。一旦知行之桥使用知行之桥登录模块在 Jetty 中启动并运行,请按照以下步骤配置 Jetty 以使用 LDAP 进行用户身份验证。
- 将 LDAP 用户添加到知行之桥。
- 以管理员用户身份登录以将 LDAP 用户添加到知行之桥。要在知行之桥中创建 LDAP 用户,请单击导航栏中的设置齿轮图标并选择 用户。知行之桥用户名必须与 LDAP 服务器中的用户名相同。例如,如果您的 LDAP 用户名是
user01
和user02
,则您必须在知行之桥中使用相同的用户名。 - 完成后,停止知行之桥。
- 以管理员用户身份登录以将 LDAP 用户添加到知行之桥。要在知行之桥中创建 LDAP 用户,请单击导航栏中的设置齿轮图标并选择 用户。知行之桥用户名必须与 LDAP 服务器中的用户名相同。例如,如果您的 LDAP 用户名是
- 在 login.conf 中为 Jetty LDAP 登录模块创建 JAAS 配置。
- 打开位于
${JETTY_BASE}/etc/login.conf
的 login.conf 文件,并为 Jetty LDAP 模块添加 JAAS 配置。有许多配置设置可用,但 JAAS 的配置取决于您的特定要求和 LDAP 服务器配置。在 Jetty 文档 中查找可用的 JAAS 配置设置列表,以及以下内容:debug useLdaps contextFactory hostname port bindDn bindPassword authenticationMethod forceBindingLogin userBaseDn userRdnAttribute userIdAttribute userPasswordAttribute userObjectClass roleBaseDn roleNameAttribute roleMemberAttribute roleObjectClass
- 以下是使用 LDAP 服务器配置的 login.conf 文件的示例。请记住,所需的设置和值取决于您的特定要求和 LDAP 服务器配置。要确定设置所需的设置和值,请咨询您的 LDAP 管理员或参阅 LDAP 服务器的文档。
Arc { arc.LoginModule optional debug=true; org.eclipse.jetty.jaas.spi.LdapLoginModule optional debug="true" contextFactory="com.sun.jndi.ldap.LdapCtxFactory" hostname="openldap" port="1389" bindDn="CN=ldapuser,DC=example,DC=org" bindPassword="Adminpassword1" authenticationMethod="simple" forceBindingLogin="true" userBaseDn="OU=users,DC=example,DC=org" userRdnAttribute="cn" userPasswordAttribute="userPassword" roleBaseDn="DC=example,DC=org" roleNameAttribute="cn" roleMemberAttribute="member" useLdaps="false"; };
请注意,arc.LoginModule
和org.eclipse.jetty.jaas.spi.LdapLoginModule
均设置为可选。这允许在尝试验证用户时使用两个登录模块。如果一个登录模块无法验证用户,则登录将回退到第二个模块。如果两个登录模块都无法验证用户,则登录将完全失败。 - 使用必要的 LDAP 配置更新 login.conf 后,重新启动知行之桥。如果配置正确,您的 LDAP 用户现在可以登录知行之桥。
- 打开位于
配置数据目录权限
允许运行 Java servlet 容器的进程的用户对数据目录进行读/写访问:
-
Windows:
C:\ProgramData\CData\Arc\
-
Linux:
~/cdata/arc/
重新启动服务器并登录应用程序。
用户管理
首次启动时,知行之桥将提示创建具有用户名/密码的用户。 创建第一个用户后,可以通过应用程序的 系统配置 页面的 Users 选项添加、删除和管理用户。
将知行之桥部署到外部 Java servlet 时(即不使用应用程序附带的内置服务器时),需要配置 JAAS 以允许知行之桥管理用户。 以下节点详细介绍了各个特定外部 servlet 的 JAAS 配置步骤。
查找并配置应用程序目录
知行之桥的_应用程序目录
保存应用程序使用的所有数据:配置数据、应用程序数据、日志数据、证书等。应用程序目录
_的默认位置取决于知行之桥是通过内置 web 服务器还是外部 Java servlet 容器托管。
对于内置 web 服务器,_应用程序目录
_与安装目录相同,默认情况下安装目录如下:
/opt/arc
当在外部 Java servlet 容器中托管知行之桥时,_应用程序目录
_相对于运行服务器的用户的主目录:
~/arc
其中 ‘~’ 解析为运行托管应用程序的服务器的用户的主目录。
配置_应用程序目录
_文件夹,在多种情况下都很有用:
-
归并多个知行之桥实例
-
对应用程序数据使用共享网络驱动器
-
在访问相同文件夹的其它系统中嵌入知行之桥
更改_应用程序目录
将移动应用程序的数据文件,但不会移动其它应用程序资源 .exe,.jar 等等。这些资源保存在安装目录中,安装目录可能与应用程序目录
相同,但如果应用程序目录
_发生变化,安装目录也不会发生变化。
内置 Java 服务器
当将跨平台版本与内置 Jetty 服务器一起使用时,会在 arc.properties 中文件中配置 ApplicationDirectory
。在此服务器配置文件中,你必须将 cdata.app.directory 属性设置为所需目录的路径。以下示例演示了将数据目录设置为已装载驱动器上的共享文件夹时的情况:
cdata.app.directory=/mnt/shared/arc
如果知行之桥可以找到 cdata.app.directory 路径,并且具有在该路径读写的适当权限,它将在指定目录中创建数据文件夹。
外部 Java 服务器
将跨平台版本与外部 Java servlet(除了应用程序中包含的 Jetty 服务器之外的任何服务器)一起使用时,配置应用程序数据目录的细节取决于所使用的特定 servlet。使用适合特定 servlet 的语法,必须将环境变量设置为所需目录的路径。
如果知行之桥找到 AppDirectory
路径,并具有在指定路径上读写的权限,它将在指定的目录中创建数据文件夹。
配置应用程序数据库
知行之桥的应用程序数据库存储了几个应用程序数据表,包括:
- 交易日志-应用程序处理的每笔交易的元数据
- 应用程序日志-应用程序级错误和事件
- 访问日志-对应用程序的网络端的请求
- 审计日志-用户对知行之桥配置的更改
默认情况下,知行之桥默认使用_应用程序目录
_中的 Derby 数据库为应用程序数据库,也可通过配置使用其它数据库,如 SQL Server, PostgreSQL 或 MySQL。
内置 Java 服务器
将跨平台版本与内置 Jetty 服务器一起使用时,应用程序数据库在 arc.properties 文件中进行配置。在此服务器配置文件中,必须将 cdata.app.db 属性设置为 Java 数据库连接(JDBC)连接字符串,该字符串包含所需数据库的适当连接参数。以下部分提供了各种服务器配置的示例连接字符串。 你可以如下所示以明文设置这些值,或者你可以 生成加密连接字符串 来代替使用。
MySQL
cdata.app.db=jdbc:cdata:mysql:server=MySQLServer;port=3306;database=mysql;user=MyUserName;password=MyPassword
PostgreSQL
cdata.app.db=jdbc:cdata:postgresql:server=localhost;port=5432;database=postgres;user=MyUserName;password=MyPassword;
SQL Server
cdata.app.db=jdbc:cdata:sql:server=localhost;database=sqlserver;user=MyUserName;password=MyPassword;
如果知行之桥可以与 cdata.app.db 连接字符串连接,那么它将使用该数据库作为应用程序数据库。
注意:为了减少使用 SQL Server 作为应用程序数据库时出现死锁的可能性,建议确保启用 READ_COMMITTED_SNAPSHOT。
生成加密的数据库连接字符串
知行之桥提供为你的应用程序数据库连接生成加密连接字符串的能力。你可以使用此加密连接字符串来指定应用程序数据库,而无需将你的登录凭据以明文形式存储在知行之桥配置文件中。 要生成加密的连接字符串,请在安装目录中发出以下命令,用引号中的示例字符串替换你的连接信息:
java -jar arc.jar -EncryptConnectionString "jdbc:cdata:mysql:Server=serverName;Port=1234;Database=databaseName;User=userName;Password=passwordSample"
发出命令后,命令窗口会打印加密字符串。 例如:
ENCRYPTEDA:5TWyjE0U4GBEVNkd51SqbMXaBwVGqj5uyMfTHt48y/F5l3sDPZynNnPMb/ppXzuFTzFPywA1/SSKUgLy9nAuvA7RAdZj7WsKI1xAgDMmEFNQ68/lHjFYZpS10sIaoUloyZVDkj4uLHTZ0SaMD5PPUA==
然后,你可以使用此加密字符串代替 cdata.app.db
的明文值,如 如上所示。
外部 Java 服务器
当将跨平台版本与外部 Java servlet(除了应用程序中包含的 Jetty 服务器之外的任何服务器)一起使用时,配置应用程序数据库的细节取决于所使用的特定 servlet。使用适合特定 servlet 的语法,在配置服务器时应该使用以下某个方法:
-
定义 JNDI 数据源,以包括目标数据库的连接属性。
-
将 APP_DB 环境变量设置为 JDBC 连接字符串。
如果知行之桥可以使用 JDNI 数据源或 APP_DB 连接字符串来连接数据库,它将使用该数据库作为应用程序数据库。
登录锁定
知行之桥会自动锁定输入错误密码次数过多的用户,以防止暴力破解攻击。 默认情况下,用户在 5 分钟内输入 6 次错误密码将被锁定 30 分钟。
可以通过编辑控制 Web 服务器的 XML 配置文件来修改此置。 以下是3个与登录锁定相关的设置:
-
LockoutFailedAttempts:触发锁定的错误密码尝试次数(设置为 0 表示禁用登录锁定)
-
LockoutMinutes:锁定时间(默认 30 分钟)
-
LockoutTimeCheckPeriod:失败重试次数重置为 0 的时间间隔(默认为 5 分钟)
内置 Jetty 服务器
在 arc.properties 中,可以通过将逗号分隔的 name:value 值添加到 initParameters
属性,来修改锁定设置,如下所示:
cdata.initParameters=LockoutFailedAttempts:0
Tomcat
在 Tomcat 的 ‘server.xml’ 中配置示例如下:
<Context>
<Parameter name="LockoutFailedAttempts" value="0" />
</Context>
常见问题及解决方案
本节列出了在 Java 环境中部署知行之桥时遇到的常见问题。 包括针对每个问题的推荐解决方案,如需更多帮助,请联系 support@kasoftware.cn。
问题
知行之桥无法启动,或启动了非预期的应用程序目录。
此错误可能表明知行之桥没有访问应用程序目录所需的权限(应用程序目录是一个文件夹,用于存储有关工作流配置、证书等的关键信息)。 可能的原因包括在将知行之桥 设置为服务之前以本地用户身份运行它; 在这种情况下,应用程序创建的某些资源可能是在本地用户下创建的,因此在作为服务运行时不可用。
解决方案
在 Linux 中,确保服务用户(或你要用于运行 知行之桥 的任何其他帐户)有权访问应用程序目录的最简单方法是使用 chown 命令。 例如,如果应用程序目录位于默认的 linux 位置并且知行之桥应该在服务用户下运行,以下命令可以解决该错误:
sudo chown -R cdataarc:cdataarc /opt/arc`