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; } }
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; } }
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; } }
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; } }
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()); } }
/// <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()); } }
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); } } }
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()); } }
/// <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()); } }
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"))); } }
/// <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()); } }
/// <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()); } }
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 { } } }
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); }
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 } } } }
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 { } } }