Пример #1
0
        protected override void OnPreRender(EventArgs e)
        {
            HtmlAnchor anchor = new HtmlAnchor();

            anchor.ID   = "bindingUrlTemplate";
            anchor.HRef = GetBindingPageUrl();

            this.bindingUrlContainer.Text = anchor.GetHtml();

            this.simulateDateRow.Visible = PassportSignInSettings.GetConfig().UseSimulateTime;

            if (this._Owner != null)
            {
                this.culture.Value = this._Owner.PageData.Properties.GetValue("SignInCulture", "zh-CN");

                string tenantCode = PassportManager.GetTenantCodeFromContext();

                if (tenantCode.IsNullOrEmpty())
                {
                    tenantCode = this._Owner.PageData.Properties.GetValue("TenantCode", string.Empty);
                }

                this.tenantCode.Text = tenantCode;
            }

            base.OnPreRender(e);
        }
Пример #2
0
        /// <summary>
        /// 从Cookie中装载页面配置信息
        /// </summary>
        public void LoadFromCookie()
        {
            HttpContext context = HttpContext.Current;

            HttpCookie cookie = context.Request.Cookies[PassportSignInSettings.GetConfig().SignInPageDataCookieKey];

            if (cookie != null)
            {
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();

                    xmlDoc.LoadXml(Base64StringToCookieValue(cookie.Value));

                    this.userID         = XmlHelper.GetSingleNodeText(xmlDoc.DocumentElement, "UID");
                    this.dontSaveUserID = XmlHelper.GetSingleNodeValue(xmlDoc.DocumentElement, "DSUID", false);
                    this.autoSignIn     = XmlHelper.GetSingleNodeValue(xmlDoc.DocumentElement, "ASI", false);

                    this.LoadProperties(xmlDoc.DocumentElement);
                }
                catch (System.Exception)
                {
                    //忽略cookie中的内容错误
                }
            }
        }
        private void signInControl_AfterSignIn(SignInContext context)
        {
            if (context.ResultType == SignInResultType.Success)
            {
                if (PassportSignInSettings.GetConfig().UseSimulateTime)
                {
                    context.SignInInfo.Properties["SimulateTime"] = this.simulateDate.Value;

                    IPersistTimePoint persister = TimePointSimulationSettings.GetConfig().Persister;

                    if (persister != null)
                    {
                        OguObjectCollection <IUser> users = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.LogOnName, context.SignInInfo.UserID);

                        if (users.Count > 0)
                        {
                            persister.SaveTimePoint(users[0].ID, this.simulateDate.Value);

                            TimePointContext tpc = new TimePointContext();

                            tpc.UseCurrentTime = this.simulateDate.Value == DateTime.MinValue;
                            tpc.SimulatedTime  = this.simulateDate.Value;

                            tpc.SaveToCookie();
                        }
                    }
                }
            }
        }
Пример #4
0
 private void AdjustSignInTimeout(ISignInInfo signInInfo)
 {
     if (PassportSignInSettings.GetConfig().HasSlidingExpiration)
     {
         signInInfo.SignInTime = SNTPClient.AdjustedTime;
     }
 }
Пример #5
0
        protected override void OnPreRender(EventArgs e)
        {
            this.simulateDateRow.Visible = PassportSignInSettings.GetConfig().UseSimulateTime;
            Page.ClientScript.RegisterHiddenField("buttonName", this.SignInButton.ClientID);

            base.OnPreRender(e);
        }
Пример #6
0
 private void AdjustSignInTimeout(ISignInInfo signInInfo)
 {
     if (PassportSignInSettings.GetConfig().HasSlidingExpiration)
     {
         signInInfo.SignInTime = DateTime.Now;
     }
 }
Пример #7
0
        private void LogOffAllAPP(LogOffInfo info)
        {
            List <AppLogOffCallBackUrl> urls = info.GetAllRelativeAppsLogOffCallBackUrl();

            this.RenderCallBackUrls(urls);

            PassportSignInSettings.GetConfig().PersistSignInInfo.DeleteRelativeSignInInfo(info.SessionID);
            PassportManager.ClearSignInCookie();
        }
