예제 #1
0
    protected void ssoFunc()
    {
        string Url = "";

        try
        {
            //生成ticket
            //string sDate = DateTime.Now.ToString("yyyyMMddHHmmssfff");
            //Random r = new Random();
            //string Ticket = sDate + r.Next(10000, 99999).ToString();
            string Ticket = CommonBizRules.CreateTicket();

            string CustID          = TokenValidate.CustID;
            string RealName        = TokenValidate.RealName;
            string NickName        = TokenValidate.NickName;
            string UserName        = TokenValidate.UserName;
            string OutID           = TokenValidate.OuterID;
            string LoginAuthenName = TokenValidate.LoginAuthenName;
            string LoginAuthenType = TokenValidate.LoginAuthenType;

            String er = "";

            Result = CIPTicketManager.insertCIPTicket(Ticket, SPID, CustID, RealName, NickName, UserName, OutID, "", LoginAuthenName, LoginAuthenType, out er);

            if (Result != 0)
            {
                err_code.InnerHtml = er;
                return;
            }

            if (ReturnURL.IndexOf("?") > 0)
            {
                Url = ReturnURL + "&Ticket=" + Ticket;
            }
            else
            {
                Url = ReturnURL + "?Ticket=" + Ticket;
            }

            if (CommonUtility.IsParameterExist("NeedLogin", this.Page))
            {
                Url = Url + "&NeedLogin="******"NeedLogin"];
            }

            if (ReturnURL == "")
            {
                Response.Redirect("http://www.118114.cn/");
            }
            else
            {
                Response.Redirect(Url, false);
            }
        }

        catch (Exception e)
        {
            err_code.InnerHtml = e.Message + ">>ReturnURL:" + Url;
        }
    }
예제 #2
0
    protected void sendTicket2UA(string url)
    {
        int    Result = ErrorDefinition.IError_Result_UnknowError_Code;
        string Url    = "";

        try
        {
            string Ticket = CommonBizRules.CreateTicket();
            //string sDate = DateTime.Now.ToString("yyyyMMddHHmmssfff");
            //Random r = new Random();
            //Ticket = sDate + r.Next(10000, 99999).ToString();

            string SPID            = "35999999";
            string CustID          = TokenValidate.CustID;
            string RealName        = TokenValidate.RealName;
            string NickName        = TokenValidate.NickName;
            string UserName        = TokenValidate.UserName;
            string OutID           = TokenValidate.OuterID;
            string LoginAuthenName = TokenValidate.LoginAuthenName;
            string LoginAuthenType = TokenValidate.LoginAuthenType;

            String er = "";

            Result = CIPTicketManager.insertCIPTicket(Ticket, SPID, CustID, RealName, NickName, UserName, OutID, "", LoginAuthenName, LoginAuthenType, out er);

            if (Result != 0)
            {
                return;
            }


            if (url.IndexOf("?") > 0)
            {
                Url = url + "&UATicket=" + Ticket;
            }
            else
            {
                Url = url + "?UATicket=" + Ticket;
            }



            if (url == "")
            {
                Response.Redirect("http://www.118114.cn/");
            }
            else
            {
                Response.Redirect(Url, false);
            }
        }

        catch (Exception e)
        {
            return;
        }
    }
예제 #3
0
    protected void sendTicket2JF(string ticket, string CustID, string RealName, string UserAccount, string OutID, string UserName, string AuthenName, string AuthenType, string NickName)
    {
        int    Result   = ErrorDefinition.IError_Result_UnknowError_Code;
        int    Result00 = ErrorDefinition.IError_Result_UnknowError_Code;
        string Url      = "";

        try
        {
            string SPID = "35000050";

            string LoginAuthenName = TokenValidate.LoginAuthenName;
            string LoginAuthenType = TokenValidate.LoginAuthenType;
            LoginAuthenName = AuthenName;
            LoginAuthenType = AuthenType;

            String er = "";
            Result = CIPTicketManager.insertCIPTicket(ticket, SPID, CustID, RealName, NickName, UserName, OutID, "", LoginAuthenName, LoginAuthenType, out er);
            log("ticket:" + ticket + "\r\n");
            log("insertCIPTicket-Result:" + Result + "\r\n");
            log("insertCIPTicket-errmsg:" + er + "\r\n");

            //string er00 = "";
            //Result00 = CIPTicketManager.insertUAMTicket(ticket, SPID, CustID, RealName, NickName, UserName, OutID, "", LoginAuthenName, LoginAuthenType, out er00);
            //log("insertUAMTicket-Result00:" + Result00 + "\r\n");
            //log("insertUAMTicket-errmsg:" + er00 + "\r\n");

            if (Result != 0)
            {
                return;
            }

            if (ReturnURL.IndexOf("?") > 0)
            {
                Url = ReturnURL + "&Ticket=" + ticket;
            }
            else
            {
                Url = ReturnURL + "?Ticket=" + ticket;
            }

            if (ReturnURL == "")
            {
                Response.Redirect("http://www.118114.cn/");
            }
            else
            {
                Response.Redirect(Url, false);
            }
        }
        catch (Exception e)
        {
            return;
        }
    }
예제 #4
0
    protected void ssoFunc()
    {
        string Url = "";

        try
        {
            string Ticket = CommonBizRules.CreateTicket();

            string CustID   = TokenValidate.CustID;
            string RealName = TokenValidate.RealName;
            string NickName = TokenValidate.NickName;
            string UserName = TokenValidate.UserName;
            string OutID    = TokenValidate.OuterID;
            OutID = "99999";
            string LoginAuthenName = TokenValidate.LoginAuthenName;
            string LoginAuthenType = TokenValidate.LoginAuthenType;
            log(String.Format("ssoFunc: TokenValidate.RealName:{0},TokenValidate.NickName:{1},TokenValidate.UserName:{2},TokenValidate.LoginAuthenName:{3},TokenValidate.LoginAuthenType:{4}",
                              TokenValidate.RealName, TokenValidate.NickName, TokenValidate.UserName, TokenValidate.LoginAuthenName, TokenValidate.LoginAuthenType));
            String er = "";
            Result = CIPTicketManager.insertCIPTicket(Ticket, SPID, CustID, RealName, UserName, NickName, OutID, "", LoginAuthenName, LoginAuthenType, out er);

            if (Result != 0)
            {
                errorHint.InnerHtml = er;
                return;
            }

            if (ReturnURL.IndexOf("?") > 0)
            {
                Url = ReturnURL + "&Ticket=" + Ticket;
            }
            else
            {
                Url = ReturnURL + "?Ticket=" + Ticket;
            }

            if (CommonUtility.IsParameterExist("NeedLogin", this.Page))
            {
                Url = Url + "&NeedLogin="******"NeedLogin"];
            }
            Response.AddHeader("P3P", "CP=CAO PSA OUR");
            Response.Redirect(Url, false);
        }

        catch (Exception e)
        {
            errorHint.InnerHtml = e.Message + ">>ReturnURL:" + Url;
        }
    }
예제 #5
0
    protected void ssoFunc()
    {
        string Url = "";

        try
        {
            string Ticket = CommonBizRules.CreateTicket();

            string CustID          = TokenValidate.CustID;
            string RealName        = TokenValidate.RealName;
            string NickName        = TokenValidate.NickName;
            string UserName        = TokenValidate.UserName;
            string OutID           = TokenValidate.OuterID;
            string LoginAuthenName = TokenValidate.LoginAuthenName;
            string LoginAuthenType = TokenValidate.LoginAuthenType;
            log(String.Format("ssoFunc: TokenValidate.RealName:{0},TokenValidate.NickName:{1},TokenValidate.UserName:{2},TokenValidate.LoginAuthenName:{3},TokenValidate.LoginAuthenType:{4}", TokenValidate.RealName, TokenValidate.NickName, TokenValidate.UserName, TokenValidate.LoginAuthenName, TokenValidate.LoginAuthenType));
            String er = "";
            Result = CIPTicketManager.insertCIPTicket(Ticket, SPID, CustID, RealName, UserName, NickName, OutID, "", LoginAuthenName, LoginAuthenType, out er);

            if (Result != 0)
            {
                Response.Redirect(ReturnURL, false);
                //return;
            }

            if (ReturnURL.IndexOf("?") > 0)
            {
                Url = ReturnURL + "&Ticket=" + Ticket;
            }
            else
            {
                Url = ReturnURL + "?Ticket=" + Ticket;
            }
            Response.Redirect(Url, false);
        }

        catch (Exception e)
        {
            log(e.ToString());
        }
    }
