Java示例代码 第三方系统单点登录到金蝶云原创
8人赞赏了该文章
3036次浏览
编辑于2020年09月07日 16:08:49
进入第三方系统登录授权
获取好应用id、应用名称、密钥、以及数据中心id等(不会就去社区查)
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; } }
推荐阅读