Пример #8
0
        private void LogOffAllAPP(string sessionID, string appID, string callbackUrl)
        {
            ExceptionHelper.CheckStringIsNullOrEmpty(sessionID, "sessionID");
            ExceptionHelper.CheckStringIsNullOrEmpty(appID, "appID");
            ExceptionHelper.CheckStringIsNullOrEmpty(callbackUrl, "callbackUrl");

            List <AppLogOffCallBackUrl> list =
                PassportSignInSettings.GetConfig().PersistSignInInfo.GetAllRelativeAppsLogOffCallBackUrl(sessionID);

            if (AppLogOffCallBackUrlExist(list, appID, callbackUrl) == false)
            {
                AppLogOffCallBackUrl au = new AppLogOffCallBackUrl();

                au.AppID             = appID;
                au.LogOffCallBackUrl = callbackUrl;

                list.Add(au);
            }

            HtmlTable table = new HtmlTable();

            tableContainer.InnerHtml = string.Empty;
            tableContainer.Controls.Add(table);

            foreach (AppLogOffCallBackUrl au in list)
            {
                HtmlTableRow tRow = new HtmlTableRow();
                table.Controls.Add(tRow);

                HtmlTableCell cell = new HtmlTableCell();
                cell.InnerText = " ";
                tRow.Controls.Add(cell);

                cell = new HtmlTableCell();
                tRow.Controls.Add(cell);

                HtmlImage img = new HtmlImage();
                img.Align = "absmiddle";
                img.Src   = au.LogOffCallBackUrl;
                img.Alt   = img.Src;
                cell.Controls.Add(img);

                cell           = new HtmlTableCell();
                cell.InnerText = string.Format(Translate("退出应用程序{0}"), au.AppID);
                tRow.Controls.Add(cell);
            }

            PassportSignInSettings.GetConfig().PersistSignInInfo.DeleteRelativeSignInInfo(sessionID);
            PassportManager.ClearSignInCookie();
        }
Пример #9
0
        /// <summary>
        /// 如果登录信息依然有效,可以自动转到应用页面
        /// </summary>
        /// <param name="signInInfo">登录信息</param>
        private void AutoSignIn(ISignInInfo signInInfo)
        {
#if DELUXEWORKSTEST
            Debug.WriteLine("Timeout Datetime: " + signInInfo.SignInTimeout.ToString("yyyy-MM-dd HH:mm:ss"), "SignInPage Check");
#endif
            if (IsSignInInfoInvalid(signInInfo) == false)
            {
                AdjustSignInTimeout(signInInfo);

                PassportSignInSettings.GetConfig().PersistSignInInfo.SaveSignInInfo(signInInfo);

                signInInfo.SaveToCookie();
                RedirectToAppUrl(GenerateTicket(signInInfo));
            }
        }
Пример #10
0
        protected void signInControl_AfterSignIn(SignInContext context)
        {
            if (context.ResultType == SignInResultType.Success)
            {
                string consistentID = PassportSignInSettings.GetConfig().UserIDConverter.GetUserConsistentID(context.UserID);

                OpenIDBinding binding = new OpenIDBinding();

                binding.UserID     = consistentID;
                binding.OpenID     = Request.QueryString.GetValue("openID", string.Empty);
                binding.OpenIDType = Request.QueryString.GetValue("openIDType", string.Empty);

                PassportSignInSettings.GetConfig().PersistOpenIDBinding.SaveOpenIDBinding(binding);
            }
        }
Пример #11
0
        protected override void OnPreRender(EventArgs e)
        {
            if (OpenIDIdentity.Current != null)
            {
                this.openIDContainer.InnerText = OpenIDIdentity.Current.OpenID;

                OpenIDBinding binding = PassportSignInSettings.GetConfig().PersistOpenIDBinding.GetBindingByOpenID(OpenIDIdentity.Current.OpenID);

                if (binding != null)
                {
                    this.userIDContainer.InnerText = binding.UserID;
                }
            }

            base.OnPreRender(e);
        }
