/// <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; }
public int AuthenSelectArddess(string SPID,string ProvinceID, System.Web.HttpContext SpecificContext, string SPDataCacheName, out SSOAddressResp SSOAddress, out string ErrMsg) { int Result = 0; string ResultXML = ""; ErrMsg = ""; SSOAddress = new SSOAddressResp(); SSOAddress.AssertionAddress = ""; SSOAddress.SSOAddress = ""; XmlDocument xmldoc; XmlNode xmlnode; XmlElement xmlelem; XmlElement xmlelem2; XmlElement xmlelem3; XmlElement xmlelem4; XmlText xmltext; xmldoc = new XmlDocument(); //����XML���������� #region byte[] privateKeyFile=new byte[0]; string privateKeyPassword = ""; string UserName = ""; SPInfoManager spInfo = new SPInfoManager(); try { Object SPData = spInfo.GetSPData(SpecificContext, SPDataCacheName); privateKeyFile = spInfo.GetCAInfo(SPID, 1, SPData, out UserName, out privateKeyPassword); }catch(Exception err) { ErrMsg = err.Message; Result = -20001; } #endregion #region ����xml xmlnode = xmldoc.CreateNode(XmlNodeType.XmlDeclaration, "", ""); xmldoc.AppendChild(xmlnode); //����һ����Ԫ�� xmlelem = xmldoc.CreateElement("", "CAPRoot", ""); xmldoc.AppendChild(xmlelem); #region �Ự���� /////////////////////////////////////////// xmlelem2 = xmldoc.CreateElement("SessionHeader"); xmlelem2 = xmldoc.CreateElement("", "SessionHeader", ""); xmldoc.ChildNodes.Item(1).AppendChild(xmlelem2); xmlelem3 = xmldoc.CreateElement("ServiceCode"); xmlelem3 = xmldoc.CreateElement("", "ServiceCode", ""); xmltext = xmldoc.CreateTextNode(ServiceCode); xmlelem3.AppendChild(xmltext); xmlelem2.AppendChild(xmlelem3); xmlelem3 = xmldoc.CreateElement("Version"); xmlelem3 = xmldoc.CreateElement("", "Version", ""); xmltext = xmldoc.CreateTextNode(Version); xmlelem3.AppendChild(xmltext); xmlelem2.AppendChild(xmlelem3); xmlelem3 = xmldoc.CreateElement("ActionCode"); xmlelem3 = xmldoc.CreateElement("", "ActionCode", ""); xmltext = xmldoc.CreateTextNode(ActionCode); xmlelem3.AppendChild(xmltext); xmlelem2.AppendChild(xmlelem3); xmlelem3 = xmldoc.CreateElement("TransactionID"); xmlelem3 = xmldoc.CreateElement("", "TransactionID", ""); xmltext = xmldoc.CreateTextNode(TransactionID); xmlelem3.AppendChild(xmltext); xmlelem2.AppendChild(xmlelem3); xmlelem3 = xmldoc.CreateElement("SrcSysID"); xmlelem3 = xmldoc.CreateElement("", "SrcSysID", ""); xmltext = xmldoc.CreateTextNode(SrcSysID); xmlelem3.AppendChild(xmltext); xmlelem2.AppendChild(xmlelem3); //����(ϵͳ/ƽ̨)ǩ�� xmlelem3 = xmldoc.CreateElement("DigitalSign"); xmlelem3 = xmldoc.CreateElement("", "DigitalSign", ""); xmlelem2.AppendChild(xmlelem3); //��ط�(ϵͳ/ƽ̨)���� xmlelem3 = xmldoc.CreateElement("DstSysID"); xmlelem3 = xmldoc.CreateElement("", "DstSysID", ""); xmltext = xmldoc.CreateTextNode(DstSysID); xmlelem3.AppendChild(xmltext); xmlelem2.AppendChild(xmlelem3); xmlelem3 = xmldoc.CreateElement("ReqTime"); xmlelem3 = xmldoc.CreateElement("", "ReqTime", ""); xmltext = xmldoc.CreateTextNode(ReqTime); xmlelem3.AppendChild(xmltext); xmlelem2.AppendChild(xmlelem3); xmlelem3 = xmldoc.CreateElement("Request"); xmlelem3 = xmldoc.CreateElement("", "Request", ""); xmlelem2.AppendChild(xmlelem3); if (SSQReqLists.Length == 0) { xmlelem3 = xmldoc.CreateElement("Request"); xmlelem3 = xmldoc.CreateElement("", "Request", ""); xmlelem2.AppendChild(xmlelem3); xmlelem4 = xmldoc.CreateElement("ReqType"); xmlelem4 = xmldoc.CreateElement("", "ReqType", ""); xmlelem3.AppendChild(xmlelem4); xmlelem4 = xmldoc.CreateElement("ReqCode"); xmlelem4 = xmldoc.CreateElement("", "ReqCode", ""); xmlelem3.AppendChild(xmlelem4); xmlelem4 = xmldoc.CreateElement("ReqDesc"); xmlelem4 = xmldoc.CreateElement("", "ReqDesc", ""); xmlelem3.AppendChild(xmlelem4); } for (int i = 0; i < SSQReqLists.Length; i++) { SSQReqList ssqReq = new SSQReqList(); ssqReq = SSQReqLists[i]; xmlelem4 = xmldoc.CreateElement("ReqType"); xmlelem4 = xmldoc.CreateElement("", "ReqType", ""); xmltext = xmldoc.CreateTextNode(ssqReq.ReqType); xmlelem4.AppendChild(xmltext); xmlelem3.AppendChild(xmlelem4); xmlelem4 = xmldoc.CreateElement("ReqCode"); xmlelem4 = xmldoc.CreateElement("", "ReqCode", ""); xmltext = xmldoc.CreateTextNode(ssqReq.ReqCode); xmlelem4.AppendChild(xmltext); xmlelem3.AppendChild(xmlelem4); xmlelem4 = xmldoc.CreateElement("ReqDesc"); xmlelem4 = xmldoc.CreateElement("", "ReqDesc", ""); xmltext = xmldoc.CreateTextNode(ssqReq.ReqDesc); xmlelem4.AppendChild(xmltext); xmlelem3.AppendChild(xmlelem4); } #endregion #region ҵ����� ////////////////////////////////////// xmlelem2 = xmldoc.CreateElement("SessionBody"); xmlelem2 = xmldoc.CreateElement("", "SessionBody", ""); xmldoc.ChildNodes.Item(1).AppendChild(xmlelem2); xmlelem3 = xmldoc.CreateElement("SPSSOAuthReq"); xmlelem3 = xmldoc.CreateElement("", "SPSSOAuthReq", ""); xmlelem2.AppendChild(xmlelem3); // xmldoc.ChildNodes.Item(2).AppendChild(xmlelem2); xmlelem4 = xmldoc.CreateElement("ProvinceID"); xmlelem4 = xmldoc.CreateElement("", "ProvinceID", ""); xmltext = xmldoc.CreateTextNode(ProvinceID); xmlelem4.AppendChild(xmltext); xmlelem3.AppendChild(xmlelem4); #endregion ResultXML = xmldoc.OuterXml; ResultXML = ResultXML.Substring(ResultXML.IndexOf("<CAPRoot>")); ResultXML = ResultXML.Replace("<DigitalSign />", "<DigitalSign/>"); Result = AddDigitalSignXML(ResultXML, privateKeyFile, privateKeyPassword, out ResultXML, out ErrMsg); #endregion try { #region ���͵��ͻ��� UaService u = new UaService(); u.Url = System.Configuration.ConfigurationManager.AppSettings["GetInfoByTicketURL"]; string req = ""; req = u.authReq(ResultXML); #endregion #region SSOAddress.SSOAddress = GetValueFromXML(req, "SSOAddress") == null ? "" : GetValueFromXML(req, "SSOAddress"); SSOAddress.AssertionAddress = GetValueFromXML(req, "AssertionAddress") == null ? "" : GetValueFromXML(req, "AssertionAddress"); #endregion } catch (Exception err) { ErrMsg = err.Message; Result = -20001; } finally { #region #endregion } return Result; }