예제 #6
0
    /// <summary>
    /// 开始UDBSSO功能
    /// </summary>
    protected void ProcessUnifyPlatformReturn()
    {
        StringBuilder strMsg = new StringBuilder();
        Int32         Result = ErrorDefinition.BT_IError_Result_UnknowError_Code;
        String        ErrMsg = ErrorDefinition.BT_IError_Result_UnknowError_Msg;

        try
        {
            #region 获取参数并验证

            SPID      = Request["SPID"];
            ReturnUrl = Request["ReturnUrl"] == null ? String.Empty : Request["ReturnUrl"];
            LSID      = Request["LSID"];
            appId     = Request["appId"];
            paras     = Request["paras"];
            sign      = Request["sign"];

            string unifyPlatform_appId        = UDBConstDefinition.DefaultInstance.UnifyPlatformAppId;     //System.Configuration.ConfigurationManager.AppSettings["unifyPlatform_appId"];
            string unifyPlatform_appSecretKey = UDBConstDefinition.DefaultInstance.UnifyPlatformAppSecret; //System.Configuration.ConfigurationManager.AppSettings["unifyPlatform_appSecretKey"];


            strMsg.AppendFormat("【验证参数,DateTime:{0}】:SPID:{1},LSID:{2},ReturnUrl:{3},appId:{4},paras:{5},sign:{6}\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), SPID, LSID, ReturnUrl, appId, paras, sign);

            string unifyPlatformResponse = CryptographyUtil.XXTeaDecrypt(paras, unifyPlatform_appSecretKey);
            strMsg.AppendFormat("unifyPlatformResponse:{0}\r\n", unifyPlatformResponse);
            string newsign = CryptographyUtil.HMAC_SHA1(unifyPlatform_appId + paras, unifyPlatform_appSecretKey);
            strMsg.AppendFormat("newsign:{0},sign:{1}\r\n", newsign, sign);
            strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
            if (!newsign.Equals(sign))
            {
                Redirect("ErrMsg", "签名不正确");
            }

            //paras {result,accessToken,timeStamp,userId,productUid,loginNum,nickName,userIconUrl,userIconUrl2,userIconUrl3,isThirdAccount}
            string result         = "";
            string accessToken    = "";
            string timeStamp      = "";
            long   userId         = 0;
            string productUid     = "";
            string loginNum       = "";
            string nickName       = "";
            string userIconUrl    = "";
            string userIconUrl2   = "";
            string userIconUrl3   = "";
            string isThirdAccount = "";


            Dictionary <String, String> parames = new Dictionary <string, string>();
            strMsg.Append("开始解析unifyPlatformResponse\r\n");
            try
            {
                parames = splitParameters(unifyPlatformResponse);
                strMsg.AppendFormat("params:{0}\r\n", parames);
            }
            catch (Exception exp)
            {
                strMsg.AppendFormat(exp.ToString());
            }
            strMsg.Append("解析unifyPlatformResponse完毕\r\n");
            foreach (KeyValuePair <String, String> p in parames)
            {
                if (p.Key.Equals("result"))
                {
                    result = p.Value;
                    strMsg.AppendFormat("result:{0}\r\n", result);
                }
                if (p.Key.Equals("accessToken"))
                {
                    accessToken = p.Value;
                    strMsg.AppendFormat("accessToken:{0}\r\n", accessToken);
                }
                if (p.Key.Equals("timeStamp"))
                {
                    timeStamp = p.Value;
                    strMsg.AppendFormat("timeStamp:{0}\r\n", timeStamp);
                }
                if (p.Key.Equals("userId"))
                {
                    if (!String.IsNullOrEmpty(p.Value))
                    {
                        try
                        {
                            userId = userId = System.Int64.Parse(p.Value);
                        }
                        catch (Exception e)
                        {
                            userId = 0;
                        }
                    }
                    else
                    {
                        userId = 0;
                    }


                    strMsg.AppendFormat("userId:{0}\r\n", userId);
                }
                if (p.Key.Equals("productUid"))
                {
                    productUid = p.Value;
                    strMsg.AppendFormat("productUid:{0}\r\n", productUid);
                }
                if (p.Key.Equals("loginNum"))
                {
                    loginNum = p.Value;
                    strMsg.AppendFormat("loginNum:{0}\r\n", loginNum);
                }
                if (p.Key.Equals("nickName"))
                {
                    nickName = p.Value;
                    strMsg.AppendFormat("nickName:{0}\r\n", nickName);
                }
                if (p.Key.Equals("userIconUrl"))
                {
                    userIconUrl = p.Value;
                    strMsg.AppendFormat("userIconUrl:{0}\r\n", userIconUrl);
                }
                if (p.Key.Equals("userIconUrl2"))
                {
                    userIconUrl2 = p.Value;
                    strMsg.AppendFormat("userIconUrl2:{0}\r\n", userIconUrl2);
                }
                if (p.Key.Equals("userIconUrl3"))
                {
                    userIconUrl3 = p.Value;
                    strMsg.AppendFormat("userIconUrl3:{0}\r\n", userIconUrl3);
                }
                if (p.Key.Equals("isThirdAccount"))
                {
                    isThirdAccount = p.Value;
                    strMsg.AppendFormat("isThirdAccount:{0}\r\n", isThirdAccount);
                }
            }
            strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);

            #endregion

            #region 开始注册到号百
            strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
            if ("0".Equals(result) && !String.IsNullOrEmpty(accessToken) && !String.IsNullOrEmpty(loginNum))
            {
                String CustID, OuterID, Status, CustType, CustLevel, RealName, UserName, NickName, CertificateCode, CertificateType, Sex, Email, EnterpriseID, ProvinceID, AreaID, RegistrationSource;
                CustID = String.Empty;
                Regex  regMobile  = new Regex(@"^1[345678]\d{9}$");
                Regex  regEmail   = new Regex(@"^[0-9a-zA-Z_\-\.]*[0-9a-zA-Z_\-]@[0-9a-zA-Z]+\.+[0-9a-zA-Z_\-.]+$");
                String MobileName = String.Empty;
                String EmailName  = String.Empty;
                RealName = loginNum;
                if (regMobile.IsMatch(loginNum))
                {
                    MobileName = loginNum;
                }

                if (regEmail.IsMatch(loginNum))
                {
                    EmailName = loginNum;
                }
                String EncrytpPassWord = CryptographyUtil.Encrypt("123456");
                String OperType        = "2"; //1注册、2登录、3单点登录、4帐号提升

                if (!String.IsNullOrEmpty(loginNum))
                {
                    strMsg.Append("【开始注册或绑定到号百】:\r\n");
                    Result = CIP2BizRules.BindCustInfoUnifyPlatform("02", "021", MobileName, EmailName, RealName, EncrytpPassWord, userId, SPID, OperType, out CustID, out ErrMsg);
                    strMsg.Append("【开始注册或绑定到号百的结果】:\r\n");
                    strMsg.AppendFormat("Result:{0},CustID:{1}<->UsesrID:{2},ErrMsg:{3}\r\n", Result, CustID, userId, ErrMsg);

                    //注册成功,种下cookie
                    if (Result == 0)
                    {
                        Result = CustBasicInfo.getCustInfo(SPID, CustID, out ErrMsg, out OuterID, out Status, out CustType, out CustLevel, out RealName,
                                                           out UserName, out NickName, out CertificateCode, out CertificateType, out Sex, out Email, out EnterpriseID, out ProvinceID,
                                                           out AreaID, out RegistrationSource);
                        strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                        if (Result != 0)
                        {
                            strMsg.Append(",ErrMsg:客户不存在" + CustID);
                            //客户不存在
                            Redirect("ErrMsg", "客户不存在");
                        }

                        //登录tab写入cookie
                        PageUtility.SetCookie("LoginTabCookie", "UDBTab", 8760);

                        strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                        //生成Ticket
                        ticket = CommonBizRules.CreateTicket();
                        if (userId != null && userId != 0)
                        {
                            OuterID = "123456";
                        }
                        Result = CIPTicketManager.insertCIPTicket(ticket, SPID, CustID, RealName, UserName, NickName, OuterID, "UDBTicket", Convert.ToString(userId), "42", out ErrMsg);
                        //insertAccessToken

                        if ((userId != 0) && !String.IsNullOrEmpty(CustID) && !String.IsNullOrEmpty(loginNum))
                        {
                            strMsg.Append("记录AccessToken\r\n");
                            strMsg.AppendFormat("CustID:{0}<->AccessToken:{1}\r\n", CustID, accessToken);
                            String Description = "web登录";
                            Result = CIP2BizRules.InsertAccessToken(SPID, HttpContext.Current.Request.UserHostAddress.ToString(), accessToken, Convert.ToString(userId), CustID, RealName, NickName, loginNum, OperType, Description, out ErrMsg);
                            strMsg.AppendFormat("InsertAccessToken:Result:{0},ErrMsg:{1}\r\n", Result, ErrMsg);
                        }
                        else
                        {
                            strMsg.Append("因为CustID为空,导致AccessToken无法记录,可能是绑定失败的原因\r\n");
                        }
                        strMsg.AppendFormat("【生成ticket】:Result:{0},Ticket:{1}", Result, ticket);
                        strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                        if (Result != 0)
                        {
                            strMsg.Append(",ErrMsg:Ticket生成失败" + ticket);
                            Redirect("ErrMsg", "Ticket生成失败");
                        }
                        strMsg.Append(",Message:生成ticket成功,返回业务系统\r\n");
                        ReturnUrl = Request["ReturnUrl"];
                        strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                        strMsg.AppendFormat("Response.Redirect to {0}\r\n", ReturnUrl);
                    }
                    else
                    {
                        strMsg.Append("绑定失败\r\n");
                    }
                }
                else
                {
                    Result = -7766;
                    ErrMsg = "loginNum为空,所以绑定或注册号百客户";
                    strMsg.Append("loginNum为空,所以绑定或注册号百客户\r\n");
                }
                strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
            }

            //下面删掉一大段

            #endregion
        }
        catch (Exception ex)
        {
            strMsg.AppendFormat(",ErrMsg:{0}", ex.Message);
        }
        finally
        {
            WriteLog(strMsg.ToString());
        }
    }