Пример #12
0
        private void ShowBindingLinks()
        {
            OpenIDBindingCollection bindings =
                PassportSignInSettings.GetConfig().PersistOpenIDBinding.GetBindingsByUserID(DeluxeIdentity.CurrentUser.ID);

            foreach (OpenIDBinding binding in bindings)
            {
                string openIDUrl = string.Format("../AnonymousTestPage/OpenIDIdentityTest.aspx?openID={0}", binding.OpenID);

                string anchor = string.Format("<a href=\"{0}\">{0}</a>", openIDUrl);

                string name = string.Format("OpenID({0})", binding.OpenIDType);

                ShowSinglePrincipalHtmlInfo(principalInfo, name, anchor);
            }
        }
Пример #13
0
        private SignInContext DoPostAuthenticateOP(ISignInInfo signInInfo)
        {
            SignInContext result = new SignInContext(
                SignInResultType.Success,
                signInInfo.UserID, signInInfo,
                CollectPageData(),
                (string)PassportWebControlHelper.GetControlValue(this.TemplateControl, "clientEnv", "Value", string.Empty),
                null);

            OnSignInComplete(result);

            PassportSignInSettings.GetConfig().PersistSignInInfo.SaveSignInInfo(signInInfo);

            signInInfo.SaveToCookie();

            return(result);
        }
Пример #14
0
        private void RenderBindings(Control parent)
        {
            OpenIDBindingCollection bindings =
                PassportSignInSettings.GetConfig().PersistOpenIDBinding.GetBindingsByUserID(DeluxeIdentity.CurrentUser.ID);

            SocialPassportSettings settings = SocialPassportSettings.GetConfig();

            foreach (OpenIDBinding binding in bindings)
            {
                SocialConnectionConfigurationElement element = settings.Connections[binding.OpenIDType];

                if (element != null)
                {
                    RenderBindingInfo(parent, binding, element);
                }
            }
        }
Пример #15
0
        private void signInControl_AfterSignIn(SignInContext context)
        {
            if (context.Exception == null)
            {
                if (PassportSignInSettings.GetConfig().UseSimulateTime)
                {
                    SaveSimulateTime(context, this.simulateDate.Value);
                }

                SetCultureInfo(context, this.culture.Value);

                TenantContext.Current.TenantCode = this.tenantCode.Text;
                context.SignInInfo.TenantCode    = this.tenantCode.Text;

                context.PageData.Properties["SignInCulture"] = this.culture.Value;
                context.PageData.Properties["TenantCode"]    = this.tenantCode.Text;
            }
        }
Пример #16
0
        /// <summary>
        /// 判断SignInInfo状态,如果在SignInInfo合法情况下,基于Session的Cookie,或者用户选择自动登录的进行自动登录。
        /// </summary>
        private void Initialize()
        {
            Control signInBtn = PassportWebControlHelper.FindControlRecursively(this.TemplateControl, "SignInButton");

            if (signInBtn != null && signInBtn is IButtonControl)
            {
                ((IButtonControl)signInBtn).Click += new EventHandler(SignInButton_Click);
            }

            if (Page.IsPostBack == false)
            {
                //从Cookie中得到登录信息
                ISignInInfo signInInfo = SignInInfo.LoadFromCookie();

                if (signInInfo != null)
                {
                    Trace.WriteLine(string.Format("认证服务,从cookie中得到用户{0}的认证信息", signInInfo.UserID), "PassportSDK");
                }

                this._PageData.LoadFromCookie();

                PassportSignInSettings settings = PassportSignInSettings.GetConfig();

                if (IsSignInInfoInvalid(signInInfo) == false)   //SignIn Info非法
                {
                    if (settings.IsSessionBased || this.PageData.AutoSignIn)
                    {
                        if (IsSelfAuthenticate == false)
                        {
                            AutoSignIn(signInInfo);     //May be execute Response.End when redirect to app's url
                        }
                    }
                }

                if (Page.IsPostBack == false)
                {
                    InitForm(this.PageData);
                }

                Page.Response.Expires = 0;
            }
        }
