Ejemplo n.º 1
0
        /// <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;
        }
Ejemplo n.º 2
0
        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;
        }