예제 #7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string CookieName  = "";
        string token       = "";
        string CustID      = "";
        string RealName    = "";
        string UserName    = "";
        string NickName    = "";
        string OuterID     = "";
        string CustType    = "";
        string AuthenName  = "";
        string AuthenType  = "";
        string RedirectUrl = "";
        string key         = "";
        string ErrMsg      = "";
        int    Result      = ErrorDefinition.IError_Result_UnknowError_Code;

        if (!this.IsPostBack)
        {
            CookieName = System.Configuration.ConfigurationManager.AppSettings["CookieName"];
            token      = PageUtility.GetCookie(CookieName);
            if (String.IsNullOrEmpty(token))
            {
                Response.Redirect("../../ErrorInfo.aspx?Result=-19999&ErrorInfo=请先登录积分商城", true);
                return;
            }

            UserToken UT = new UserToken();
            key    = System.Configuration.ConfigurationManager.AppSettings["ScoreSystemSecret"];
            Result = UT.ParseScoreUserToken(token, key, out ProvinceID, out CustID, out RealName, out UserName, out NickName, out OuterID, out CustType, out AuthenName, out AuthenType, out ErrMsg);
            if (Result == 0)
            {
                string par_ProvinceID = Request["ProvinceID"];
                if (par_ProvinceID.Equals(ProvinceID))
                {
                    String Ticket = CommonBizRules.CreateTicket();
                    Result = CIPTicketManager.insertCIPTicket(Ticket, SPID, CustID, RealName, NickName, UserName, OuterID, "", AuthenName, AuthenType, out ErrMsg);

                    if (Result != 0)
                    {
                        Response.Redirect("../../ErrorInfo.aspx?Result=-19999&ErrorInfo=票据生成失败,请重新登录积分商城", true);
                        return;   // 重定向至哪里
                    }

                    // 根据ProvinceID 查出 Redirecturl

                    Result = CIP2BizRules.GetRedirectUrlByProvince(ProvinceID, out RedirectUrl, out ErrMsg);
                    if (Result == 0)
                    {
                        if (!String.IsNullOrEmpty(RedirectUrl))
                        {
                            if (RedirectUrl.IndexOf("?") > 0)
                            {
                                RedirectUrl = RedirectUrl + "&Ticket=" + Ticket;
                            }
                            else
                            {
                                RedirectUrl = RedirectUrl + "?Ticket=" + Ticket;
                            }
                        }
                        else
                        {
                            // 根据provinvce 获取redirecturl 为空 ,该转向哪里
                            Response.Redirect("../../ErrorInfo.aspx?Result=-19999&ErrorInfo=未配置该省的返回地址", true);
                        }
                    }
                    else
                    {
                        // 根据province获得url失败,该返回哪里?
                        Response.Redirect("../../ErrorInfo.aspx?Result=-19999&ErrorInfo=根据省ID获取返回地址失败", true);
                    }
                    Response.Redirect(RedirectUrl, true);
                }
                else
                {
                    Response.Redirect("../../ErrorInfo.aspx?Result=-19999&ErrorInfo=省ID不匹配当前token中的省ID", true);
                }
            }
            else   // token  存在但是解析失败
            {
                RedirectUrl = Request.Url.AbsoluteUri;
                Response.Redirect(RedirectUrl, true);
            }
        }
    }
예제 #8
0
    protected void UnifyAccountCheck()
    {
        StringBuilder strLog = new StringBuilder();
        Int32         Result = ErrorDefinition.BT_IError_Result_UnknowError_Code;
        String        ErrMsg = ErrorDefinition.BT_IError_Result_UnknowError_Msg;

        try
        {
            SPID        = Request["SPID"];
            ReturnUrl   = Request["ReturnUrl"] == null ? String.Empty : Request["ReturnUrl"];
            AccessToken = Request["accessToken"];
            appId       = Request["appId"];
            paras       = Request["paras"];
            sign        = Request["sign"];
            strLog.AppendFormat("SPID:{0},ReturnUrl:{1},appId:{2},paras:{3},sign:{4},AccessToken:{5}\r\n", SPID, ReturnUrl, appId, paras, sign, AccessToken);
            //查综合平台客户信息
            strLog.Append("查询综合平台客户信息\r\n");
            if (!String.IsNullOrEmpty(AccessToken))
            {
                UnifyAccountInfo accountInfo = new UnifyAccountInfo();
                String           clientIp    = System.Configuration.ConfigurationManager.AppSettings["CIP2_clientIp"];//? 通过f5出去的,这样获得地址不对
                if (String.IsNullOrEmpty(clientIp))
                {
                    clientIp = Request.UserHostAddress;
                }

                String clientAgent                = Request.UserAgent;
                String unifyPlatform_appId        = UDBConstDefinition.DefaultInstance.UnifyPlatformAppId;     //System.Configuration.ConfigurationManager.AppSettings["unifyPlatform_appId"];
                String unifyPlatform_appSecretKey = UDBConstDefinition.DefaultInstance.UnifyPlatformAppSecret; //System.Configuration.ConfigurationManager.AppSettings["unifyPlatform_appSecretKey"];
                String p_version    = UDBConstDefinition.DefaultInstance.UnifyPlatformVersion;                 //System.Configuration.ConfigurationManager.AppSettings["unifyPlatform_version"];
                String p_clientType = UDBConstDefinition.DefaultInstance.UnifyPlatformClientType;
                Result = _UDBMBoss.UnifyPlatformGetUserInfo(unifyPlatform_appId, unifyPlatform_appSecretKey, p_version, p_clientType, AccessToken, clientIp, clientAgent, out accountInfo, out ErrMsg);
                strLog.AppendFormat("查询综合平台返回:Result:{0},ErrMsg:{1},UserID:{2}\r\n", Result, ErrMsg, Convert.ToString(accountInfo.userId));
                if (Result == 0 && !String.IsNullOrEmpty(Convert.ToString(accountInfo.userId)))  //这个地方跟登录回来不一致,登录回来是根据loginnum去匹配
                {
                    ///////////////
                    #region 开始注册到号百
                    String CustID, OuterID, Status, CustType, CustLevel, RealName, UserName, NickName, CertificateCode, CertificateType, Sex, Email, EnterpriseID, ProvinceID, AreaID, RegistrationSource;
                    CustID = String.Empty;
                    Regex  regMobile  = new Regex(@"^1[345678]\d{9}$");
                    Regex  regEmail   = new Regex(@"^[0-9a-zA-Z_\-\.]*[0-9a-zA-Z_\-]@[0-9a-zA-Z]+\.+[0-9a-zA-Z_\-.]+$");
                    String MobileName = String.Empty;
                    String EmailName  = String.Empty;

                    if (!String.IsNullOrEmpty(accountInfo.nickName))
                    {
                        RealName = accountInfo.nickName;
                    }
                    else if (!String.IsNullOrEmpty(accountInfo.userName))
                    {
                        RealName = accountInfo.userName;
                    }
                    else if (!String.IsNullOrEmpty(accountInfo.mobileName))
                    {
                        RealName = accountInfo.mobileName;
                    }
                    else if (!String.IsNullOrEmpty(accountInfo.emailName))
                    {
                        RealName = accountInfo.emailName;
                    }
                    else
                    {
                        RealName = "";
                    }

                    if (!String.IsNullOrEmpty(accountInfo.mobileName))
                    {
                        MobileName = accountInfo.mobileName;
                    }

                    if (!String.IsNullOrEmpty(accountInfo.emailName))
                    {
                        EmailName = accountInfo.emailName;
                    }

                    String EncrytpPassWord = CryptographyUtil.Encrypt("123456"); //通过页面注册进来的,不知道密码,给一个默认密码
                    //通过统一注册页面过来的,注册为号百的 “非认证用户”,通过语音注册进来的,注册为号百的 “认证用户”
                    String OperType = "1";                                       // 注册 ,
                    if (!String.IsNullOrEmpty(MobileName) || !String.IsNullOrEmpty(EmailName))
                    {
                        strLog.Append("【开始注册或者绑定到号百】:\r\n");
                        Result = CIP2BizRules.BindCustInfoUnifyPlatform("02", "021", MobileName, EmailName, RealName, EncrytpPassWord, accountInfo.userId, SPID, OperType, out CustID, out ErrMsg);
                        strLog.Append("【开始注册或者绑定到号百的结果】:\r\n");
                        strLog.AppendFormat("Result:{0},CustID:{1},ErrMsg:{2}\r\n", Result, CustID, ErrMsg);
                        //注册成功
                        if (Result == 0)
                        {
                            Result = CustBasicInfo.getCustInfo(SPID, CustID, out ErrMsg, out OuterID, out Status, out CustType, out CustLevel, out RealName,
                                                               out UserName, out NickName, out CertificateCode, out CertificateType, out Sex, out Email, out EnterpriseID, out ProvinceID,
                                                               out AreaID, out RegistrationSource);
                            strLog.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                            if (Result != 0)
                            {
                                strLog.Append(",ErrMsg:客户不存在" + CustID);
                                Redirect("ErrMsg", "客户不存在");
                            }
                            strLog.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                            //生成Ticket
                            ticket = CommonBizRules.CreateTicket();
                            Result = CIPTicketManager.insertCIPTicket(ticket, SPID, CustID, RealName, UserName, NickName, OuterID, "UDBTicket", Convert.ToString(accountInfo.userId), "42", out ErrMsg);
                            //insertAccessToken
                            strLog.AppendFormat("【生成ticket】:Result:{0},Ticket:{1}", Result, ticket);
                            strLog.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                            if (Result != 0)
                            {
                                strLog.Append(",ErrMsg:Ticket生成失败" + ticket);
                                Redirect("ErrMsg", "Ticket生成失败");
                            }
                            strLog.Append(",Message:生成ticket成功,返回业务系统\r\n");
                            ReturnUrl = Request["ReturnUrl"];
                            strLog.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                            strLog.AppendFormat("Response.Redirect to {0}\r\n", ReturnUrl);
                            Response.Redirect(ReturnUrl, false);
                        }
                    }
                    else
                    {
                        Result = -7766;
                        ErrMsg = "MobileName,或者EmailName为空,所以不注册号百客户";
                        strLog.Append("MobileName,或者EmailName为空,所以不注册号百客户\r\n");
                        Redirect("ErrMsg", "MobileName,或者EmailName为空,所以不注册号百客户");
                    }
                    strLog.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                    //下面删掉一大段
                    #endregion
                    //////////////
                }
                else
                { //查询综合平台客户信息失败,或者account.userid为空
                    strLog.Append("查询综合平台客户信息失败,或者account.userid为空\r\n");
                    Redirect("ErrMsg", "查询综合平台客户信息失败,或者account.userid为空");
                }
            }
            else
            { //accesstoken没有返回
                strLog.Append("综合平台accesstoken没有返回\r\n");
                Redirect("ErrMsg", "综合平台accesstoken没有返回户");
            }
        }
        catch (Exception e)
        {
            strLog.AppendFormat("异常:{0}\r\n", e.ToString());
        }
        finally
        {
            log(strLog.ToString());
        }
    }
