Ejemplo n.º 1
0
    protected void QueryAssertionByTicket()
    {
        MBOSSClass mboss = new MBOSSClass();
        StringBuilder strLog = new StringBuilder();
        string xml = "";
        int Result = -19999;
        string ErrMsg = String.Empty;
        string UAProvinceID = "35";
        string SPID = UAProvinceID + "999991";
        string CustID = "", RealName = "", NickName = "", UserName = "", OutID = "", UserAccount = "", CustType = "", ProvinceID = "", AuthenName = "", AuthenType = "";
        string AssertionAddress = String.Empty;
        string SSOAddress = String.Empty;
        string SecretKey = String.Empty;
        try
        {
            //获取到集团断言查询地址,这里要注意个问题,取地址是从数据库中去,测试库上的地址已经改为新的断言地址,在正式库上是否要改?
            Result = mboss.GetMBOSSAddress(this.Context, SPID, out AssertionAddress, out SSOAddress, out ErrMsg);
            if (Result != 0)
            {
                strLog.Append("没有获取到集团断言查询地址;\r\n");
                //SendJF();   没有获取到集团断言查询地址
                return;
            }
            PageUtility.SetCookie(AssertionAddress, "AssertionAddress", this.Page);
            PageUtility.SetCookie(SSOAddress, "SSOAddress", this.Page);
            //35000 20130808 5146985330
            string TransactionID = "35000" + DateTime.Now.ToString("yyyyMMdd") + Convert.ToString(LongRandom(1000000000, 9999999999, new Random()));                   //获取流水号
            //密钥
            Result = mboss.GetMBOSSSecretKey(this.Context, SPID, out SecretKey, out ErrMsg);
            if (Result != 0)
            {
                strLog.Append("没有获取到密钥;\r\n");
                //没有获取到密钥;
                return;
            }

            //断言
            MBOSSClass.BilByCompilingResult bil = new MBOSSClass.BilByCompilingResult();
            //查询断言并解析
            Result = mboss.SendUATicket(UAProvinceID, SPID, UATicket, AssertionAddress, this.Context, "SPCAData", TransactionID, out bil, out xml, out ErrMsg);
            AuthenType = bil.AccountType;
            AuthenName = bil.AccountID;
            strLog.AppendFormat("断言查询返回的报文:{0}\r\n",xml);
            if (Result != 0)
            {
                //Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=请从网厅登陆1&FunctionName=请从网厅登陆1", true);
                Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=断言解析错误!", true);
                return;
            }

            //用户入库是否存在,没有则新增,有则update
            string dealType = String.Empty;
            int  type = 0;
            string areaid = String.Empty;

            Result = BTForBusinessSystemInterfaceRules.MUserAuthV2(SPID, UAProvinceID, bil.AccountID, bil.AccountType, bil.AccountInfos, Context,
            out  ErrMsg, out  CustID, out  UserAccount, out  CustType, out  OutID, out  ProvinceID,
            out  RealName, out  UserName, out  NickName, out dealType, out type, out areaid);

            if (Result != 0)
            {
                Response.Redirect("../ErrorInfo.aspx?Result=" + Result + "&ErrorInfo=" + ErrMsg + "&FunctionName=请从网厅登陆4", true);
                return;
            }

            //如果客户信息不全,则去crm查询一把  这里要注意的是,必须根据集团返回的断言中的UAID 当成省码传给枢纽
            string TestStr = String.Empty;
            Result = CrmSSO.UserAuthCrm1(bil.ProvinceID, bil.AccountInfos[0].areaid, bil.AccountType, bil.AccountID, UAProvinceID, "", "0", UAProvinceID + "999991", this.Context, out RealName, out UserName, out NickName, out OutID, out CustType, out CustID, out ErrMsg, out TestStr);
            if (Result != 0)
            {
                Response.Redirect("../ErrorInfo.aspx?Result=" + Result + "&ErrorInfo=" + ErrMsg + "&FunctionName=请从网厅登陆5", true);
                return;
            }
            strLog.Append(Result + "==" + UAProvinceID + "=UAProvinceID;" + bil.AccountType + " =bil.AccountType;" + bil.AccountID + "=bil.AccountID;" + "" + "" + RealName + "=RealName;" + UserName + "=UserName;" + NickName + "=NickName;" + OutID + "=OutID;" + CustType + "=CustType;" + CustID + "=CustID1;" + ErrMsg + "=ErrMsg\r\n");
            if (dealType == "0")            //通知积分系统
                CIP2BizRules.InsertCustInfoNotify(CustID, "2", System.Configuration.ConfigurationManager.AppSettings["ScoreBesttoneSPID"], "", "0", out ErrMsg);

            //生成ticket
            Result = CIPTicketManager.insertCIPTicket(TransactionID, SPID, CustID, RealName, NickName, UserName, OutID, "", AuthenName, AuthenType, out ErrMsg);
            Response.Redirect(ReturnUrl + "?Ticket=" + TransactionID);
        }
        catch (Exception e)
        {
            strLog.AppendFormat(e.Message);
        }
        finally
        {
            try
            {
                CommonBizRules.WriteDataCustAuthenLog(SPID, CustID, ProvinceID, AuthenType, AuthenName, "2", Result, ErrMsg);

            }
            catch { }
        }
    }
