3.1 设置方法
登录平台,点击「
管理系统>用户管理>同步用户
」的时候,设置加密方式,如下图所示:
有两种加密方式,「内置 SHA 加密」和「自定义密码加密」。
3.2 内置 SHA 加密
适用场景:
同步的服务器数据集中的密码为明文时,选择内置 SHA 加密。
加密简介:
数据决策系统采用 SHA256 加密方式,以保证密码安全。加密方式已经封装了,用户通过接口自定义修改密码后,会自动进行 SHA256 加密。
登录密码:
登录密码即为同步的服务器数据集中的密码,非
fine_user用户表
中加密的密码。
3.3 自定义密码加密
适用场景:
同步的服务器数据集中的密码为自定义加密后的密文,则必须使用自定义加密。
加密简介:
自定义密码加密,即自定义一个密码加密类。
加密方式在类中描述,并保存在
%BI_Home%\webapps\webroot\WEB-INF\classes
文件夹中。
数据决策系统会在用户自定义加密算法的基础上再进行 SHA256 二次加密,以保证密码安全。
登录密码:
登录密码为同步的服务器数据集的密文解密之后的明文。
加密接口:
用户输入的“密码”或“用户名和密码”经过自定义加密规则进行加密,再和数据库中的信息进行匹配,支持 2 个接口实现方法,如下:
1)只需要对密码进行加密得到密文:String encode(String originText);//入参是明文密码,对密码进行加密得到密文
2)对用户名和密码进行加密得到密文:String encode(String originUserName, String originPassword);//入参是用户名和明文密码,返回结果是密文字符
注1:其中 String encode(String originUserName, String originPassword);加密方式为 2019-01-18 新增的接口,包含接口1的功能,推荐使用此接口。
注2:自定义加密算法,必须继承 AbstractPasswordValidator 类,并加上返回判断明文密码和密文密码是否一致结果方法才可行。
下面我们制作三个简单的自定义密码加密示例:实现自定义密码 BASE64 加密、SHA256、MD5 加密。
4.1 BASE64 加密方式
4.1.1 自定义密码验证类
定义一个类,命名为
Base64PasswordValidator.java
,扩展于
AbstractPasswordValidator
,详细的代码参见:
https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/decision/privilege/encrpt/Base64PasswordValidator.java
点击下载并解压 Base64PasswordValidator.class:
Base64PasswordValidator.rar
将编译的
Base64PasswordValidator.class
放在
/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt
目录下。
注1:这里使用
String encode(String originText);
//只对密码进行加密得到密文。
注2:需要重启工程。
4.1.2 平台设置
在平台的
用户同步数据集>加密方式>自定义加密类
中选择 BASE64 加密类即可,如下图所示:
注:本文仅进行简单示例,您可以根据自己的需求自己定义加密的方式。
4.2 SHA256 加密方式
4.2.1 自定义密码加密类
定义一个类,命名为
CustomSHA256PasswordValidator.java
,扩展于
AbstractPasswordValidator
,详细的代码参见:
https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/decision/privilege/encrpt/CustomSHA256PasswordValidator.java
点击下载并解压 CustomSHA256PasswordValidator.class:
CustomSHA256PasswordValidator.rar
将编译的 CustomSHA256PasswordValidator.class 放在
/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt
目录下。
注:这里使用
String encode(String originUserName, String originPassword);
//对用户名和密码一起进行加密得到密文。
4.2.2 平台设置
同 BASE64 加密方式,在平台的「同步用户>加密方式>自定义加密类」中选择 SHA256 加密类即可。
4.3 MD5 加密方式
9.0 及以前的版本,同步数据集中密码可以选择“内置 MD5 加密”,而在 FR10.0 中取消了默认的 MD5 加密。
若用户的工程是 9.0 升级到 10.0 的,而在升级之前用户同步采用的是默认内置 MD5 加密或者用户就想使用 MD5 加密方式,又该如何处理呢?
4.3.1 下载 MD5 加密类
现提供现成的 MD5 加密类 :
decision-new-password.zip
点击下载并解压之后,将类放于
%FR_HOME%\webroot\WEB-INF\classes\com\fr\decision
目录下。
4.3.2 平台设置
在
平台的「同步用户>加密方式>自定义加密类」中
选择 MD5 加密类即可,如下图所示:
4.3.3 支持用户名加密
若用户需要的是【用户名+密码】的方式进行自定义加密,请使用文件:
decision.zip
,使用方法同上。
4.3.4 注意事项
9.0 版本 FineReport 内置的 MD5 加密方式不区分密文大小写,10.0 版本 FineReport适配的 MD5 加密方式区分大小写。
9.0 同步选择内置 MD5 加密,升级后会内置一个小写 MD5 的 class,如果是大写密文,升级后就不能登录,需要手动替换大写 class,使用方法同上。
class 文件点击下载:
MD5UpperCasePasswordValidator.rar