예제 #9
0
    /// <summary>
    /// 开始UDBSSO功能
    /// </summary>
    protected void ProcessUnifyPlatformReturn()
    {
        StringBuilder strMsg = new StringBuilder();
        Int32         Result = ErrorDefinition.BT_IError_Result_UnknowError_Code;
        String        ErrMsg = ErrorDefinition.BT_IError_Result_UnknowError_Msg;

        try
        {
            #region 获取参数并验证

            SPID      = Request["SPID"];
            ReturnUrl = Request["ReturnUrl"] == null ? String.Empty : Request["ReturnUrl"];
            LSID      = Request["LSID"];
            appId     = Request["appId"];
            paras     = Request["paras"];
            sign      = Request["sign"];

            string unifyPlatform_appId        = UDBConstDefinition.DefaultInstance.UnifyPlatformAppId;     //System.Configuration.ConfigurationManager.AppSettings["unifyPlatform_appId"];
            string unifyPlatform_appSecretKey = UDBConstDefinition.DefaultInstance.UnifyPlatformAppSecret; //System.Configuration.ConfigurationManager.AppSettings["unifyPlatform_appSecretKey"];


            strMsg.AppendFormat("【验证参数,DateTime:{0}】:SPID:{1},LSID:{2},ReturnUrl:{3},appId:{4},paras:{5},sign:{6}\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), SPID, LSID, ReturnUrl, appId, paras, sign);

            string unifyPlatformResponse = CryptographyUtil.XXTeaDecrypt(paras, unifyPlatform_appSecretKey);
            strMsg.AppendFormat("unifyPlatformResponse:{0}\r\n", unifyPlatformResponse);
            string newsign = CryptographyUtil.HMAC_SHA1(unifyPlatform_appId + paras, unifyPlatform_appSecretKey);
            strMsg.AppendFormat("newsign:{0},sign:{1}\r\n", newsign, sign);
            strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
            if (!newsign.Equals(sign))
            {
                Redirect("ErrMsg", "签名不正确");
            }

            //paras {result,accessToken,timeStamp,userId,productUid,loginNum,nickName,userIconUrl,userIconUrl2,userIconUrl3,isThirdAccount}
            string result         = "";
            string accessToken    = "";
            string timeStamp      = "";
            string userId         = "";
            string productUid     = "";
            string loginNum       = "";
            string nickName       = "";
            string userIconUrl    = "";
            string userIconUrl2   = "";
            string userIconUrl3   = "";
            string isThirdAccount = "";


            Dictionary <String, String> parames = new Dictionary <string, string>();
            strMsg.Append("开始解析unifyPlatformResponse\r\n");
            try
            {
                parames = splitParameters(unifyPlatformResponse);
                strMsg.AppendFormat("params:{0}\r\n", parames);
            }
            catch (Exception exp)
            {
                strMsg.AppendFormat(exp.ToString());
            }
            strMsg.Append("解析unifyPlatformResponse完毕\r\n");
            foreach (KeyValuePair <String, String> p in parames)
            {
                if (p.Key.Equals("result"))
                {
                    result = p.Value;
                    strMsg.AppendFormat("result:{0}\r\n", result);
                }
                if (p.Key.Equals("accessToken"))
                {
                    accessToken = p.Value;
                    strMsg.AppendFormat("accessToken:{0}\r\n", accessToken);
                }
                if (p.Key.Equals("timeStamp"))
                {
                    timeStamp = p.Value;
                    strMsg.AppendFormat("timeStamp:{0}\r\n", timeStamp);
                }
                if (p.Key.Equals("userId"))
                {
                    userId = p.Value;
                    strMsg.AppendFormat("userId:{0}\r\n", userId);
                }
                if (p.Key.Equals("productUid"))
                {
                    productUid = p.Value;
                    strMsg.AppendFormat("productUid:{0}\r\n", productUid);
                }
                if (p.Key.Equals("loginNum"))
                {
                    loginNum = p.Value;
                    strMsg.AppendFormat("loginNum:{0}\r\n", loginNum);
                }
                if (p.Key.Equals("nickName"))
                {
                    nickName = p.Value;
                    strMsg.AppendFormat("nickName:{0}\r\n", nickName);
                }
                if (p.Key.Equals("userIconUrl"))
                {
                    userIconUrl = p.Value;
                    strMsg.AppendFormat("userIconUrl:{0}\r\n", userIconUrl);
                }
                if (p.Key.Equals("userIconUrl2"))
                {
                    userIconUrl2 = p.Value;
                    strMsg.AppendFormat("userIconUrl2:{0}\r\n", userIconUrl2);
                }
                if (p.Key.Equals("userIconUrl3"))
                {
                    userIconUrl3 = p.Value;
                    strMsg.AppendFormat("userIconUrl3:{0}\r\n", userIconUrl3);
                }
                if (p.Key.Equals("isThirdAccount"))
                {
                    isThirdAccount = p.Value;
                    strMsg.AppendFormat("isThirdAccount:{0}\r\n", isThirdAccount);
                }
            }
            strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);

            #endregion

            #region 根据UDBTkcket到UDB查询用户信息

            strMsg.Append("【开始查询信息】:");

            UnifyAccountInfo accountInfo = new UnifyAccountInfo();
            String           clientIp    = System.Configuration.ConfigurationManager.AppSettings["CIP2_clientIp"];//? 通过f5出去的,这样获得地址不对
            if (String.IsNullOrEmpty(clientIp))
            {
                clientIp = Request.UserHostAddress;
            }

            String clientAgent = Request.UserAgent;
            ////根据UDBTicket到UDB查询用户信息
            //Result = _UDBMBoss.AccountInfoQuery(UDBSPID, UDBSPID, UDBTicket, UDBKey, out accountInfo, out ErrMsg);
            if ("0".Equals(result) && !String.IsNullOrEmpty(accessToken))
            {
                string p_version    = UDBConstDefinition.DefaultInstance.UnifyPlatformVersion; //System.Configuration.ConfigurationManager.AppSettings["unifyPlatform_version"];
                string p_clientType = UDBConstDefinition.DefaultInstance.UnifyPlatformClientType;
                Result = _UDBMBoss.UnifyPlatformGetUserInfo(unifyPlatform_appId, unifyPlatform_appSecretKey, p_version, p_clientType, accessToken, clientIp, clientAgent, out accountInfo, out ErrMsg);
            }

            strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);

            if ("0".Equals(result) && Result == 0)   // 认证成功 并且根据accesstoken查客户信息成功
            {
                String CustID, OuterID, Status, CustType, CustLevel, RealName, UserName, NickName, CertificateCode, CertificateType, Sex, Email, EnterpriseID, ProvinceID, AreaID, RegistrationSource;
                //检测对应用户是否在号百系统,不在,则注册进来
                strMsg.Append("【开始注册到号百】:");
                CustID = String.Empty;

                Regex regMobile = new Regex(@"^1[345678]\d{9}$");
                Regex regEmail  = new Regex(@"^[0-9a-zA-Z_\-\.]*[0-9a-zA-Z_\-]@[0-9a-zA-Z]+\.+[0-9a-zA-Z_\-.]+$");
                Regex regCard   = new Regex(@"^(\d{9}|\d{16})$");

                string AuthenType = "1";
                strMsg.AppendFormat("accountInfo.username:{0}\r\n", accountInfo.userName);
                strMsg.AppendFormat("acountInfo.userId:{0},accountInfo.pUserId:{1}\r\n", accountInfo.userId, accountInfo.pUserId);
                if (regMobile.IsMatch(accountInfo.userName))
                {
                    AuthenType = "2";
                }
                if (regEmail.IsMatch(accountInfo.userName))
                {
                    AuthenType = "4";
                }
                if (regCard.IsMatch(accountInfo.userName))
                {
                    AuthenType = "3";
                }

                if ("2".Equals(AuthenType))
                {
                    //Result = UserRegistry.getUserRegistryUnifyPlatform(accountInfo, out CustID, out ErrMsg);
                    String OperType = "1"; // 注册
                    String Password = "";  // 从综合平台注册过来,密码是不知道的
                    RealName = "";
                    Result   = CIP2BizRules.BindCustInfoUnifyPlatform("02", "021", accountInfo.mobileName,
                                                                      accountInfo.emailName, RealName, Password, accountInfo.userId, SPID, OperType, out CustID, out ErrMsg);
                }
                else
                {
                    Result = -7766;
                }

                //Result = UserRegistry.getUserRegistryUnifyPlatform(accountInfo, out CustID, out ErrMsg);

                strMsg.AppendFormat("Result:{0},CustID:{1}\r\n", Result, CustID);
                strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                //注册成功
                if (Result == 0)
                {
                    Result = CustBasicInfo.getCustInfo(SPID, CustID, out ErrMsg, out OuterID, out Status, out CustType, out CustLevel, out RealName,
                                                       out UserName, out NickName, out CertificateCode, out CertificateType, out Sex, out Email, out EnterpriseID, out ProvinceID,
                                                       out AreaID, out RegistrationSource);
                    strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                    if (Result != 0)
                    {
                        strMsg.Append(",ErrMsg:客户不存在" + CustID);
                        //客户不存在
                        Redirect("ErrMsg", "客户不存在");
                    }

                    ////登录tab写入cookie
                    //PageUtility.SetCookie("LoginTabCookie", "UDBTab", 8760);

                    strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                    //生成Ticket
                    ticket = CommonBizRules.CreateTicket();
                    Result = CIPTicketManager.insertCIPTicket(ticket, SPID, CustID, RealName, UserName, NickName, OuterID, "UDBTicket", Convert.ToString(accountInfo.userId), UDBBusiness.ConvertAuthenType(Convert.ToString(accountInfo.userType)), out ErrMsg);
                    strMsg.AppendFormat("【生成ticket】:Result:{0},Ticket:{1}", Result, ticket);
                    strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                    if (Result != 0)
                    {
                        strMsg.Append(",ErrMsg:Ticket生成失败" + ticket);
                        Redirect("ErrMsg", "Ticket生成失败");
                    }
                    strMsg.Append(",Message:生成ticket成功,返回业务系统\r\n");
                    ReturnUrl = Request["ReturnUrl"];
                    strMsg.AppendFormat("ReturnUrl: {0}\r\n", ReturnUrl);
                    strMsg.AppendFormat("Response.Redirect to {0}\r\n", ReturnUrl);

                    //埋综合平台token 6.1 add
                    //String UnifyPlatformCookieName = ConfigurationManager.AppSettings["UnifyPlatformCookieName"];
                    //string AuthenName = UserName;
                    //AuthenType = "2";
                    //SPInfoManager spInfo = new SPInfoManager();
                    //Object SPData = spInfo.GetSPData(this.Context, "SPData");
                    //string key = spInfo.GetPropertyBySPID("35000000", "SecretKey", SPData);
                    //UserToken UT = new UserToken();
                    //string UserTokenValue = UT.GenerateUserToken(CustID, RealName, UserName, NickName, OuterID, CustType, AuthenName, AuthenType, key, out ErrMsg);
                    //string CookieName = System.Configuration.ConfigurationManager.AppSettings["CookieName"];
                    //PageUtility.SetCookie(UserTokenValue, UnifyPlatformCookieName, this.Page);
                    //埋综合平台token 6.1 end
                }
                else
                {
                    strMsg.Append(",ErrMsg:用户注册到号百失败");
                    Redirect("ErrMsg", "用户注册到号百失败" + ErrMsg);
                }
            }
            else
            {
                strMsg.Append(",ErrMsg:查询用户信息失败");
                Redirect("ErrMsg", "查询用户信息失败");
            }

            #endregion
        }
        catch (Exception ex)
        {
            strMsg.AppendFormat(",ErrMsg:{0}", ex.Message);
        }
        finally
        {
            WriteLog(strMsg.ToString());
        }
    }