Ejemplo n.º 2
0
    protected void ssoFunc()
    {
        string QH = System.Configuration.ConfigurationManager.AppSettings["HQList"];
        //上海,广州处理
        string UAOUTID = System.Configuration.ConfigurationManager.AppSettings["UAOUTIDLIst"];

        string UAProvinceID =Request.Cookies["UAProvinceID"].Value.ToString();
        //是否是SSO的省
        if (QH.IndexOf(UAProvinceID) < 0 && UAOUTID.IndexOf(UAProvinceID) < 0)
        {
            Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=未开通单点登录&FunctionName=请从 http://jf.ct10000.com 直接登入集团积分商城", true);
            return;
        }

        MBOSSClass mboss = new MBOSSClass();
        string AssertionAddress = Request.Cookies["AssertionAddress"].Value.ToString();             //获取断言查询地址
        string TransactionID = Request.Cookies["TransactionID"].Value.ToString();                   //获取流水号

        string xml="";
        int result = -19999;
        string ErrMsg = "";

        string SPID = UAProvinceID + "999991";
        string CustID = "", RealName = "",NickName = "",UserName = "",OutID = "",UserAccount = "",CustType = "",ProvinceID = "" ,AuthenName = "",AuthenType = "";
        try
        {

            SPInfoManager spInfo = new SPInfoManager();
            Object SPData = spInfo.GetSPData(this.Context, "SPData");
            //密钥
            string key = spInfo.GetPropertyBySPID(SPID, "SecretKey", SPData);
            //断言
            MBOSSClass.BilByCompilingResult bil = new MBOSSClass.BilByCompilingResult();
            //查询断言并解析
            result = mboss.SendUATicket(UAProvinceID,SPID, UATicket, AssertionAddress, this.Context, "SPCAData",TransactionID, out bil, out xml, out ErrMsg);
            AuthenType = bil.AccountType;
            AuthenName = bil.AccountID;

            if (result != 0)
            {
                Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=请从网厅登陆1&FunctionName=请从网厅登陆1", true);
                return;
            }
            //用户入库是否存在
            int type=0;
            string p = bil.AccountID;
            string dealType = "";
            string areaid = "";
            string jtUAProvinceID = "";

            log("UAProvinceID:集团ua:" + UAProvinceID );

            if ("35".Equals(UAProvinceID))
            {
                if (!"".Equals(bil.ProvinceID))
                    jtUAProvinceID = bil.ProvinceID;
                else
                    jtUAProvinceID = UAProvinceID;

                result = 0;
                type = 1;
            }
            else
            {
                result = BTForBusinessSystemInterfaceRules.MUserAuthV2(SPID, UAProvinceID, bil.AccountID, bil.AccountType, bil.AccountInfos, Context,
                    out  ErrMsg, out  CustID, out  UserAccount, out  CustType, out  OutID, out  ProvinceID,
                    out  RealName, out  UserName, out  NickName, out dealType, out type, out areaid);
                log(bil.ProvinceID+"-!35-BTForBusinessSystemInterfaceRules.MUserAuthV2:" + result + "-bil.ProvinceID=" + bil.ProvinceID + "-UAProvinceID=" + UAProvinceID + "-areaid=" + areaid + "-custid=" + CustID + "-OutID=" + OutID + "-ErrMsg=" + ErrMsg);
            }

            string CustID1 = CustID;
            string RealName1="";
            string UserName1="";
            string NickName1="";
            string CustType1="";
            log("MUserAuthV2:" + result + ";CustID=" + CustID + " @----@" + ErrMsg + "==" + type);
            if (result!=0)
            {
                Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo="+ErrMsg+"&FunctionName=请从网厅登陆2", true);
                return;
            }
            //模式3情况下,获取证件号和类型
            string TestStr = "";
            if (type == 1 )
            {
                string OutID1 = "";
                if (QH.IndexOf(UAProvinceID) >= 0)
                {
                    if (bil.AccountType == "9" || bil.AccountType == "10" || bil.AccountType == "11")
                    {
                        if (areaid != "")
                        {
                            bil.AccountID = areaid + "-" + bil.AccountID;
                        }
                    }
                }
                else if (UAOUTID.IndexOf(UAProvinceID) >= 0)
                {
                    bil.AccountID = OutID;
                    bil.AccountType = "99";

                    RealName = bil.AccountID;
                }
                else
                {
                    if (bil.AccountType == "9" || bil.AccountType == "10" || bil.AccountType == "11")
                    {
                        string phone = "";
                        areaid = BTForBusinessSystemInterfaceRules.PhoneToArea(UAProvinceID, bil.AccountID, out phone);
                        if (areaid != "")
                        {
                            bil.AccountID = areaid +"-"+ phone;
                        }
                    }
                }

                int result1 = -1234;
                if ("35".Equals(UAProvinceID))
                {
                    log("CrmSSO.UserAuthCrm1:provinceid=" + bil.ProvinceID + ";areacode:" + bil.AccountInfos[0].areaid + ";accountid:" + bil.AudienceID + "|TestStr=" + TestStr);
                    result1 = CrmSSO.UserAuthCrm1(bil.ProvinceID, bil.AccountInfos[0].areaid, bil.AccountType, bil.AccountID, p, "", "0", UAProvinceID + "999991", this.Context, out RealName1, out UserName1, out NickName1, out OutID1, out CustType1, out CustID1, out ErrMsg, out TestStr);
                }
                else {
                    result1 = CrmSSO.UserAuthCrm(UAProvinceID, bil.AccountType, bil.AccountID, p, "", "0", UAProvinceID + "999991", this.Context, out RealName1, out UserName1, out NickName1, out OutID1, out CustType1, out CustID1, out ErrMsg, out TestStr);
                }

                if (result1 == 0)
                {
                    OutID = OutID1;
                    CustID = CustID1;
                    CustType = CustType1;
                }
                else {
                    Response.Redirect("../ErrorInfo.aspx?Result="+result1+"&ErrorInfo=" + ErrMsg + "&FunctionName=请从网厅登陆5", true);
                    return;
                }
                UserName = RealName1;
                NickName = RealName1;
                log(result1 + "==" + UAProvinceID + "=UAProvinceID;" + bil.AccountType + " =bil.AccountType;" + bil.AccountID + "=bil.AccountID;" + "" + "" + RealName + "=RealName;" + UserName + "=UserName;" + NickName +
                 "=NickName;" + OutID + "=OutID;" + CustType + "=CustType;" + CustID + "=CustID1;" + ErrMsg + "=ErrMsg");
            }

            if (dealType == "0" )            //通知积分系统
                CIP2BizRules.InsertCustInfoNotify(CustID, "2", System.Configuration.ConfigurationManager.AppSettings["ScoreBesttoneSPID"], "", "0", out ErrMsg);

            //生成cookie
            UserToken UT = new UserToken();
            string UserTokenValue = UT.GenerateUserToken(CustID, RealName, UserName, NickName, OutID, CustType,AuthenName,AuthenType,key, out ErrMsg);
            string CookieName = System.Configuration.ConfigurationManager.AppSettings["CookieName"];
            PageUtility.SetCookie(UserTokenValue, CookieName, this.Page);

            //生成ticket
            result = CIPTicketManager.insertCIPTicket(TransactionID, SPID, CustID, RealName, NickName, UserName, OutID, "", AuthenName, AuthenType, out ErrMsg);
            log("insertCIPTicket:" + ErrMsg + result);
            if (result != 0)
            {
                Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=请从网厅登陆3&FunctionName=请从网厅登陆3", true);
                return;
            }

            string Url = Request.Cookies["ReturnURL"].Value.ToString(); // System.Configuration.ConfigurationManager.AppSettings["SSOReturnURL"]; ;

            PageUtility.ExpireCookie("ReturnURL", this.Page);
            PageUtility.ExpireCookie("SPID", this.Page);
            PageUtility.ExpireCookie("UAProvinceID", this.Page);
            PageUtility.ExpireCookie("TransactionID", this.Page);

            Response.Redirect(Url + "?Ticket=" + TransactionID);
        }
        catch (System.Exception ex)
        {
            ErrMsg=ex.Message;
        }
        finally
        {
            try
            {
                CommonBizRules.WriteDataCustAuthenLog(SPID, CustID, ProvinceID, AuthenType, AuthenName,"2", result, ErrMsg);
            }
            catch { }
        }
    }
