​Java示例代码 第三方系统单点登录到金蝶云原创
金蝶云社区-云社区用户aUoE1513
云社区用户aUoE1513
8人赞赏了该文章 3036次浏览 未经作者许可,禁止转载编辑于2020年09月07日 16:08:49

进入第三方系统登录授权

image.png

获取好应用id、应用名称、密钥、以及数据中心id等(不会就去社区查)


image.png

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.log4j.Log4j2;
import org.apache.tomcat.util.codec.binary.Base64;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

public class SingleLogin {

    public void getSingleLoginUrl() {
            //数据中心Id        
        String dbid = "数据中心id";
        //用户名       
        String username = "用户名";  //需开发动态获取
        //第三方系统登录授权的应用Id;        
        String appId = "应用id";
        //第三方系统登录授权的应用密钥;
        String appSecret = "密钥";
        int lcId = 2052;
        //语言标识 中文:2052,繁体:3067,英文:1033   
        // 获取时间戳,只精准到秒级
        long timestamp = System.currentTimeMillis() / 1000;  
        //获取加密签名  
        String sign = getSha1(dbid, username, appId, appSecret, String.valueOf(timestamp));
        System.out.println(sign);

        String ud3 = "{'dbid':'" + dbid + "','username':'" + username + "','appid':'" + appId + "','signeddata':'" + sign + "','timestamp':'" + timestamp + "','lcid':'2052'," +
                "'origintype':'SimPas','entryrole':'','formid':'','formtype':'','pkid':'','otherargs':''}";

        JSONObject jsonObject = JSON.parseObject(ud3);
        System.out.println(jsonObject.toJSONString());

        Base64 base64 = new Base64();
        String base64Sign = null;
        try {
            base64Sign = base64.encodeToString(jsonObject.toJSONString().getBytes("UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        System.out.println(base64Sign);
        String h5 = "http://公网IP/K3Cloud/html5/index.aspx?ud=" + base64Sign;// html5入口链接
        String silverlight = "http://公网IP/K3Cloud/Silverlight/index.aspx?ud=" + base64Sign;// html5入口链接

        System.out.println(h5);
        System.out.println(silverlight);
    }


     //SHA-1 加密
    public String getSha1(String dbid, String username, String appId, String appSecret, String timestamp) {

        String[] arr = new String[]{dbid, username, appId, appSecret, timestamp};
        log.info(arr);
        Arrays.sort(arr);
        StringBuilder content = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        log.info("拼接后:" + content.toString());
        MessageDigest md = null;
        String tmpStr = null;
        try {
            //闯将 MessageDigest对象,Message Digest 通过getInstance系列静态函数来进行实例化和初始化
            md = MessageDigest.getInstance("SHA-1");
            // 将三个参数字符串拼接成一个字符串进行sha- 加密
            String s = content.toString();
            byte[] digest = md.digest(s.getBytes());
            StringBuffer hexstr = new StringBuffer();
            String shaHex = "";
            for (int i = 0; i < digest.length; i++) {
                shaHex = Integer.toHexString(digest[i] & 0xFF);
                if (shaHex.length() < 2) {
                    hexstr.append(0);
                }
                hexstr.append(shaHex);
            }
            tmpStr = hexstr.toString();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        content = null;

        return tmpStr;
    }
}


赞 8