예제 #10
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string SPID        = "35000000";
        string AuthenType  = "";
        string AuthenName  = "";
        string Password    = "";
        string CustID      = "";
        string RealName    = "";
        string NickName    = "";
        string UserName    = "";
        string OutID       = "";
        string UserAccount = "";
        string CustType    = "";
        string ProvinceID  = "";
        string Ticket      = "";
        string ReturnUrl   = "";

        int    Result = ErrorDefinition.BT_IError_Result_UnknowError_Code;
        string ErrMsg = ErrorDefinition.BT_IError_Result_UnknowError_Msg;

        try
        {
            if (CommonUtility.IsParameterExist("LoginTicket", this.Page))
            {
                Ticket = Request["LoginTicket"];
                Result = CIPTicketManager.checkYgTicket(SPID, Ticket, "", out CustID, out RealName, out UserName, out NickName, out OutID, "", out AuthenName, out AuthenType, out ErrMsg);
                Log(String.Format("SPID:{0},Ticket:{1},CustID:{2},RealName:{3},UserName:{4},NickName:{5},OutID:{6},AuthenName:{7},AuthenType:{8},Result:{9},ErrMsg:{10}——【DateTime:{11}】",
                                  SPID, Ticket, CustID, RealName, UserName, NickName, OutID, AuthenName, AuthenType, Result, ErrMsg, DateTime.Now.ToString("yyyy-MM-dd HH:mm")));

                if (Result == 0)
                {
                    SPInfoManager spInfo = new SPInfoManager();
                    Object        SPData = spInfo.GetSPData(this.Context, "SPData");
                    string        key    = spInfo.GetPropertyBySPID("35000000", "SecretKey", SPData);

                    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);
                    if (CommonUtility.IsParameterExist("ReturnUrl", this.Page))
                    {
                        ReturnUrl = Request["ReturnUrl"];
                        String url = "";
                        if (ReturnUrl.IndexOf("?") > 0)
                        {
                            url = ReturnUrl + "&Ticket=" + Ticket;
                        }
                        else
                        {
                            url = ReturnUrl + "?Ticket=" + Ticket;
                        }


                        Response.Redirect(url);
                    }

                    Response.Redirect("http://www.118114.cn?Ticket=" + Ticket);
                }
                else
                {
                    Response.Redirect("../ErrorInfo.aspx?ErrorInfo=" + ErrMsg);
                }
            }
            else
            {
                Response.Redirect("http://www.118114.cn");
            }
        }
        catch (Exception ex)
        {
            ErrMsg += ex.Message;
        }
        finally
        {
            Log(String.Format("LoginTicket:{0},ErrMsg:{1}——【DateTime:{2}】", Ticket, ErrMsg, DateTime.Now.ToString("yyyy-MM-dd HH:mm")));
        }
    }