Ejemplo n.º 3
0
    public static int SendUATicket(string UAProvinceID,string SPID,string ticket, string CustID, string URL, HttpContext SpecificContext, string SPDataCacheName, string ExtendField,string TransactionID, out string ErrMsg, out string newExtendField)
    {
        int result = -20005;
        //byte[] privateKeyFile;
        //byte[] publicKeyFile;
        //string privateKeyPassword = "";
        //string UserName = "";
        string ticketXML = "";
        newExtendField = "";
        ErrMsg = "";

        MBOSSClass.BilByCompilingResult bcr = new MBOSSClass.BilByCompilingResult();

        //SPInfoManager spInfo = new SPInfoManager();
        MBOSSClass mbss = new MBOSSClass();

        try
        {
            //Object SPData = spInfo.GetSPData(SpecificContext, SPDataCacheName);
            //publicKeyFile = spInfo.GetCAInfo("35111111", 0, SPData, out UserName, out privateKeyPassword);
            //privateKeyFile = spInfo.GetCAInfo("35111111", 1, SPData, out UserName, out privateKeyPassword);
            result = mbss.SendUATicket(UAProvinceID,SPID, ticket, URL, SpecificContext, SPDataCacheName, TransactionID, out bcr, out ticketXML, out ErrMsg);
        }
        catch (Exception err)
        {
            result = -20006;
            ErrMsg = err.Message;
        }
        finally
        {
            #region WriteLog
            StringBuilder msg = new StringBuilder();
            msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\n");
            msg.Append(" CAP02001票据解读接口 " + DateTime.Now.ToString("u") + "\r\n");
            msg.Append(";ticket - " + ticket);
            msg.Append(";SpecificContext - " + SpecificContext);
            msg.Append(";SPDataCacheName - " + SPDataCacheName + "\r\n");
            msg.Append(";ExtendField - " + ExtendField);
            msg.Append("\r\n");

            msg.Append("处理结果 - " + result);
            msg.Append("UATicketXML - " + ticketXML);
            msg.Append("; 错误描述 - " + ErrMsg);
            msg.Append("; ExtendField - " + newExtendField + "\r\n");
            msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n");

            BTUCenterInterfaceLog.CenterForBizTourLog("SendUATicket", msg);
            #endregion
        }
        return result;
    }
Ejemplo n.º 4
0
    /// <summary>
    /// CAP02001票据解读函数,省ua认证|取断言地址
    /// </summary>
    /// <param name="UATicket">断言</param>       
    /// <returns>BilByCompilingResult</returns>
    public MBOSSClass.BilByCompilingResult BilByCompiling(string UATicketXML)
    {
        MBOSSClass.BilByCompilingResult Result = new MBOSSClass.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.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");

            MBOSSClass.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;
    }