项目组自定义配置
项目组可以在启动智能表单后端应用时自行指定自定义的配置文件(即 application.yml
文件)。
项目组使用自定义配置
项目组需要使用自定义配置,来指定智能表单如何运行。智能表单推荐采用外置 application.yml
文件的方式来自定义应用程序配置。例如将智能表单 jar 包放在 /apps/intellisense-form/intellisense-form-1.11.0.jar
中,那么可以在同级目录中按照下面的方式添加配置:
/apps/intellisense-form
|__ intellisense-form-1.11.0.jar
|__ config // 项目组添加自定义配置的文件夹
|__ application.yml // 通用配置
|__ application-dev.yml // 开发环境配置
|__ application-test.yml // 测试环境配置
|__ application-prod.yml // 生产环境配置
需要在 /apps/intellisense-form
目录下启动项目,并通过 -Dspring.profile.active=dev
这样的方式指定采用哪个环境的配置文件。如下所示的命令行,是在测试环境启动智能表单项目:
# 进入到 /apps/intellisense-form 目录中
$ cd /apps/intellisense-form
# 在测试环境以后台的方式启动项目
$ nohup java -Dspring.profile.active=test -jar intellisense-form-1.11.0.jar > intellisense-form.log &
config/application.yml
可以在 config/application.yml
文件中添加通用配置,如:
- 特性启用、禁用
- 功能启用、禁用
- 数据库类型
- 扩展接口配置
- 加密秘钥配置
- 项目使用的端口号
推荐的配置如下:
# 自定义项目使用的端口号
server:
port: 8080
# 指定数据库类型
database:
type: mysql
# 禁用功能模块
sinoform:
# 禁用移动端功能(屏蔽掉移动端预览功能)
disable-mobile: true
# 禁用仪表盘功能
disable-dashboard: true
# 禁用表单应用
disable-application: false
# 禁用流程表单
disable-flow-form: false
# 禁用登录拦截功能
enable-auth-interceptor: false
# 关闭审计日志
audit:
log: false
# 启用特性:
# 设置密码加密秘钥
jasypt:
encryptor:
private-key-format: PEM
private-key-string: |-
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOB29b269iirOU
BekzuCwHEJpEau3WH18jBZh9lQM72oQj5LmH2OY+F+CWdfQ7yzTmnWlZTVhsOoJH
iQiIDK/lEp7Ucl3cHEnWSn5j+ygGM1ipe+KCSf3ROBAT0inW34tHmREyBFvBK+8W
pebRoh3vjryDwvHJq+MdF8nLu66JVULDyoKHscF2wif+nehLvKLripuihFz5VC/7
80sUt4vSLMQ1eCnMIkQr/hjLa22s/os4Oo/d8aZuPLZ41w5XYmRYaKj8CRyvQrX4
my9bjA4YOf0C2vWHMyCj2WmOOIGRF/PGtg1gyIos74ApbpYCnNCZa6hIAQQ+z3Kr
jK5rlRj3AgMBAAECggEAKIqN/yVbfaiNbbM8EFFNWJaLxKrF4jyKG/od55hK6pw1
JFr9px2nMNDCANl1Fc8Gudp/wHLX03Qv7qOoah0U/56KYoOetJFcdi5ycHobhhzU
dYVLLRgiOekuQLg6Q235mj0khRMWewyKH4rFwLqF6X3M2qChs21/Y1oq+0wTLDKg
Yf9cPnmutDbi+qsiRv7IqNsw8DjkQtpSyaSBZ1L0JHa4DjR1CDgkSaCG+OJ0PUxo
2tOd142dIRnN3KJG6WSwDSB1+6oZEky1Ucm3ORjtDRqGlOT0Wf2N9TLdSizpz7yu
fOsDVOdeggz2qPCX72gHErT9bFdSyZMLFuw95W7KAQKBgQDtUvUKAHZIHgKadowe
FxWQmMFgvdEVG8ztDrMsrgNal8xAME/UFqXqYhF+ekGr+Swcpshy+/iPl7zp4AOC
hfE+lOddl8mfSPLXVxiKRp6Uen1nN6P3E60qyXFH+zS/S5i8WP0Z5atL0OrA4zNj
oPDThHIZRWzOYti3zFdw0dNQvwKBgQDePgUl/ZYNFKrD0DTJ2IW6glov3icfS3PG
V4H2yCBFudgCVZWH9WIOy7v+0KiLE7rOWFg2tKTT2JW8RUpDzgkZVy/sLuL4Elic
mKLc7TjyMPYANRH3fA+mE4/IszWLtStmkCd6Jwz6M8VeSKDRMMJpLTEjoPndiyxQ
lvaTAa8NyQKBgGGaUY6oe/zS4s013hBt+/9442bvCfM9eL0x43yHoHd8oJLxi5M1
MU1AweMbUrDwjDTIXv3zJNmhVR92ctsWTQ4o3TJ/v3sT3FO1zTDpNETqT3LIzlVK
MVi8eitZY+scoxcrHgStkRJgPHvRtQvPX9wNx4MfK02CF5EXqAqNMPQvAoGBAMbh
iYnt3RHnpMmG0TawZTv62uprS2deBkVAmjVV8ktzfDLak+4PUakb+SiXYbzT8yAl
Pwv1rGtILvdEqqjzAIGE3IXnj4WgJVw928EJKSTTW9HjrChlBTwB1XItrYVQo34t
Eqblu19MZRtyszeBAvlMT+UqcXAo04drEU2M/DLBAoGBAIgCMkp9INWWLbeVYHpk
I0G2IkBg+tiBARZ966Jnp1X4tJcdFQoJdP1n1POn+xz/AfP990TTy4KO4yRi43RU
umVBylS8e+EDHGCEzh+xkk70zryNi13Tm+LZeEnwSTbozcmu55/5aDB/dBbQwl/J
FMrbdBB4KdCPelKWpdpQrFCz
-----END PRIVATE KEY-----
其他配置文件
config
目录下的其他配置文件是不同环境的自定义配置文件。在这些配置文件中指定与环境相关的配置,如:
- 数据库
- 数据库连接池
- MongoDB 连接
- 扩展接口的地址
推荐的测试环境配置:
spring:
data:
mongodb:
uri: mongodb://192.168.80.142/form
datasource:
url: jdbc:mysql://192.168.80.114:3306/form?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
username: form
password: form
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
# 指定测试数据库连接的连通性 SQL 语句
# MySQL:select 1
# Oracle:select 1 from dual
validation-query: select 1
# 指定单点登录服务链接
sso:
ssoService: http://121.30.232.162:18880/sso
sinoform:
# 指定工作流设计器服务链接
workflow-design-server-uri: 192.168.80.142:8080
# 指定工作流引擎链接
workflow-server-uri: 192.168.80.142:18003
# 指定统一授权服务链接
uias-server-uri: 192.168.80.142:18001
修改日志级别
可在配置文件中添加如下配置:
logging:
level:
com.sinosoft: debug
com.sinosoft
为代码包路径
数据库配置
智能表单需要添加使用关系型数据库存储填报的表单数据。需要在 application.yml
中添加数据库配置。
已经内置以下数据库:
- MySQL (8.0)
- Oracle
- 达梦
- 人大金仓
有需要支持其他数据库的,请联系智能表单小组成员。
示例配置如下:
- MySQL
- Oracle
- 达梦
- 人大金仓
## 指定数据库类型
database:
type: mysql
## 指定数据库连接信息
spring:
datasource:
url: jdbc:mysql://192.168.80.114:3306/form?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
username: form
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
validation-query: select 1
## 指定数据库类型
database:
type: oracle
## 指定数据库连接信息
spring:
datasource:
url: jdbc:oracle:thin:@192.168.80.142/sinoepuias
username: demo
password: demo
driver-class-name: oracle.jdbc.driver.OracleDriver
druid:
validation-query: select 1 from dual
## 指定数据库类型(达梦数据库的SQL语法基本兼容 Oracle,所以在这里配制成 Oracle 即可)
database:
type: oracle
## 指定数据库连接信息
spring:
datasource:
username: FORM
password: 1234567890
url: jdbc:dm://127.0.0.1:5236
driver-class-name: dm.jdbc.driver.DmDriver
druid:
validation-query: select 1 from dual
## 指定数据库类型(人大金仓数据库的SQL语法基本兼容 Oracle,所以在这里配制成 Oracle 即可)
database:
type: oracle
## 指定数据库连接信息
spring:
datasource:
username: FORM
password: 1234567890
url: jdbc:kingbase://127.0.0.1:54323/form
driver-class-name: com.kingbase.Driver
druid:
validation-query: select 1 from dual
目前智能表单内置的数据库 JDBC 驱动如下:
数据库 | 数据库 JDBC 驱动版本 |
---|---|
MySQL | 8.0.17 |
Oracle | 11.2.0.1.0 |
达梦 | 7.6.0.77 - Production |
人大金仓 | 8.2.0 |
mongodb 配置密码
有两种形式配置 mongodb 密码。在 application.yml
或者扩展的 application.yml
文件中,采用下面两种方式中的一种就可以:
- 方式一
- 方式二
spring:
data:
mongodb:
host: 192.168.90.142
port: 27017
database: form
# 用户名
username: admin
# 密码
password: 123456
spring:
data:
mongodb:
uri: mongodb://admin:123456@192.168.90.142:27017/form
特别注意,方式一中不能出现 uri
配置,否则会按照 uri
连接 mongodb 数据库。
加密配置中的密码
为了安全起见,建议生产部署时,在配置文件中采用加密的密码。智能表单采用了 jasypt-spring-boot 来支持加密的密码(在这里感谢天津局项目组的李利广同学提供的方案),下面的示例演示使用加密的 mongodb 密码:
spring:
data:
mongodb:
host: 192.168.90.142
port: 27017
database: form
# 用户名
username: admin
# 密码
password: ENC(Jx99cRIksSSFoT4c20hZ2YSsJMzr2meaJLgtrmfDIBKt9SZIrfLuI0mYBANeh/pXBDweiG91IqXRbZ9OMXswZEqDy0t+vqoENakogT1jUGjxo/VAaJvHIjzWOQZOGrmkBZTSXV3Ez2O/GbeF5WHD2OsdsZ3RrJGD9TFBSm9c//L/w5GmSgOQr0xmx+5+B6arN4n2xNHrrktcG36BtlPHNHoYttNg1fALZh2EyxPdERWU1yTXG+Udq26/IVpeICY0H5lQFDlQCqEel2KMQ5Xk+5lU0l8gX6eMTOOOZG6UHC6zspN8oJd79khQyhGOcoaB7V9vSlFZBregBL5SudysrA==)
在配置文件中采用 ENC(加密密文)
的形式包装加密后的密码文本,并代替之前的密码文本。
下面的章节会介绍加密使用的密钥对、生成随机的安全的密钥对的工具以及用来加密密码的工具。
加密使用的私钥和公钥
智能表单采用 RSA_PKCS1_PADDING
非对称加密算法加密密码。加密算法是 RSA
,填充方式是 PKCS1_PADDING
,填充位数是 256
。
对于非对称算法,需要使用公钥加密、私钥解密。智能表单中内置了可用于验证的私钥和公钥,但强烈建议各项目组重新生成公私钥(pem_pkcs8
格式,见后面章节介绍的生成密钥对工具)。生成公私钥之后,将私钥配置在 application.yml
中,如下所示:
jasypt:
encryptor:
private-key-format: PEM
private-key-string: |-
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOB29b269iirOU
BekzuCwHEJpEau3WH18jBZh9lQM72oQj5LmH2OY+F+CWdfQ7yzTmnWlZTVhsOoJH
iQiIDK/lEp7Ucl3cHEnWSn5j+ygGM1ipe+KCSf3ROBAT0inW34tHmREyBFvBK+8W
pebRoh3vjryDwvHJq+MdF8nLu66JVULDyoKHscF2wif+nehLvKLripuihFz5VC/7
80sUt4vSLMQ1eCnMIkQr/hjLa22s/os4Oo/d8aZuPLZ41w5XYmRYaKj8CRyvQrX4
my9bjA4YOf0C2vWHMyCj2WmOOIGRF/PGtg1gyIos74ApbpYCnNCZa6hIAQQ+z3Kr
jK5rlRj3AgMBAAECggEAKIqN/yVbfaiNbbM8EFFNWJaLxKrF4jyKG/od55hK6pw1
JFr9px2nMNDCANl1Fc8Gudp/wHLX03Qv7qOoah0U/56KYoOetJFcdi5ycHobhhzU
dYVLLRgiOekuQLg6Q235mj0khRMWewyKH4rFwLqF6X3M2qChs21/Y1oq+0wTLDKg
Yf9cPnmutDbi+qsiRv7IqNsw8DjkQtpSyaSBZ1L0JHa4DjR1CDgkSaCG+OJ0PUxo
2tOd142dIRnN3KJG6WSwDSB1+6oZEky1Ucm3ORjtDRqGlOT0Wf2N9TLdSizpz7yu
fOsDVOdeggz2qPCX72gHErT9bFdSyZMLFuw95W7KAQKBgQDtUvUKAHZIHgKadowe
FxWQmMFgvdEVG8ztDrMsrgNal8xAME/UFqXqYhF+ekGr+Swcpshy+/iPl7zp4AOC
hfE+lOddl8mfSPLXVxiKRp6Uen1nN6P3E60qyXFH+zS/S5i8WP0Z5atL0OrA4zNj
oPDThHIZRWzOYti3zFdw0dNQvwKBgQDePgUl/ZYNFKrD0DTJ2IW6glov3icfS3PG
V4H2yCBFudgCVZWH9WIOy7v+0KiLE7rOWFg2tKTT2JW8RUpDzgkZVy/sLuL4Elic
mKLc7TjyMPYANRH3fA+mE4/IszWLtStmkCd6Jwz6M8VeSKDRMMJpLTEjoPndiyxQ
lvaTAa8NyQKBgGGaUY6oe/zS4s013hBt+/9442bvCfM9eL0x43yHoHd8oJLxi5M1
MU1AweMbUrDwjDTIXv3zJNmhVR92ctsWTQ4o3TJ/v3sT3FO1zTDpNETqT3LIzlVK
MVi8eitZY+scoxcrHgStkRJgPHvRtQvPX9wNx4MfK02CF5EXqAqNMPQvAoGBAMbh
iYnt3RHnpMmG0TawZTv62uprS2deBkVAmjVV8ktzfDLak+4PUakb+SiXYbzT8yAl
Pwv1rGtILvdEqqjzAIGE3IXnj4WgJVw928EJKSTTW9HjrChlBTwB1XItrYVQo34t
Eqblu19MZRtyszeBAvlMT+UqcXAo04drEU2M/DLBAoGBAIgCMkp9INWWLbeVYHpk
I0G2IkBg+tiBARZ966Jnp1X4tJcdFQoJdP1n1POn+xz/AfP990TTy4KO4yRi43RU
umVBylS8e+EDHGCEzh+xkk70zryNi13Tm+LZeEnwSTbozcmu55/5aDB/dBbQwl/J
FMrbdBB4KdCPelKWpdpQrFCz
-----END PRIVATE KEY-----
v1.11.0 版本之前
v1.11.0 版本之前,智能表单没有内置任何密钥对,需要项目组在 application.yml
中按照上面的形式指定密钥对才能启用加密配置。
生成公私钥
通过下面的工具即可生成公私钥:
注意,大概需要 3 ~ 5 秒生成密钥对,请耐心等待...
请将私钥拷贝到 application.yml
配置文件中。
加密密码
需要使用公钥加密密码,可以使用下面的工具加密密码:
* 表示必填
- 默认的公钥是指智能表单项目中内置的公钥。
- 生成的RSA公钥是指上个章节介绍的“生成RSA密钥对”工具生成的公钥。
- 您也可以填入自己的RSA公钥。