예제 #11
0
    /// <summary>
    /// 开始UDBSSO功能
    /// </summary>
    protected void BeginUDBSSO()
    {
        StringBuilder strMsg = new StringBuilder();
        Int32         Result = ErrorDefinition.BT_IError_Result_UnknowError_Code;
        String        ErrMsg = ErrorDefinition.BT_IError_Result_UnknowError_Msg;

        try
        {
            #region 获取参数并验证

            SPID = Request["SPID"];
            String temp_ReturnUrl = Request["ReturnUrl"] == null ? String.Empty : Request["ReturnUrl"];
            PassportLoginResponseValue = Request["PassportLoginResponse"];
            strMsg.AppendFormat("【验证参数,DateTime:{0}】:SPID:{1},PassportLoginResponse:{2},temp_ReturnUrl:{3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), SPID, PassportLoginResponseValue, temp_ReturnUrl);
            //根据SPID查询应用系统对应的UDBSPID信息
            UDBSPInfoBO _udbspinfo_bo     = new UDBSPInfoBO();
            UDBSPInfo   _udbspinfo_entity = _udbspinfo_bo.GetBySPID(SPID);
            if (_udbspinfo_entity != null)
            {
                UDBSPID   = _udbspinfo_entity.UDBSPID;
                UDBKey    = _udbspinfo_entity.UDBKey;
                ReturnUrl = _udbspinfo_entity.RedirectUrl;
            }
            else
            {
                UDBSPID   = UDBConstDefinition.DefaultInstance.BesttoneUDBSPID;
                UDBKey    = UDBConstDefinition.DefaultInstance.BesttoneUDBKey;
                ReturnUrl = UDBConstDefinition.DefaultInstance.UDBLoginSuccessRedirectUrl;
            }

            if (String.IsNullOrEmpty(ReturnUrl))
            {
                //其他业务系统的Ticket解析页面是不固定的,通过参数ReturnUrl传递
                ReturnUrl = temp_ReturnUrl;
            }
            else
            {
                //针对精品商城,精品商城的Ticket解析页面是固定的,是配在数据库中,而此时参数ReturnUrl及为最终认证成功的跳转页面
                if (!String.IsNullOrEmpty(temp_ReturnUrl))
                {
                    if (ReturnUrl.IndexOf('?') >= 0)
                    {
                        ReturnUrl += "&ReturnUrl=" + HttpUtility.UrlEncode(temp_ReturnUrl);
                    }
                    else
                    {
                        ReturnUrl += "?ReturnUrl=" + HttpUtility.UrlEncode(temp_ReturnUrl);
                    }
                }
            }

            strMsg.AppendFormat(",ReturnUrl:{0}", ReturnUrl);

            //根据客户信息平台的SPID,获取在客户信息平台的key
            SPInfoManager spInfo = new SPInfoManager();
            Object        SPData = spInfo.GetSPData(this.Context, "SPData");
            key = spInfo.GetPropertyBySPID(SPID, "SecretKey", SPData);

            //解析PassportLoginResponseValue
            String[] tempArray = PassportLoginResponseValue.Split('$');
            DesSsDeviceNo = tempArray[0];
            String   tempStr     = CryptographyUtil.Decrypt(tempArray[1], UDBKey);
            String[] digestArray = tempStr.Split('$');
            Result    = Convert.ToInt32(digestArray[0]);
            UDBTicket = digestArray[1];
            String timeStamp = digestArray[2];
            String digest    = digestArray[3];

            String newDigest = CryptographyUtil.ToBase64String(CryptographyUtil.Hash(Result + DesSsDeviceNo + UDBTicket + timeStamp));
            strMsg.AppendFormat(",DesSsDeviceNo:{0},Result:{1},UDBTicket{2},timeStamp:{3},digest:{4},newDigest:{5}\r\n", DesSsDeviceNo, Result, UDBTicket, timeStamp, digest, newDigest);
            if (!digest.Equals(newDigest))
            {
                //digest不吻合,失败
                strMsg.AppendFormat(",ErrMsg:{0}", "digest有误不匹配");
                Redirect("ErrMsg", "digest有误不匹配");
            }
            if (Result != 0)
            {
                //失败,则返回
                strMsg.AppendFormat(",ErrMsg:{0}", "返回Ticket失败");
                Redirect("ErrMsg", "返回Ticket失败");
            }

            #endregion

            #region 根据UDBTkcket到UDB查询用户信息

            strMsg.Append("【开始查询信息】:");

            UDBAccountInfo accountInfo = new UDBAccountInfo();

            //根据UDBTicket到UDB查询用户信息
            Result = _UDBMBoss.AccountInfoQuery(UDBSPID, UDBSPID, UDBTicket, UDBKey, out accountInfo, out ErrMsg);
            accountInfo.SourceSPID = UDBConstDefinition.DefaultInstance.UDBSPID;
            strMsg.AppendFormat(",Result:{0},UserID:{1},UserIDType:{2},UserType:{3},PUserID:{4},Alias:{5},UserIDStatus:{6},UserIDSsStatus:{7},Description:{8},ProvinceID:{9},NumFlag:{10}\r\n",
                                Result, accountInfo.UserID, accountInfo.UserIDType, accountInfo.UserType, accountInfo.PUserID, accountInfo.Alias, accountInfo.UserIDStatus, accountInfo.UserIDSsStatus, accountInfo.Description, accountInfo.ProvinceID, accountInfo.NumFlag);

            if (Result == 0)
            {
                String CustID, OuterID, Status, CustType, CustLevel, RealName, UserName, NickName, CertificateCode, CertificateType, Sex, Email, EnterpriseID, ProvinceID, AreaID, RegistrationSource;
                //检测对应用户是否在号百系统,不在,则注册进来
                strMsg.Append("【开始注册到号百】:");
                Result = UserRegistry.getUserRegistryUDB(accountInfo, out CustID, out ErrMsg);
                strMsg.AppendFormat("Result:{0},CustID:{1}\r\n", Result, CustID);

                //注册成功
                if (Result == 0)
                {
                    Result = CustBasicInfo.getCustInfo(SPID, CustID, out ErrMsg, out OuterID, out Status, out CustType, out CustLevel, out RealName,
                                                       out UserName, out NickName, out CertificateCode, out CertificateType, out Sex, out Email, out EnterpriseID, out ProvinceID,
                                                       out AreaID, out RegistrationSource);
                    if (Result != 0)
                    {
                        strMsg.Append(",ErrMsg:客户不存在" + CustID);
                        //客户不存在
                        Redirect("ErrMsg", "客户不存在");
                    }
                    //生成token
                    UserToken UT             = new UserToken();
                    String    userTokenValue = UT.GenerateUserToken(CustID, RealName, UserName, NickName, OuterID, CustType, accountInfo.UserID, UDBBusiness.ConvertAuthenType(accountInfo.NumFlag), key, out ErrMsg);
                    String    CookieName     = ConfigurationManager.AppSettings["CookieName"];
                    PageUtility.SetCookie(CookieName, userTokenValue, this.Page);

                    //生成Ticket
                    String ticket = CommonBizRules.CreateTicket();
                    Result = CIPTicketManager.insertCIPTicket(ticket, SPID, CustID, RealName, UserName, NickName, OuterID, "UDBTicket", accountInfo.UserID, UDBBusiness.ConvertAuthenType(accountInfo.NumFlag), out ErrMsg);
                    strMsg.AppendFormat("【生成ticket】:Result:{0},Ticket:{1}", Result, ticket);
                    if (Result != 0)
                    {
                        strMsg.Append(",ErrMsg:Ticket生成失败" + ticket);
                        Redirect("ErrMsg", "Ticket生成失败");
                    }
                    strMsg.Append(",Message:生成ticket成功,返回业务系统");
                    Redirect("Ticket", ticket);
                }
                else
                {
                    strMsg.Append(",ErrMsg:用户注册到号百失败");
                    Redirect("ErrMsg", "用户注册到号百失败" + ErrMsg);
                }
            }
            else if (Result == 5)
            {
                strMsg.Append(",ErrMsg:用户已删除");
                Redirect("ErrMsg", "用户已删除");
            }
            else
            {
                strMsg.Append(",ErrMsg:查询用户信息失败");
                Redirect("ErrMsg", "查询用户信息失败");
            }

            #endregion
        }
        catch (Exception ex)
        {
            strMsg.AppendFormat(",ErrMsg:{0}", ex.Message);
        }
        finally
        {
            WriteLog(strMsg.ToString());
        }
    }
예제 #12
0
    /// <summary>
    /// 开始UDBSSO功能
    /// </summary>
    protected void BeginUDBSSO()
    {
        StringBuilder strMsg = new StringBuilder();
        Int32         Result = ErrorDefinition.BT_IError_Result_UnknowError_Code;
        String        ErrMsg = ErrorDefinition.BT_IError_Result_UnknowError_Msg;

        try
        {
            #region 获取参数并验证

            SPID      = Request["SPID"];
            ReturnUrl = Request["ReturnUrl"] == null ? String.Empty : Request["ReturnUrl"];
            PassportLoginResponseValue = Request["PassportLoginResponse"];
            strMsg.AppendFormat("从门户过来【验证参数,DateTime:{0}】:SPID:{1},PassportLoginResponse:{2},ReturnUrl:{3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), SPID, PassportLoginResponseValue, ReturnUrl);


            UDBKey = System.Configuration.ConfigurationManager.AppSettings["UdbKey"];

            //解析PassportLoginResponseValue
            String[] tempArray = PassportLoginResponseValue.Split('$');
            DesSsDeviceNo = tempArray[0];
            String   tempStr     = CryptographyUtil.Decrypt(tempArray[1], UDBKey);
            String[] digestArray = tempStr.Split('$');
            Result    = Convert.ToInt32(digestArray[0]);
            UDBTicket = digestArray[1];
            String timeStamp = digestArray[2];
            String digest    = digestArray[3];

            String newDigest = CryptographyUtil.ToBase64String(CryptographyUtil.Hash(Result + DesSsDeviceNo + UDBTicket + timeStamp));
            strMsg.AppendFormat(",DesSsDeviceNo:{0},Result:{1},UDBTicket{2},timeStamp:{3},digest:{4},newDigest:{5}\r\n", DesSsDeviceNo, Result, UDBTicket, timeStamp, digest, newDigest);
            if (!digest.Equals(newDigest))
            {
                //digest不吻合,失败
                strMsg.AppendFormat(",ErrMsg:{0}", "digest有误不匹配");
                Redirect("ErrMsg", "digest有误不匹配");
            }
            if (Result != 0)
            {
                //失败,则返回
                strMsg.AppendFormat(",ErrMsg:{0}", "返回Ticket失败");
                Redirect("ErrMsg", "返回Ticket失败");
            }

            #endregion

            #region 根据UDBTkcket到UDB查询用户信息

            strMsg.Append("【开始查询信息】:");

            UDBAccountInfo accountInfo = new UDBAccountInfo();

            //根据UDBTicket到UDB查询用户信息
            //Result = _UDBMBoss.AccountInfoCheck("3500000000408201", "3500000000408201", UDBTicket, UDBKey, out accountInfo, out ErrMsg);
            Result = _UDBMBoss.AccountInfoQuery("3500000000408201", "3500000000408201", UDBTicket, UDBKey, out accountInfo, out ErrMsg);
            accountInfo.SourceSPID = UDBConstDefinition.DefaultInstance.UDBSPID;
            strMsg.AppendFormat(",Result:{0},UserID:{1},UserIDType:{2},UserType:{3},PUserID:{4},Alias:{5},UserIDStatus:{6},UserIDSsStatus:{7},Description:{8},ProvinceID:{9},NumFlag:{10}\r\n",
                                Result, accountInfo.UserID, accountInfo.UserIDType, accountInfo.UserType, accountInfo.PUserID, accountInfo.Alias, accountInfo.UserIDStatus, accountInfo.UserIDSsStatus, accountInfo.Description, accountInfo.ProvinceID, accountInfo.NumFlag);
            if (Result == 0)
            {
                String CustID, OuterID, Status, CustType, CustLevel, RealName, UserName, NickName, CertificateCode, CertificateType, Sex, Email, EnterpriseID, ProvinceID, AreaID, RegistrationSource;
                //检测对应用户是否在号百系统,不在,则注册进来
                strMsg.Append("【开始注册到号百】:");
                Result = UserRegistry.getUserRegistryUDB(accountInfo, out CustID, out ErrMsg);
                strMsg.AppendFormat("Result:{0},CustID:{1}\r\n", Result, CustID);

                //注册成功
                if (Result == 0)
                {
                    Result = CustBasicInfo.getCustInfo(SPID, CustID, out ErrMsg, out OuterID, out Status, out CustType, out CustLevel, out RealName,
                                                       out UserName, out NickName, out CertificateCode, out CertificateType, out Sex, out Email, out EnterpriseID, out ProvinceID,
                                                       out AreaID, out RegistrationSource);
                    if (Result != 0)
                    {
                        strMsg.Append(",ErrMsg:客户不存在" + CustID);
                        //客户不存在
                        Redirect("ErrMsg", "客户不存在");
                    }


                    //登录tab写入cookie
                    PageUtility.SetCookie("LoginTabCookie", "UDBTab", 8760);

                    //生成Ticket
                    String ticket = CommonBizRules.CreateTicket();

                    Result = CIPTicketManager.insertCIPTicket(ticket, SPID, CustID, RealName, UserName, NickName, OuterID, "UDBTicket", accountInfo.UserID, UDBBusiness.ConvertAuthenType(accountInfo.NumFlag), out ErrMsg);
                    strMsg.AppendFormat("【生成ticket】:Result:{0},Ticket:{1},ReturnUrl:{2}", Result, ticket, ReturnUrl);
                    if (Result != 0)
                    {
                        strMsg.Append(",ErrMsg:Ticket生成失败" + ticket);
                        Redirect("ErrMsg", "Ticket生成失败");
                    }
                    strMsg.Append(",Message:生成ticket成功,返回业务系统");


                    Response.Redirect("QuickLogin1.aspx?LoginTicket=" + ticket + "&ReturnUrl=" + ReturnUrl);
                }
                else
                {
                    strMsg.Append(",ErrMsg:用户注册到号百失败");
                    Redirect("ErrMsg", "用户注册到号百失败" + ErrMsg);
                }
            }
            else if (Result == 5)
            {
                strMsg.Append(",ErrMsg:用户已删除");
                Redirect("ErrMsg", "用户已删除");
            }
            else
            {
                strMsg.Append(",ErrMsg:查询用户信息失败");
                Redirect("ErrMsg", "查询用户信息失败");
            }

            #endregion
        }
        catch (Exception ex)
        {
            strMsg.AppendFormat(",ErrMsg:{0}", ex.Message);
        }
        finally
        {
            WriteLog(strMsg.ToString());
        }
    }
예제 #13
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 { }
        }
    }
