啟用第三方系統登入授權
2 測試第三方系統單點登陸
使用生成的連結測試是否能正常的單點登入。
3 在第三方系統中生成簽名授權的URL
【參數格式】:ud={"dbid":"5be178b96562c0","username":"Administrator","appid":"1","signeddata":"804e89bc062fd55cc463617b964530e12b90b540","timestamp":"1545815603",
"lcid":"2052","origintype":"SimPas","entryrole":"","formid":"","formtype":"","pkid":"","otherargs":""}
【參數說明】:
dbid:資料中心的ID;
username:使用者名稱;
appid:應用程式ID,通過Administrator登入資料中心後,在【系統管理】分類的【第三方系統登入授權】功能裡面進行新增維護;(雲之家可以不填由querystring參數決定)
signeddata:參考文章【http://club.kingdee.com/forum.php?mod=viewthread&tid=1026953】;
timestamp:登入時間戳(Unix時間戳,定義為從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數);
lcid(可選):語言ID,中文2052(預設),英文1033,繁體3076;
origintype: XT=雲之家內建(同時要求entryrole=XT);SimPas=簡單通行證內建;
entryrole:驗證權限的入口角色;
formid: 登入後預設打開功能的表單id;
formtype:登入後預設打開功能的格式,目前有單據bill和清單list兩種方式,沒有清單的功能統一為bill;
pkid:formid對應表單的主鍵;formtype為list時忽略,formtype為bill時起作用,如果為空表示新增狀态;
otherargs:作為使用者自定義參數傳入,使用于二開,具體内容和格式由二開人員确定,最終在指定表單的插件中通過GetCustomParameter(FormConst.StartAppArgs)擷取,具體參考【http://club.kingdee.com/forum.php?mod=viewthread&tid=1028839】
.
NET示例代碼如下:
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.BusinessEntity.Login;
namespace PassportLogin
{
class Program
{
static void Main(string[] args)
{
int lcId = 2052;
long timestamp = DateTimeFormatUtils.CurrentTimeMillis() / 1000;//時間戳
string dbId = "57b11d0f7a3b1a";//資料中心ID
string usserName = "ly";//使用者名稱
string appId = "SRMLightApp";//第三方系統應用Id
string appSecret = "7d9169bfbdc34e9cbd96069db5e72917";//第三方系統應用秘鑰
string[] arr = new string[] { dbId, usserName, appId, appSecret, timestamp.ToString() };
string sign = Kingdee.BOS.Util.SHA1Util.GetSignature(arr);//簽名
SimplePassportLoginArg arg = new SimplePassportLoginArg();
arg.appid = appId;
arg.dbid = dbId;
arg.lcid = lcId.ToString();
arg.origintype = "SimPas";
arg.signeddata = sign;
arg.timestamp = timestamp.ToString();
arg.username = usserName;
arg.entryrole = string.Empty;
arg.formid = string.Empty;
arg.formtype = string.Empty;
arg.otherargs = string.Empty;
arg.pkid = string.Empty;
string argJosn = Kingdee.BOS.JSON.KDObjectConverter.SerializeObject(arg);//json格式
string argJsonBase64 = System.Text.UTF8Encoding.UTF8.GetBytes(argJosn).ToBase64();//base64編碼
string silverlightUrl = "http://localhost/K3Cloud/Silverlight/IndexSL.aspx?ud=" + argJsonBase64;// Silverlight入口連結
string html5Url = "http://localhost/K3Cloud/html5/IndexSL.aspx?ud=" + argJsonBase64;// html5入口連結
Console.WriteLine(silverlightUrl);
Console.WriteLine(html5Url);
Console.ReadLine();
}
}
}
中文名的進不去隻到登入界面,請配置
common.config配置
4 從第三方系統登出使用者
接口位址:http://ip/K3Cloud/Kingdee.BOS.ServiceFacade.ServicesStub.User.UserService.LogoutByOtherSystem.common.kdsvc
請求類型:post
參數
參數名稱:ap0
參數值:{"AcctID":"5ab22542230aaf","AppId":"hr","Username":"txt","SignedData":"4cdde33b74d55c328291a24f299cb745a50621bc","Timestamp":1525413177}
AcctID:資料中心ID
Username:為要登出的使用者名稱
AppId:應用ID
SignedData:簽名資料,算法同上
Timestamp:時間戳
5、知識擴充連結
V1版本內建:https://vip.kingdee.com/article/1245利用啟動插件校驗機制實作免登入功能,實作跨系統無縫內建參考如下文章:
http://club.kingdee.com/forum.php?mod=viewthread&tid=1332377