Пример #17
0
        /// <summary>
        /// 存入Cookie中
        /// </summary>
        public void SaveToCookie()
        {
            HttpContext context = HttpContext.Current;

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml("<Data/>");

            XmlHelper.AppendNode(xmlDoc.DocumentElement, "UID", this.userID);
            XmlHelper.AppendNode(xmlDoc.DocumentElement, "DSUID", this.dontSaveUserID.ToString());
            XmlHelper.AppendNode(xmlDoc.DocumentElement, "ASI", this.autoSignIn.ToString());
            this.AppendPropertiesNode(xmlDoc.DocumentElement);

            HttpCookie cookie = new HttpCookie(PassportSignInSettings.GetConfig().SignInPageDataCookieKey);

            cookie.Value   = CookieValueToBase64String(xmlDoc.InnerXml);
            cookie.Expires = DateTime.MaxValue;

            context.Response.Cookies.Add(cookie);
        }
Пример #18
0
        protected ISignInUserInfo signInControl_InitSignInControl()
        {
            DefaultSignInUserInfo result = null;

            string openID = Request.QueryString.GetValue("openID", string.Empty);

            if (openID.IsNotEmpty())
            {
                OpenIDBinding binding = PassportSignInSettings.GetConfig().PersistOpenIDBinding.GetBindingByOpenID(openID);

                if (binding != null)
                {
                    result = new DefaultSignInUserInfo();

                    string logonName = PassportSignInSettings.GetConfig().UserIDConverter.GetUserLogonName(binding.UserID);

                    result.UserID         = logonName;
                    result.OriginalUserID = logonName;
                }
            }

            return(result);
        }
Пример #19
0
        private void LogOffAllAPP(string sessionID, string appID, string callbackUrl)
        {
            ExceptionHelper.CheckStringIsNullOrEmpty(sessionID, "sessionID");
            ExceptionHelper.CheckStringIsNullOrEmpty(appID, "appID");
            ExceptionHelper.CheckStringIsNullOrEmpty(callbackUrl, "callbackUrl");

            List <AppLogOffCallBackUrl> urls =
                PassportSignInSettings.GetConfig().PersistSignInInfo.GetAllRelativeAppsLogOffCallBackUrl(sessionID);

            if (AppLogOffCallBackUrlExist(urls, appID, callbackUrl) == false)
            {
                AppLogOffCallBackUrl au = new AppLogOffCallBackUrl();

                au.AppID             = appID;
                au.LogOffCallBackUrl = callbackUrl;

                urls.Add(au);
            }

            this.RenderCallBackUrls(urls);

            PassportSignInSettings.GetConfig().PersistSignInInfo.DeleteRelativeSignInInfo(sessionID);
            PassportManager.ClearSignInCookie();
        }
 private static void ChangeUserPassword(string userID, string oldPassword, string newPassword)
 {
     PassportSignInSettings.GetConfig().UserInfoUpdater.ChangePassword(userID, oldPassword, newPassword);
 }
Пример #21
0
 private void RemoveBinding(string openID)
 {
     PassportSignInSettings.GetConfig().PersistOpenIDBinding.RemoveOpenIDBinding(openID);
 }
Пример #22
0
        protected override void OnPreRender(EventArgs e)
        {
            this.simulateDateRow.Visible = PassportSignInSettings.GetConfig().UseSimulateTime;

            base.OnPreRender(e);
        }
Пример #23
0
 private IAuthenticator2 GetAuthenticator2()
 {
     return(PassportSignInSettings.GetConfig().Authenticator2);
 }
Пример #24
0
        private void InitForm(SignInPageData pd)
        {
            if (pd.DontSaveUserID == false)
            {
                PassportWebControlHelper.SetControlValue(this.TemplateControl, "signInName", "Text", pd.UserID);
            }

            PassportWebControlHelper.SetControlValue(this.TemplateControl, "autoSignIn", "Checked", pd.AutoSignIn);
            PassportWebControlHelper.SetControlValue(this.TemplateControl, "dontSaveUserName", "Checked", pd.DontSaveUserID);
            PassportWebControlHelper.SetControlValue(this.TemplateControl, "autoSignIn", "Visible", PassportSignInSettings.GetConfig().IsSessionBased == false);
        }