/// <summary> /// ����ticket��ʡua��ѯ���Բ����н��� /// </summary> /// <param name="UATicket"></param> /// <param name="privateKeyFile"></param> /// <param name="UATicket"></param> /// <param name="PublicKeyFile"></param> /// <param name="UATicketXML"></param> /// <param name="ErrMsg"></param> /// <returns></returns> public int SendUATicket(string UAProvinceID,string SPID, string UATicket, string URL, System.Web.HttpContext SpecificContext, string SPDataCacheName, string TransactionID, out BilByCompilingResult bbcResult, out string UATicketXML, out string ErrMsg) { UATicketXML = ""; ErrMsg = ""; int Result = -19999; bbcResult = new BilByCompilingResult(); bbcResult.Result = -19999; StringBuilder strLog = new StringBuilder(); #region byte[] privateKeyFile = new byte[0]; string privateKeyPassword = ""; string UserName = ""; byte[] PublicKeyFile = new byte[0]; SPInfoManager spInfo = new SPInfoManager(); try { Object SPData = spInfo.GetSPData(SpecificContext, SPDataCacheName); PublicKeyFile=spInfo.GetCAInfo(SPID, 0, SPData, out UserName, out privateKeyPassword); privateKeyFile = spInfo.GetCAInfo("35999991", 1, SPData, out UserName, out privateKeyPassword); } catch (Exception err) { ErrMsg = err.Message; Result = -20001; return Result; } #endregion try { //ƴ�ղ�ѯ���Ե�xml Result = GetUATicketXML(UAProvinceID, UATicket, privateKeyFile, privateKeyPassword, TransactionID, out UATicketXML, out ErrMsg); //log("���͵�:" + UATicketXML); strLog.AppendFormat("���Բ�ѯ������:{0}\r\n", UATicketXML); if (Result != 0) return Result; /******************************************/ string NewXML = ""; try { //���Բ�ѯ UaService u = new UaService(); u.Url = URL;// System.Configuration.ConfigurationManager.AppSettings["GetInfoByTicketURL"]; NewXML = u.SelectAssertion(UATicketXML); //log("���ܣ�" + NewXML); strLog.AppendFormat("���Բ�ѯ���ر��ģ�{0}\r\n", NewXML); } catch (System.Exception ex) { //log("����" + ex.Message); strLog.AppendFormat("�쳣:{0}\r\n", ex.Message); } string DigitalSign = GetNewXML(NewXML, "DigitalSign"); string OldXML = GetValueFromXML(NewXML, "DigitalSign"); //��֤ Result = VerifySignByPublicKey(DigitalSign, PublicKeyFile, OldXML, out ErrMsg); //log("��֤ǩ����" + Result + "==" + ErrMsg); strLog.AppendFormat("ǩ����֤���:{0},{1}\r\n", Result, ErrMsg); if (Result != 0) return Result; //���� bbcResult = BilByCompiling(DigitalSign); ErrMsg = bbcResult.ErrMsg; Result = bbcResult.Result; if (Result != 0) return Result; } catch (Exception err) { ErrMsg = err.Message; Result = -20009; log(Result + "--" + ErrMsg); log(err.StackTrace); return Result; } finally { log(strLog.ToString()); } return Result; }
/// <summary> /// ���Խ��� /// </summary> /// <param name="UATicket">����</param> /// <returns>BilByCompilingResult</returns> public BilByCompilingResult BilByCompiling(string UATicketXML) { BilByCompilingResult Result = new BilByCompilingResult(); // string DigitalSign = GetValueFromXML(UATicketXML, "DigitalSign"); // Result.Result = VerifySignByPublicKey(UATicketXML, PublicKeyFile, DigitalSign, out Result.ErrMsg); Result.Assertion = GetValueFromXML(UATicketXML, "Assertion"); Result.AccountID = GetValueFromXML(UATicketXML, "AccountID"); Result.AccountType = GetValueFromXML(UATicketXML, "AccountType"); Result.AudienceID = GetValueFromXML(UATicketXML, "AudienceID"); Result.AuthInstant = GetValueFromXML(UATicketXML, "AuthInstant"); Result.AuthMethod = GetValueFromXML(UATicketXML, "AuthMethod"); Result.ProvinceID = GetValueFromXML(UATicketXML, "ProvinceID"); Result.IssueInstant = GetValueFromXML(UATicketXML, "IssueInstant"); Result.NotBefore = GetValueFromXML(UATicketXML, "NotBefore"); Result.NotOnOrAfter = GetValueFromXML(UATicketXML, "NotOnOrAfter"); Result.UA_URL = GetValueFromXML(UATicketXML, "UA_URL"); Result.UAID = GetValueFromXML(UATicketXML, "UAID"); AuthenRecord[] AccountInfos = GetAccountInfoFromXML(UATicketXML); Result.AccountInfos = AccountInfos; switch (Result.AccountType) { case "2000001": Result.AccountType = "9"; break; case "2000002": Result.AccountType = "11"; break; case "2000003": Result.AccountType = "10"; break; case "2000004": Result.AccountType = "7"; break; case "0000000": Result.AccountType = "99"; break; case "0000001": Result.AccountType = "5"; break; default: Result.AccountType = "-1"; break; } return Result; }