Browse Source

数字证书登录

suhanqian 1 year ago
parent
commit
a9c9a749f9
2 changed files with 785 additions and 18 deletions
  1. 28 18
      src/views/pages/login.vue
  2. 757 0
      src/views/pages/onenethelper.js

+ 28 - 18
src/views/pages/login.vue

@@ -54,7 +54,7 @@
                 <div v-if="showOnPhone" class="phone" @click="onUserName()">用户名登录</div>
                 <div v-if="showUsername" class="phone" @click="onPone()">手机号登录</div>
                 <!-- <a href="../../../onenettest.html"  class="phone" > 证书登录</a> -->
-                <!-- <div  class="phone" @click="CertLogin()">证书登录1</div> -->
+                <div  class="phone" @click="CertLogin()">证书登录</div>
               </div>
             </el-form>
           </div>
@@ -69,7 +69,11 @@ import Cookies from 'js-cookie'
 import debounce from 'lodash/debounce'
 import { messages } from '@/i18n'
 import { getUUID } from '@/utils'
-// import {oneNetHelper} from './onenethelper'
+import {
+  IsAddonAvailable,
+  GetSignAndToken,
+  GetSignAndTokenCb,
+} from './onenethelper'
 export default {
   data () {
     return {
@@ -163,23 +167,29 @@ export default {
       this.showOnPhone = true
       this.showUsername = false
     },
-    // CertLogin () {
-    //       if(oneNetHelper.IsAddonAvailable())
-    //     {
-    //       console.log('1111')
-    //     }
-    //     else
-    //     {	
-    //       alert("请先安装插件!")
-    //   //(5) 当onenethelper插件不可用时,调用通知接口加载插件
-    //       oneNetHelper.AddonAvailableNotify(AddonAvailableCb);
-    //     }
+    CertLogin () {
+      if(IsAddonAvailable()) {
+              this.$http.post('/webservice/generatorchallenge', {}).then(({ data: res }) => {
+          if (res.data.code ==0) {
+             GetSignAndToken(res.data.msg)
+              if(GetSignAndTokenCb()) {
+                      this.$http.post('/webservice/verifyIdentityTicket', {
+                        challenge: res.data.msg,//随机挑战数
+                        identityTicket:GetSignAndTokenCb(),//组合令牌数据
+                        appServerID:'0'//服务器ID
+                      }).then(({ data: res }) => {
+                          if (res.expiresIn==7200) { 
+                            Cookies.set('token', res.sessionToken)
+                            this.$router.replace({ name: 'home' })
+                          }
+                      })
+              }
+            // form1.T8.value = res.data.msg//获取随机挑战数
+          }
+        })
 
-    // },
-     AddonAvailableCb(ob) {
-      console.log(ob.addon,'ob.addon')
-      // form1.T01.value=ob.addon;
-     },
+      }
+    },
     // 表单提交
     dataFormSubmitHandle: debounce(function () {
       this.$refs['dataForm'].validate((valid) => {

+ 757 - 0
src/views/pages/onenethelper.js

@@ -89,4 +89,761 @@ function isLinux() {
 		return true;
 	}
 	return false;
+}
+function onenet_guid()
+{
+    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+        var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
+        return v.toString(16);
+    });
+    
+}
+
+function InitCmdMsg(action, data)
+{
+	var msg = {};
+	msg['logid'] = onenet_guid();
+	msg['action'] = action; 
+	msg['data'] = data;
+	return msg;
+}
+	
+
+var oneNetHelper_activex=new Object();
+oneNetHelper_activex.isAvailable = false;
+oneNetHelper_activex.IsAddonAvailable = function ()
+	{
+		if(!oneNetHelper_activex.isAvailable)
+		{
+			oneNetHelper_activex.isAvailable = (AuthClientCtrl)? true : false;
+			if(oneNetHelper_activex.isAvailable)
+			{
+				try
+				{			
+					AuthClientCtrl.Test();
+				}
+				catch(e)
+				{
+					oneNetHelper_activex.isAvailable = false;
+					alert("AuthClientCtrl.Test失败!");
+				}	
+			}
+			else
+			{
+				alert("加载AuthClientCtrl 对象失败!");
+			}
+		}
+		
+		
+		return oneNetHelper_activex.isAvailable;
+	}
+	
+oneNetHelper_activex.AddonAvailableNotify = function (notify_web)
+	{
+		setTimeout(function (){
+			var resp = {};
+			resp['addon']=oneNetHelper_activex.isAvailable;
+			notify_web(resp);	
+		}, 0);
+	}
+	
+oneNetHelper_activex.GetUASToken = function (notify_web)
+	{
+		setTimeout(function (){
+			var resp = {};
+			AuthClientCtrl.GetUASToken();
+			resp['ret'] = AuthClientCtrl.lResult == 0 ? 1 : 0;
+			resp['errinfo'] = AuthClientCtrl.bstrError;	
+			resp['token'] = AuthClientCtrl.bstrUASToken;
+			resp['expiredate'] = AuthClientCtrl.bstrUASExpireDate;		
+			notify_web(resp);	
+		}, 0);
+	}	
+
+oneNetHelper_activex.GetUserInfo = function (notify_web)
+	{		
+		setTimeout(function (){
+			var resp = {};		
+			AuthClientCtrl.GetUserInfo();
+			resp['ret'] = AuthClientCtrl.lResult == 0 ? 1 : 0;
+			resp['errinfo'] = AuthClientCtrl.bstrError;	
+			resp['userid'] = AuthClientCtrl.bstrUserID;
+			resp['username'] = AuthClientCtrl.bstrUserName;
+			resp['certuserid'] = AuthClientCtrl.bstrCertUserID;
+			resp['certusername'] = AuthClientCtrl.bstrCertUserName;
+			resp['authresult'] = AuthClientCtrl.lAuthResult;
+			notify_web(resp);
+		}, 0);
+	}
+	
+oneNetHelper_activex.GetSignAndToken = function (randomnum, notify_web)
+	{
+		setTimeout(function (){
+			var hostname = location.hostname;
+			var msg = InitCmdMsg("GetSignAndToken", randomnum);
+			msg['appServerAddr'] = hostname;
+			var resp = {};	
+			AuthClientCtrl.JsonActionCmdDeal(JSON.stringify(msg));
+			var obj = JSON.parse(AuthClientCtrl.bstrResponse);
+			resp = obj.info;
+			/*说明:1.针对老版本客户端底层未处理GetSignAndToken action方式,再次调用原接口获取令牌;
+					2.若提示AuthClientCtrl未定义JsonActionCmdDeal方法,则直接使用GetSignAndToken方法*/
+			if(resp['ret'] == -2003)
+			{
+				AuthClientCtrl.GetSignAndToken(randomnum);
+				resp['ret'] = AuthClientCtrl.lResult == 0 ? 1 : 0;
+				resp['errinfo'] = AuthClientCtrl.bstrError;	
+				resp['signandtoken'] = AuthClientCtrl.bstrSignValAndToken;	
+			}
+			notify_web(resp);
+		}, 0);
+	}
+	
+oneNetHelper_activex.GetUserCertInfo = function (notify_web)
+	{
+		setTimeout(function (){
+			var resp = {};		
+			AuthClientCtrl.GetUserCertInfo();
+			resp['ret'] = AuthClientCtrl.lResult == 0 ? 1 : 0;
+			resp['errinfo'] = AuthClientCtrl.bstrError;	
+			resp['DNStringAll'] = AuthClientCtrl.bstrUserCertInfoValue('DNStringAll');
+			resp['UserName'] = AuthClientCtrl.bstrUserCertInfoValue('UserName');
+			resp['UserID'] = AuthClientCtrl.bstrUserCertInfoValue('UserID');
+			resp['DNCode'] = AuthClientCtrl.bstrUserCertInfoValue('DNCode');
+			resp['DisName'] = AuthClientCtrl.bstrUserCertInfoValue('DisName');
+			resp['UniqueId'] = AuthClientCtrl.bstrUserCertInfoValue('UniqueId');
+			resp['IssuerDisName'] = AuthClientCtrl.bstrUserCertInfoValue('IssuerDisName');
+			resp['CertSerial'] = AuthClientCtrl.bstrUserCertInfoValue('CertSerial');
+			resp['EMail'] = AuthClientCtrl.bstrUserCertInfoValue('EMail');
+			resp['Org'] = AuthClientCtrl.bstrUserCertInfoValue('Org');
+			resp['OrgUnit'] = AuthClientCtrl.bstrUserCertInfoValue('OrgUnit');
+			resp['City'] = AuthClientCtrl.bstrUserCertInfoValue('City');
+			resp['State'] = AuthClientCtrl.bstrUserCertInfoValue('State');
+			resp['Descption'] = AuthClientCtrl.bstrUserCertInfoValue('Descption');
+			resp['Version'] = AuthClientCtrl.bstrUserCertInfoValue('Version');
+			resp['BeginTime'] = AuthClientCtrl.bstrUserCertInfoValue('BeginTime');
+			resp['EndTime'] = AuthClientCtrl.bstrUserCertInfoValue('EndTime');
+			//resp['authresult'] = AuthClientCtrl.lAuthResult;
+			notify_web(resp);
+		}, 0);
+	}
+
+oneNetHelper_activex.Login = function (appToken,username,userpwd,authtype,svctype, gw_id, notify_web)
+	{
+		alert("Login IE插件未实现");
+	}
+
+oneNetHelper_activex.ChangeUKeyPin = function (old_key_pin,new_key_pin,notify_web)
+	{
+		alert("ChangeUKeyPin IE插件未实现");
+	}
+
+oneNetHelper_activex.SSLUsbKeyLogin = function (appToken,gw_id,key_pin,notify_web)
+	{
+		alert("SSLUsbKeyLogin IE插件未实现");
+	}
+	
+oneNetHelper_activex.SSLUserPwdLogin = function (appToken,gw_id,username,userpwd,notify_web)
+	{
+		alert("SSLUserPwdLogin IE插件未实现");
+	}
+	
+oneNetHelper_activex.IPSecUsbKeyLogin = function (appToken,gw_id,key_pin,notify_web)
+	{
+		alert("IPSecUsbKeyLogin IE插件未实现");
+	}
+	
+oneNetHelper_activex.Logout = function (appToken,notify_web)
+	{
+		alert("Logout IE插件未实现");
+	}
+	
+oneNetHelper_activex.QuerySecPortalStatus = function (appToken,notify_web)
+	{
+		alert("QuerySecPortalStatus IE插件未实现");
+	}
+	
+oneNetHelper_activex.HeartBeat = function (appToken,notify_web)
+	{
+		alert("HeartBeat IE插件未实现");
+	}
+	
+oneNetHelper_activex.GetGateWayAddrList = function (notify_web)
+	{
+		setTimeout(function (){
+		var msg = InitCmdMsg("GetGateWayAddrList", "");	
+		var resp = {};	
+		AuthClientCtrl.JsonActionCmdDeal(JSON.stringify(msg));
+		var obj = JSON.parse(AuthClientCtrl.bstrResponse);
+		resp = obj.info;
+		notify_web(resp);
+		}, 0);
+	}
+
+oneNetHelper_activex.JsonActionTestCmdDeal = function (notify_web)
+	{
+		setTimeout(function (){
+		var msg = InitCmdMsg("testAction", "");	
+		var resp = {};	
+		AuthClientCtrl.JsonActionCmdDeal(JSON.stringify(msg));
+		var obj = JSON.parse(AuthClientCtrl.bstrResponse);
+		resp = obj.info;
+		notify_web(resp);
+		}, 0);
+	}
+	var oneNetHelper_np=new Object();
+oneNetHelper_np.isAvailable = false;
+oneNetHelper_np.IsAddonAvailable = function ()
+	{
+		if(!oneNetHelper_np.isAvailable)
+		{
+			oneNetHelper_np.isAvailable = (plugin) ? true : false;
+			if(oneNetHelper_np.isAvailable)
+			{
+				try
+				{			
+					//AuthClientCtrl.Test();
+				}
+				catch(e)
+				{
+					alert("plugin.Test失败!");
+				}	
+			}
+			else
+			{
+				alert("加载plugin 对象失败!");
+			}
+		}
+		
+		
+		return oneNetHelper_np.isAvailable;
+	}
+	
+oneNetHelper_np.AddonAvailableNotify = function (notify_web)
+	{
+		setTimeout(function (){
+			var resp = {};
+			resp['addon']=oneNetHelper_np.IsAddonAvailable();
+			notify_web(resp);	
+		}, 0);
+	}
+	
+oneNetHelper_np.GetUASToken = function (notify_web)
+	{
+		alert("GetUASToken np插件未实现");
+	}	
+
+oneNetHelper_np.GetUserInfo = function (notify_web)
+	{	
+		var msg = {};
+		msg['logid'] = 'GetUserInfo';
+		msg['action'] = 'UIGetUserInfo'; 
+		msg['data'] = "";
+		var req = JSON.stringify(msg);
+		
+		setTimeout(function (){
+			var resp = {};
+			var outStr = plugin.HandleJsonReq(req);
+			resp = JSON.parse(outStr);
+			notify_web(resp);
+		}, 0);
+	}
+	
+oneNetHelper_np.GetSignAndToken = function (randomnum, notify_web)
+	{
+		/*1.调整np插件获取令牌的anction为GetSignAndToken,保持与非np插件一致;
+		  2.同时为兼容旧版本客户端,当outStr为空时,需调用action UIGetSignAndToken*/
+		var msg = {};
+		var hostname = location.hostname;
+		msg['logid'] = 'GetSignAndToken';
+		msg['action'] = 'GetSignAndToken'; 
+		msg['data'] = randomnum;
+		msg['appServerAddr'] = hostname;
+		var req = JSON.stringify(msg);		
+		setTimeout(function (){
+			var resp = {};		
+			var outStr = plugin.HandleJsonReq(req);
+			if(outStr != '{}')
+			{
+				resp = JSON.parse(outStr);
+				notify_web(resp);
+			}
+			else
+			{
+				msg['action'] = 'UIGetSignAndToken'; 
+				req = JSON.stringify(msg);	
+				outStr = plugin.HandleJsonReq(req);
+				resp = JSON.parse(outStr);
+				notify_web(resp);
+			}
+			
+		}, 0);
+	}
+	
+oneNetHelper_np.GetUserCertInfo = function (notify_web)
+	{
+		var msg = {};
+		msg['logid'] = 'UIGetCertInfo';
+		msg['action'] = 'UIGetCertInfo'; 
+		msg['data'] = "";
+		var req = JSON.stringify(msg);
+		
+		setTimeout(function (){
+			var resp = {};	
+			var outStr = plugin.HandleJsonReq(req);
+			resp = JSON.parse(outStr);
+			notify_web(resp);
+		}, 0);
+	}
+
+oneNetHelper_np.Login = function (appToken,username,userpwd,authtype,svctype, gw_id, notify_web)
+	{
+		alert("Login np插件未实现");
+	}
+
+oneNetHelper_np.SSLUsbKeyLogin = function (appToken,gw_id,key_pin,notify_web)
+	{
+		alert("SSLUsbKeyLogin np插件未实现");
+	}
+	
+oneNetHelper_np.SSLUserPwdLogin = function (appToken,gw_id,username,userpwd,notify_web)
+	{
+		alert("SSLUserPwdLogin np插件未实现");
+	}
+	
+oneNetHelper_np.IPSecUsbKeyLogin = function (appToken,gw_id,key_pin,notify_web)
+	{
+		alert("IPSecUsbKeyLogin np插件未实现");
+	}
+	
+oneNetHelper_np.Logout = function (appToken,notify_web)
+	{
+		alert("Logout np插件未实现");
+	}
+	
+oneNetHelper_np.QuerySecPortalStatus = function (appToken,notify_web)
+	{
+		alert("QuerySecPortalStatus np插件未实现");
+	}
+	
+oneNetHelper_np.HeartBeat = function (appToken,notify_web)
+	{
+		alert("HeartBeat np插件未实现");
+	}
+	
+oneNetHelper_np.GetWebServiceAddr = function (notify_web)
+	{
+		alert("GetWebServiceAddr np插件未实现");
+	}
+	
+oneNetHelper_np.GetGateWayAddrList = function (notify_web)
+{
+	var msg = {};
+	msg['logid'] = 'GetGateWayAddrList';
+	msg['action'] = 'GetGateWayAddrList'; 
+	msg['data'] = "";
+	var req = JSON.stringify(msg);
+	
+	setTimeout(function (){
+		var resp = {};		
+		var outStr = plugin.HandleJsonReq(req);
+		resp = JSON.parse(outStr);
+		notify_web(resp);
+	}, 0);
+}
+function vLog(msg)
+{
+	var args = Array.prototype.slice.call(arguments); 
+  	args.unshift('[onenet]');
+  	console.log.apply(console, args);
+}
+
+// function onenet_guid()
+// {
+//     return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+//         var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
+//         return v.toString(16);
+//     });
+    
+// }
+
+
+class COneNetHelper{
+	constructor()
+	{
+		this.name = 'OneNet';
+		this.mCmdCbMap = new Map();
+		this.evtReqName = 'EventOneNetHost';
+		this.evtRespName = 'EventOneNetWeb';
+		this.type = 'OneNetReqBg';
+		this.msgGetUserInfo = 'GetUserInfo';
+		this.msgGetSignAndToken = 'GetSignAndToken';
+		this.msgGetUserCertInfo = 'GetUserCertInfo';
+		this.msgLogin ='Login';
+		this.msgLogout ='Logout';
+		this.msgQuerySecPortalStatus = 'QuerySecPortalStatus';
+		this.msgHeartBeat = 'HeartBeat';
+		this.msgGetGateWayAddrList = 'GetGateWayAddrList';
+		this.msgCheckExtensionInstalled = 'ExtensionInstalled';
+		this.msgGetUASToken = 'GetUASToken';
+		this.msgChangeUKeyPin = 'ChangeUKeyPin';
+		this.msgTestAction = 'testAction';		
+		this.isInstalled = 0;
+		this.timeout = 30000;
+        
+        this.AddonAvailableNotifyCB;
+        
+	}
+
+	InsertCmdCBHandler(msg, webCB)
+	{
+		var that=this;
+		this.mCmdCbMap.set(msg['logid'], webCB);
+		setTimeout(function (){	
+			var resp = msg;
+			var cb = that.mCmdCbMap.get(resp.logid);
+			if( cb !== undefined)
+			{
+				that.DeleteCmdCBHandler(resp);
+				if(cb == that.AddonAvailableNotifyCB)
+				{
+					that.isInstalled = 0;
+					resp['addon']=that.isInstalled;
+				}
+				else
+				{
+					resp['ret'] = 0;
+					resp['errinfo'] = 'timeout';					
+				}
+				webCB(resp);
+			}
+		}, that.timeout);
+	}
+	
+	DeleteCmdCBHandler(obj)
+	{
+		this.mCmdCbMap.delete(obj.logid);
+	}
+	
+	InitCmdMsg(action, data)
+	{
+		var msg = {};
+		if(action == this.msgCheckExtensionInstalled)
+		{
+			msg['logid'] = action;
+		}
+		else
+		{
+			msg['logid'] = onenet_guid();
+		}
+		msg['action'] = action; 
+		msg['data'] = data;
+		return msg;
+	}
+
+	SendCustomCmd(msg,webCB)
+	{
+		if(msg['action'] === undefined)
+		{			
+			vLog('CallEx() action error: ' + msg);
+			return;
+		}
+
+		if(msg['data'] === undefined)
+		{
+			msg['data']="";
+		}		
+		var tmpmsg = this.InitCmdMsg(msg['action'], msg['data']);
+		this.InsertCmdCBHandler(tmpmsg, webCB);
+		this.BgRequest(tmpmsg);
+	}
+	
+	GetUASToken(notify_web)
+	{
+		var msg = this.InitCmdMsg(this.msgGetUASToken, "");
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);
+	}
+
+	GetUserInfo(notify_web)
+	{
+		var msg = this.InitCmdMsg(this.msgGetUserInfo, "");
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);
+	}
+
+	GetSignAndToken(randomnum, notify_web)
+	{	
+		var hostname = location.hostname;
+		vLog('GetSignAndToken: ' + hostname);
+		var msg = this.InitCmdMsg(this.msgGetSignAndToken, randomnum);
+		msg['appServerAddr'] = hostname; 
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);
+	}
+	
+	GetUserCertInfo(notify_web)
+	{
+		var msg = this.InitCmdMsg(this.msgGetUserCertInfo, "");
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);
+	}
+	
+    Login(appToken,username,userpwd,authtype,svctype, gw_id, notify_web)
+    {
+        var msg = this.InitCmdMsg(this.msgLogin, "");
+		msg['token'] = appToken;
+		msg['username'] = username;        
+		msg['password'] = userpwd;
+		msg['authtype']= authtype; 
+       	msg['svctype']= svctype; 
+		msg['gw_id']= gw_id;        
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);         
+    }	
+
+	ChangeUKeyPin(old_key_pin,new_key_pin,notify_web)
+	{
+        var msg = this.InitCmdMsg(this.msgChangeUKeyPin, "");
+		msg['oldpin'] = old_key_pin;
+		msg['newpin'] = new_key_pin; 
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);         
+    }
+	
+	SSLUsbKeyLogin(appToken,gw_id,key_pin,notify_web)
+	{
+        var msg = this.InitCmdMsg(this.msgLogin, "");
+		msg['token'] = appToken;
+		msg['username'] ="";        
+		msg['password'] =key_pin;
+		msg['authtype']= "1"; 
+       	msg['svctype']= "1"; 
+		msg['gw_id']= gw_id;        
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);         
+    }
+    
+	SSLUserPwdLogin(appToken,gw_id,username,userpwd,notify_web)
+	{
+        var msg = this.InitCmdMsg(this.msgLogin, "");
+		msg['token'] = appToken;
+		msg['username'] =username;        
+		msg['password'] =userpwd;
+		msg['authtype']= "2"; 
+       	msg['svctype']= "1"; 
+		msg['gw_id']= gw_id;        
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);         
+    }
+	
+	IPSecUsbKeyLogin(appToken,gw_id,key_pin,notify_web)
+	{
+        var msg = this.InitCmdMsg(this.msgLogin, "");
+		msg['token'] = appToken;
+		msg['username'] ="";        
+		msg['password'] =key_pin;
+		msg['authtype']= "1"; 
+       	msg['svctype']= "2"; 
+		msg['gw_id']= gw_id;        
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);         
+    }
+	
+    Logout(appToken,notify_web)
+    {
+        var msg = this.InitCmdMsg(this.msgLogout, "");
+		msg['token'] = appToken;    
+       	this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);            
+    }
+
+	QuerySecPortalStatus(appToken,notify_web)
+	{
+		var msg = this.InitCmdMsg(this.msgQuerySecPortalStatus, "");
+		msg['token'] = appToken;
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);
+	}
+	
+	HeartBeat(appToken,notify_web)
+	{
+		var msg = this.InitCmdMsg(this.msgHeartBeat, "");
+		msg['token'] = appToken;
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);
+	}
+	
+	GetGateWayAddrList(notify_web)
+	{
+		var msg = this.InitCmdMsg(this.msgGetGateWayAddrList, "");
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);
+	}
+    
+	JsonActionTestCmdDeal(notify_web)
+	{
+		var msg = this.InitCmdMsg(this.msgTestAction, "");
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);
+	}
+	
+	IsAddonAvailable()
+	{
+		return this.isInstalled;
+	}
+	
+	AddonAvailableNotify(notify_web)
+	{		
+		if( notify_web === undefined)
+		{
+			alert('AddonAvailableNotify no set notify_web callback!');
+			return;
+		}
+		
+		this.AddonAvailableNotifyCB=notify_web;
+		var msg = this.InitCmdMsg(this.msgCheckExtensionInstalled, "");   
+		this.InsertCmdCBHandler(msg, notify_web);
+		this.BgRequest(msg);	
+	}	
+
+	BgRespone(msg)
+	{
+		vLog('BgRespone() rcv:' + msg);
+		var obj = JSON.parse(msg);
+		
+		if(obj.action == this.msgCheckExtensionInstalled)
+		{
+			if(this.AddonAvailableNotifyCB !== undefined)
+			{
+				obj['logid'] = this.msgCheckExtensionInstalled;
+			}
+		    else
+			{
+				this.isInstalled = 1;
+				return;
+			}
+		}
+
+		//var call = this.mCmdCbMap.get(obj.action);
+		var cb = this.mCmdCbMap.get(obj.logid);
+		if( cb !== undefined)
+		{
+			this.DeleteCmdCBHandler(obj);
+			if(obj.action == this.msgCheckExtensionInstalled)
+			{
+				this.isInstalled = 1;
+				obj['addon'] = this.isInstalled;
+				this.AddonAvailableNotifyCB(obj);
+			}
+			else
+			{
+				cb(obj.info);
+			}
+		}
+		else
+		{
+			vLog('OneNetHelper BgRespone() action error: ' + obj.action);
+		}
+	}
+	
+	BgRequest(msg)
+	{		
+		var that=this;
+		if(this.isInstalled == 1 || msg['action'] == this.msgCheckExtensionInstalled)
+		{
+			vLog('OneNetHelper BgRequest() send:' + JSON.stringify(msg));
+			var evt = window.top.document.createEvent("CustomEvent");  
+			evt.initCustomEvent(this.evtReqName, true, false, msg);	
+			window.top.document.dispatchEvent(evt);
+		}
+		else
+		{
+			vLog('OneNetHelper BgRequest() err: oneNetHelper extension current is not available;' + JSON.stringify(msg));
+            
+            this.DeleteCmdCBHandler(msg.logid);
+			
+		}
+	}
+}
+
+var oneNetHelper_webext=new COneNetHelper();
+
+//OneNetHandle: {"type":"ReqBg", "message":{"action":"GetUserInfo", "data":""}}
+window.top.document.addEventListener(oneNetHelper_webext.evtRespName, function(evt) 
+{
+	vLog('addEventListener::EventOneNetWeb():' + evt.detail);
+	oneNetHelper_webext.BgRespone(evt.detail);
+}, false);
+onenetHelperInit.Init();
+//(4) 判断onenethelper插件是否可用
+function IsAddonAvailable()
+{
+	var form1 = false
+	oneNetHelper.AddonAvailableNotify(AddonAvailableCb)
+	console.log(oneNetHelper.IsAddonAvailable(),"000")
+	if(oneNetHelper.IsAddonAvailable())
+	{
+		// form1.T01.value = "true";
+		form1 = true
+	}
+	else
+	{	
+		form1 = false
+		alert("请先安装插件!")
+//(5) 当onenethelper插件不可用时,调用通知接口加载插件
+		// oneNetHelper.AddonAvailableNotify(AddonAvailableCb);
+	}
+	return form1
+}
+
+function AddonAvailableCb(ob)
+{  
+	console.log(ob.addon)
+	// form1.T01.value=ob.addon;
+	return ob.addon
+}
+function GetSignAndToken(form1T8)
+{
+	
+	oneNetHelper.GetSignAndToken(form1T8, GetSignAndTokenCb);
+}
+function GetSignAndTokenCb(ob)
+{
+	//console.log('GetSignAndTokenCb return:' + JSON.stringify(ob));
+	// form1.T10.value=ob.ret;
+	var form1T9 = ""
+	if(ob.ret == 1)
+	{
+		form1T9 = ob.signandtoken;//获取组合令牌数据
+		// form1.T11.value="成功";
+		// axios({
+		// 				method: 'post', //
+		// 				url:' http://127.0.0.1:6006/webservice/verifyIdentityTicket ', // 配制api
+		// 				data: { // 配制参数
+		// 					challenge: form1.T8.value,//随机挑战数
+		// 					identityTicket:form1.T9.value,//组合令牌数据
+		// 					appServerID:'0'//服务器ID
+
+		// 				},
+		// 				headers: {
+
+		// 				}
+		// 			}).then(res => {
+		// 				if(res.expiresIn==7200) {
+
+		// 				}
+		// 			})
+	}
+	else
+	{
+		alert("获取组合令牌出错!")
+		// form1.T11.value=ob.errinfo;
+	}
+	return form1T9
+}
+export {
+	IsAddonAvailable,
+	GetSignAndToken,
+	GetSignAndTokenCb,
 }