作者:lisong
目录
- 功能简介
- 配置文件详情
- 扩展和配置流程
功能简介
SuperMap iServer 11i(2023) 新增了扩展账户信息合规度校验规则的能力,您可以灵活定制满足自身项目需求的用户名、密码合规度校验规则,用于校验您创建的账户信息是否合规。
配置文件详情
在产品包根目录 %SuperMap iServer_HOME%/webapps/iserver/WEB-INF/config 下,accountInfoComplianceRules.xml 文件中内置了 SuperMap iServer 当前已经支持的账户信息合规度校验规则。
配置文件根节点为元素,包括以下两个子节点:
(1)passwordRules 节点
为用于配置密码合规度校验规则的集合,可以包含多个 rule 标签。每个 rule 标签对应一种密码合规度校验规则,包含合规度规则的校验方式(type)、规则名(name)、规则表达式(expression)、中文报错信息(zhErrMsg)以及英文报错信息(enErrMsg)等配置项。
passwordRules节点示例如下所示:
<passwordRules>
<rule>
<type>regularExpression</type>
<name>PwdLength</name>
<expression><![CDATA[\S{8,}]]></expression>
<zhErrMsg>密码长度至少为8字符</zhErrMsg>
<enErrMsg>Password must contain at least 8 characters</enErrMsg>
</rule>
<rule>
<type>dictionary</type>
<name>NotContainsContinuationCharacter</name>
<expression>
<condition>notcontainscontinuouschars,3</condition>
<dictionary>abcdefghijklmnopqrstuvwxyz</dictionary>
<dictionary>ABCDEFGHIJKLMNOPQRSTUVWXYZ</dictionary>
<dictionary>0123456789</dictionary>
</expression>
<zhErrMsg>密码不能包含三个或三个以上连续字符</zhErrMsg>
<enErrMsg>Password can’t contain three or more continuous characters and numbers</enErrMsg>
</rule>
<rule>
<type>StringMatch</type>
<name>notContainsUsernameAndReverse</name>
<expression>
<condition>notcontainsextraparamsandreverse</condition>
<paramContent>${username}</paramContent>
</expression>
<zhErrMsg>密码不能包含用户名及其倒写</zhErrMsg>
<enErrMsg>Pasword can't contain the user name and its reverse</enErrMsg>
</rule>
</passwordRules>
其中,
● type:用于设置校验合规度规则的方式,包括正则表达式(regularExpression)、字典(dictionary)和字符串匹配(StringMatch)等三种类型。
● name:用于设置合规度规则的规则名。
● expression:用于设置合规度规则的表达式。当 type 为正则表达式(regularExpression)时设置描述合规度规则的正则表达式,并且没有子节点;为字典(dictionary)和字符串匹配(StringMatch)时,包括如下子节点:
● condition :用于设置合规度规则的匹配条件。当 type 为字典(dictionary)时,需根据规则设置与字典的关联条件及与字典关联的字符个数,用“,”连接(例如:notcontainscontinuouschars,3);当 type 为字符串匹配(StringMatch)时,需根据规则设置与字符串的关联条件,如:notcontainsextraparamsandreverse。
请注意,在配置文件内置的规则中,${username} 指用户设置的用户名字符,该配置仅能作为整体使用或替换。
● zhErrMsg :用于设置校验合规度规则时失败时的中文提示信息。
● enErrMsg:用于设置校验合规度规则时失败时的英文提示信息。
(2)usernameRules 节点
为用于配置用户名合规度校验规则的集合,可以包含多个 rule 标签。每个 rule 标签对应一种用户名合规度校验规则,包含合规度规则的校验方式(type)、规则名(name)、规则表达式(expression)、中文报错信息(zhErrMsg)以及英文报错信息(enErrMsg)等配置项。
usernameRules 节点配置方法同 passwordRules 节点,示例如下所示:
<usernameRules>
<rule>
<type>regularExpression</type>
<name>UsernameLength</name>
<expression><![CDATA[^[a-zA-Z][a-zA-Z0-9_-]{3,17}$]]></expression>
<zhErrMsg>用户名必须是数字、字母、下划线或中划线组成,且以字母开头</zhErrMsg>
<enErrMsg>User name must be composed of numbers, letters, underscores or dash, and begin with a letter.</enErrMsg>
</rule>
</usernameRules>
扩展和配置流程
在实际项目中,您可以根据需求对 SuperMap iServer 中已经提供的账户信息合规度校验规则进行修改或者删除,也可以添加新的账户信息合规度校验规则进行扩展。 支持扩展的规则包括用户名和密码的位数和字符组成限制,可以使用的校验规则方式及关联条件请参考:passwordRules 节点
(1)配置文件设置
产品包根目录 %SuperMap iServer_HOME%webapps/iserver/WEB-INF/config 下,accountInfoComplianceRules.xml 文件的子节点 passwordRules 中添加如下内容:
(由于此规则包含多个字符,且无法使用正则表达式进行表述,以此使用字典方式进行校验)
<rule>
<type>dictionary</type>
<name>NotContainsKeyboardVerticalContinuationCharacter</name>
<expression>
<condition>notcontainscontinuouschars,2</condition>
<dictionary>1qaz</dictionary>
<dictionary>2wsx</dictionary>
<dictionary>3edc</dictionary>
<dictionary>4rfv</dictionary>
<dictionary>5tgb</dictionary>
<dictionary>6yhn</dictionary>
<dictionary>7ujm</dictionary>
<dictionary>8ik,</dictionary>
<dictionary>9ol.</dictionary>
<dictionary>0p;/</dictionary>
</expression>
<zhErrMsg>根据键盘阵列,密码不能包含两个或两个以上竖排连续的字符</zhErrMsg>
<enErrMsg>Password can’t contain two or more continuous vertical characters on the keyboard</enErrMsg>
</rule>
(2)查看扩展结果
完成上述配置后,表示已经成功添加了密码合规度校验规则“密码不能包含两个或两个以上竖排连续的字符”。保存配置文件并重启 SuperMap iServer,在初始化向导-创建管理员账户、用户管理-添加用户、账户设置-修改密码和强制修改密码等功能中设置密码,即可对输入的密码进行该项合规度规则校验。
注:若对管理员账户密码进行重置,需在重启 SuperMap iServer 前,停止 SuperMap iServer 服务,并执行【SuperMap iServer_HOME】\bin目录下的 passwordreset.bat/passwordreset.sh 文件。