Beispiel #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;
        }
Beispiel #2
0
        /// <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;
        }