예제 #14
0
    public string accountInfoQuery(string uamxml)
    {
        TicketParseResult Result = new TicketParseResult();

        Result.Result           = ErrorDefinition.IError_Result_UnknowError_Code;
        Result.ErrorDescription = ErrorDefinition.IError_Result_UnknowError_Msg;
        Result.ExtendField      = "";

        string uamreturnxml = "";

        UamUserInfoRequest uair = new UamUserInfoRequest();
        XMLExchange        xe   = new XMLExchange();

        string actioncode     = "1";
        string transactionid  = "";
        string rsptime        = DateTime.Now.ToString("yyyyMMddHHmmss");;
        string digitalsign    = "";
        string rsptype        = "0";
        string rspcode        = "0000";
        string rspdesc        = "success";
        string accounttype    = "";
        string accountid      = "";
        string pwdtype        = "01";
        string trustedacclist = "";
        string returnurl      = "http://wtwebtest.ct10000.com/tymh/wtToJt.do";

        returnurl = System.Configuration.ConfigurationManager.AppSettings["UAMReturnUrl"];
        string SPID       = "35000050";
        string Ticket     = "";
        String provinceid = String.Empty;

        try
        {
            log(String.Format("【集团网厅查询参数:】Time:{0},uamxml:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), uamxml));
            //解析参数
            uair          = xe.AnalysisUamBackXML(uamxml);
            transactionid = uair.TransactionID;
            Ticket        = uair.Ticket;

            //客户信息平台到集团网厅时,provinceid作为ticket的一部分放在ticket前两位
            provinceid = Ticket.Substring(0, 2);
            if (CommonUtility.IsEmpty(Ticket))
            {
                Result.Result           = ErrorDefinition.BT_IError_Result_TicketError_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_TicketError_Msg + ",票据不能为空";
                rspcode      = "-112";
                rspdesc      = Result.ErrorDescription;
                uamreturnxml = xe.BuildUamCustInfoXML_New(actioncode, transactionid, rsptime, digitalsign, rsptype, rspcode, rspdesc, accounttype, accountid, pwdtype, "", trustedacclist, returnurl, provinceid);
                return(uamreturnxml);
            }
            // 9 固话 10 小灵通 11 宽带 7 手机
            // 9 和 11需要把citycode带给uam
            string ExtendField = "9";
            //解析票据
            Result.Result = CIPTicketManager.checkCIPTicket(SPID, Ticket, ExtendField, out Result.CustID, out Result.RealName, out Result.UserName, out Result.NickName, out Result.OuterID, "", out Result.LoginAuthenName, out Result.LoginAuthenType, out Result.ErrorDescription);

            //认证类型转换
            accounttype = ConvertAuthenType(Result.LoginAuthenType);

            if (Result.Result == 0)
            {
                accountid = Result.LoginAuthenName;
                string citycode = "";
                //固话和宽带号
                if (accounttype.Equals("2000001") || accounttype.Equals("2000002"))
                {
                    if (accountid.IndexOf('-') > 0)
                    {
                        string[] pwdattrlist = accountid.Split('-');
                        citycode  = pwdattrlist[0];
                        accountid = pwdattrlist[1];
                    }
                }

                uamreturnxml = xe.BuildUamCustInfoXML_New(actioncode, transactionid, rsptime, digitalsign, rsptype, rspcode, rspdesc, accounttype, accountid, pwdtype, citycode, trustedacclist, returnurl, provinceid);
            }
            else
            {
                Result.Result           = ErrorDefinition.BT_IError_Result_TicketError_Code;
                Result.ErrorDescription = Ticket + "票据解析失败";
                rspcode      = "-113";
                rsptype      = "8004";
                accountid    = "";
                rspdesc      = Result.ErrorDescription;
                uamreturnxml = xe.BuildUamCustInfoXML_New(actioncode, transactionid, rsptime, digitalsign, rsptype, rspcode, rspdesc, accounttype, accountid, pwdtype, "", trustedacclist, returnurl, provinceid);
            }
        }
        catch (System.Exception ex)
        {
            Result.Result           = 978;
            Result.ErrorDescription = ErrorDefinition.IError_Result_System_UnknowError_Msg + ex.Message;
            rspcode = "978";
            rsptype = "4104";
            rspdesc = ErrorDefinition.IError_Result_System_UnknowError_Msg + ex.Message;
        }
        finally
        {
            //写数据库日志
            try
            {
                #region WriteLog
                StringBuilder msg = new StringBuilder();
                msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\n");
                msg.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "积分反向单点-登录UAM请求客户信息平台断言查询 " + DateTime.Now.ToString("u") + "\r\n");
                msg.Append(";IP - " + HttpContext.Current.Request.UserHostAddress);
                msg.Append(";SPID - " + SPID);
                msg.Append(";Ticket - " + Ticket);
                msg.Append("\r\n");
                msg.Append("返回给uam的报文:\r\n");
                msg.Append(uamreturnxml);
                msg.Append("\r\n");
                msg.Append("处理结果 - " + Result.Result);
                msg.Append("; 错误描述 - " + Result.ErrorDescription);
                msg.Append("; CustID - " + Result.CustID);
                msg.Append("; RealName - " + Result.RealName);
                msg.Append("; UserName - " + Result.UserName);
                msg.Append("; NickName - " + Result.NickName);
                msg.Append("; ExtendField - " + Result.ExtendField + "\r\n");
                msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n");

                BTUCenterInterfaceLog.CenterForBizTourLog("AccountInfoQuery", msg);
                #endregion
            }
            catch { }
        }

        return(uamreturnxml);
    }
예제 #15
0
    protected void Page_Load(object sender, EventArgs e)
    {
        log("step1");
        int Result = ErrorDefinition.IError_Result_UnknowError_Code;

        log("step2");
        if (CommonUtility.IsParameterExist("SSORequestXML", this.Page))  // 带着token过来的是网厅的认证请求
        {
            #region 隐藏
            MBOSSClass mboss = new MBOSSClass();

            SPInfoManager spInfo             = new SPInfoManager();
            string        SPID               = "35999991";
            string        UAProvinceID       = "35";
            string        SourceType         = "";
            string        uaURL              = "";
            string        privateKeyPassword = "";
            string        UserName           = "";
            string        ErrMsg             = "";

            string CAP01002_XML = Request["SSORequestXML"];

            string DigitalSign = MBOSSClass.GetNewXML(CAP01002_XML, "DigitalSign");

            string DigitalSignValue = MBOSSClass.GetValueFromXML(CAP01002_XML, "DigitalSign");
            //从中取出RedirectURL
            string RedirectURL = MBOSSClass.GetValueFromXML(CAP01002_XML, "RedirectURL");
            //验证 CAP01002_XM 合法性
            byte[] PublicKeyFile = new byte[0];

            try
            {
                Object SPData = spInfo.GetSPData(this.Context, "");  //SPDataCacheName 这里要去问tongbo
                PublicKeyFile = spInfo.GetCAInfo(SPID, 0, SPData, out UserName, out privateKeyPassword);
            }
            catch (Exception err)
            {
                //验证签名未通过
                ErrMsg = err.Message;
                Result = -20001;
                Response.Redirect(RedirectURL, true);
                return;
            }

            Result = mboss.VerifySignByPublicKey(DigitalSign, PublicKeyFile, DigitalSignValue, out ErrMsg);
            //<CAPRoot><SessionHeader><ServiceCode>CAP01003</ServiceCode><Version>mbossUacVersion1</Version><ActionCode>0</ActionCode><TransactionID>35000201109254969771818</TransactionID><SrcSysID>35000</SrcSysID><DigitalSign>302C02141DB53BC5D52562D69EFD959B32F6E10D4BF6421E02145983D67CC81B0F376CA688B39F6AD1896EA0E082</DigitalSign><DstSysID>18</DstSysID><ReqTime>20110925000030</ReqTime><Request><ReqType/><ReqCode/><ReqDesc/></Request></SessionHeader><SessionBody><SPSSOAuthReq><RedirectURL>http://Customer.besttone.com.cn/UserPortal/SSO/SelectAssertion.aspx</RedirectURL><AcceptAccountTypeList><AcceptAccountType>0000000</AcceptAccountType></AcceptAccountTypeList></SPSSOAuthReq></SessionBody></CAPRoot>
            log("从网厅来:" + CAP01002_XML);
            if (Result != 0)
            {
                // 签名校验未通过,直接将请求原路打回
                Response.Redirect(RedirectURL, true);
                return;
            }
            string sessionid   = this.Page.Session.SessionID;
            string globaltoken = Request.Cookies[sessionid].Value.ToString();
            uaURL = RedirectURL;
            if (globaltoken != null && !"".Equals(globaltoken))
            {
                this.sendTicket2UA(uaURL);
            }
            else
            {
                this.Response.Redirect(uaURL);
            }

            #endregion
        }
        else
        {
            //不带token的是积分商城过来的认证请求
            string direction  = Request["Direction"];
            string CookieName = System.Configuration.ConfigurationManager.AppSettings["CookieName"];
            string key0       = System.Configuration.ConfigurationManager.AppSettings["ScoreSystemSecret"];

            if (CommonUtility.IsParameterExist("Direction", this.Page))
            {
                #region 反向登录到集团网厅方向
                string ProvinceID = Request["ProvinceID"];
                if ("uam".Equals(direction))
                {
                    //获取本地的token,如果没有token则返回到积分商城登录
                    //string token = Request.Cookies[CookieName].Value;
                    String token = PageUtility.GetCookie(CookieName);
                    if (String.IsNullOrEmpty(token))
                    {
                        Response.Redirect("http://www.ct10000.com");
                    }

                    string ProvinceID0 = "";  // 2013.01.23 添加
                    string CustID0     = "";
                    string RealName0   = "";
                    string UserName0   = "";
                    string NickName0   = "";
                    string OuterID0    = "";
                    string CustType0   = "";
                    string AuthenName0 = "";
                    string AuthenType0 = "";
                    string ErrMsg0     = "";

                    //解析token
                    UserToken UT0 = new UserToken();
                    // 2013.01.23 修改
                    //int Result0 = UT0.ParseUserToken(token, key0, out CustID0, out RealName0, out UserName0, out NickName0, out OuterID0, out CustType0, out AuthenName0, out AuthenType0, out ErrMsg0);
                    int Result0 = UT0.ParseScoreUserToken(token, key0, out ProvinceID0, out CustID0, out RealName0, out UserName0, out NickName0, out OuterID0, out CustType0, out AuthenName0, out AuthenType0, out ErrMsg0);
                    //日志
                    log(String.Format("【token解析结果:】Result:{0},ErrMsg:{1},AuthenName:{2},AuthenType:{3},CustID:{4},OuterID:{5},CustType:{6}", Result0, ErrMsg0, AuthenName0, AuthenType0, CustID0, OuterID0, CustType0));

                    if (Result0 == 0)
                    {
                        //生成ticket,反向单点登录要求ticket前面加上省id
                        //string sDate = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                        //Random r = new Random();
                        //string ticket = ProvinceID + sDate + r.Next(10000, 99999).ToString();
                        string ticket = ProvinceID + CommonBizRules.CreateTicket();
                        //积分商城
                        SPID = "35000010";
                        //将ticket插入数据库
                        Result = CIPTicketManager.insertCIPTicket(ticket, SPID, CustID0, RealName0, NickName0, UserName0, OuterID0, "", AuthenName0, AuthenType0, out ErrMsg0);

                        log(String.Format("【ticket生成结果:{0}】Result:{1},ErrMsg:{2},ticket:{3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Result, ErrMsg0, ticket));

                        if (Result != 0)
                        {
                            this.Response.Redirect("http://www.ct10000.com");
                        }
                        string uamURL = System.Configuration.ConfigurationManager.AppSettings["UAMUrl"] + "?AccountIndex=" + ticket;

                        log(String.Format("【登录网厅:{0}】uamURL:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), uamURL));

                        this.Response.Redirect(uamURL);
                    }
                    else
                    {
                        this.Response.Redirect("http://www.ct10000.com");
                    }
                }
                else
                {
                    this.Response.Redirect("http://www.ct10000.com");
                }
                #endregion
            }
            else
            {
                if (!this.IsPostBack)
                {
                    #region 积分商城直接登录

                    string SPTokenRequest = Request["SPTokenRequest"];
                    log(String.Format("【SPTokenRequest参数为:{1}】SPTokenRequest:{0}", SPTokenRequest, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));

                    string key        = System.Configuration.ConfigurationManager.AppSettings["ScoreSystemSecret"];
                    string JFLoginUrl = System.Configuration.ConfigurationManager.AppSettings["JFLoginUrl"];
                    //生成全局token写入cookie,该全局token为了将来网厅请求时候,查询该客户登陆状态用
                    UserToken UT = new UserToken();

                    ProvinceID  = Request["ProvinceID"];
                    AuthenType  = Request["AuthenType"];
                    AuthenName  = Request["AuthenName"];
                    Password    = Request["Password"];
                    ReturnURL   = Request["ReturnURL"]; // 这个ReturnUrl 用来还给积分商城ticket用
                    AccountType = Request["AccountType"];

                    string RealName    = "";
                    string UserName    = "";
                    string NickName    = "";
                    string CustType    = "";
                    string CustID      = "";
                    string ErrMsg      = "";
                    string OutID       = "";
                    string UserAccount = "";
                    string SPID        = "";

                    //解析SPTokenRequest参数
                    int Resultjf = SSOClass.ParseJFLoginRequest(SPTokenRequest, this.Context, out SPID, out ProvinceID, out AuthenType, out AuthenName, out Password, out ReturnURL, out ErrMsg);

                    if (Resultjf != 0)
                    {
                        //日志
                        log(String.Format("【解析SPTokenRequest参数失败:{0}】Result:{1},ErrMsg:{2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Result, ErrMsg));
                        string err = System.Web.HttpUtility.UrlEncode("积分商城请求的token解密失败!ErrMsg=" + ErrMsg, Encoding.UTF8);
                        Response.Redirect(JFLoginUrl + "?Result=" + Resultjf + "&ErrMsg=" + err, true);
                        return;
                    }
                    //日志
                    log(String.Format("【解析SPTokenRequest参数成功:{0}】SPID:{1},ProvinceID:{2},AuthenType:{3},AuthenName:{4},ReturnURL:{5}",
                                      DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), SPID, ProvinceID, AuthenType, AuthenName, ReturnURL));

                    string o_ProvinceID = "";
                    Result = BTForBusinessSystemInterfaceRules.UserAuthV2(SPID, AuthenName, AuthenType, Password, this.Context, ProvinceID, "", "",
                                                                          out ErrMsg, out CustID, out UserAccount, out CustType, out OutID, out o_ProvinceID, out RealName, out UserName, out NickName);

                    //日志
                    log(String.Format("【Crm认证结果:{0}】Result:{1},ErrMsg:{2},CustID:{3},UserAccount:{4},CustType:{5},OutID:{6},ProvinceID:{7}",
                                      DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Result, ErrMsg, CustID, UserAccount, CustType, OutID, o_ProvinceID));

                    if (Result != 0)
                    {
                        string err         = System.Web.HttpUtility.UrlEncode(ErrMsg, Encoding.UTF8);
                        string jf_loginUrl = "";
                        if (ReturnURL.IndexOf("?") > 0)
                        {
                            jf_loginUrl = ReturnURL + "&Result=" + Result + "&ErrMsg=" + err;
                        }
                        else
                        {
                            jf_loginUrl = ReturnURL + "?Result=" + Result + "&ErrMsg=" + err;
                        }

                        //直接将请求原路打回 --假设请求中有ReturnURL
                        Response.Redirect(jf_loginUrl + "", true);
                        return;
                    }
                    //生成token 修改 2013.01.23
                    string UserTokenValue = UT.GenerateJFUserToken(ProvinceID, CustID, RealName, UserName, NickName, OutID, CustType, AuthenName, AuthenType, key, out ErrMsg);
                    //UT.GenerateUserToken(CustID, RealName, UserName, NickName, OutID, CustType, AuthenName, AuthenType, key, out ErrMsg);
                    log("token-Result:" + Result);
                    string CookieName0 = System.Configuration.ConfigurationManager.AppSettings["CookieName"];  //CookieName = CIPUT
                    PageUtility.SetCookie(UserTokenValue, CookieName0, this.Page);

                    //生成流水号
                    //string TransactionId = "";
                    //string sDate = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                    //Random r = new Random(Guid.NewGuid().GetHashCode());
                    //TransactionId = "35999999" + sDate + r.Next(10000, 99999).ToString();
                    String TransactionId = "35999999" + CommonBizRules.CreateTransactionID();

                    //生成ticket
                    //sDate = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                    //r = new Random();
                    //string Ticket = sDate + r.Next(10000, 99999).ToString();
                    String Ticket = CommonBizRules.CreateTicket();

                    StringBuilder msg0 = new StringBuilder();
                    msg0.Append("++++++++++++++++++++++++++++++++++++++token===++++++++++++++++++++" + UserTokenValue + "++++++++++++++++++++++++++\r\n");
                    BTUCenterInterfaceLog.CenterForBizTourLog("REVERSE-SSO", msg0);

                    this.sendTicket2JF(Ticket, CustID, RealName, UserAccount, OutID, UserName, AuthenName, AuthenType, NickName);

                    #endregion
                }
            }
        }
    }
예제 #16
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 { }
        }
    }