单点登录时可以使用加密后的密码
前言
在通常情况下,使用帆软决策平台的时候,不论是使用内置的登录界面,还是使用单点登录,都只能使用明文的密码,而不能使用加密后的密码,这是一个很正常的设计,因为用户本身确实也不应该知道自己的密码加密后是什么样的。
但是,比如说你现在有另外一套,想通过单点登录访问报表平台,但是你平台上面用的是MD5加密的密码,但是单点登录只支持明文密码登录,这就需要通过一定的二次开发来实现了。
实现步骤
关键接口
主要的接口就是 com.fr.privilege.providers.dao.PasswordValidator,这个接口是用来认证是时候判断用户名密码是否匹配的。
示例实现
以MD5加密为例
package com.fr.privilege;  
import com.fr.privilege.providers.dao.MessageDigestPasswordValidator;  
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MyPasswordValidator extends MessageDigestPasswordValidator {  
  
    public boolean validatePassword(String localPassword, String clientPassword) { 		
        String pass1 = "" + localPassword;  
        if (pass1.equalsIgnoreCase(clientPassword)) {  
            return true;
        }
        String pass2 = encodePassword(clientPassword);        
		return pass1.equalsIgnoreCase(pass2);  
    } 
	@Override
	public String encodePassword(String clinetPassword) {
		return (encryption(clinetPassword));
	}	
	
    public String encryption(String plainText) {
        String re_md5 = new String();
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(plainText.getBytes());
            byte b[] = md.digest();
 
            int i;
 
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }
 
            re_md5 = buf.toString();
 
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return re_md5;
    }
}
将编译好的class文件置于%FR_HOME%/WebReport/web-inf/classes/com/fr/privilege文件夹下。
平台设置
我们只需要继承内置的MD5加密类,登录决策平台,点击管理系统>用户管理>设置>同步数据集>加密方式中选择自定义密码加密,填写使用这个类编译出来的class文件com.fr.privilege.MyPasswordValidator,就可以在认证的时候,明文或者加密后的密码认证都可以通过了,如下图:
 注:关键代码就是示例中的第12行和第13行,这两行判断如果传递的是加密后的代码,并且比对成功,也是作为认证通过的。
注:关键代码就是示例中的第12行和第13行,这两行判断如果传递的是加密后的代码,并且比对成功,也是作为认证通过的。
附件列表
 标签: 
           
           
          平台认证 
           
          
           
        
        
        文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
                关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
				若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201)

