protected void OKButton_Click(object sender, EventArgs e)
        {
            SubscriberTableAdapter sta = new SubscriberTableAdapter();
            DataSet.SubscriberDataTable dt = sta.GetDataByAuthKey(AuthenticationKeyTextBox.Text);
            if (dt.Count == 0)
            {
                InvalidKeyLabel.Text = "���͂��ꂽ�F�؃L�[�͖����ł��B";
                return;
            }
            DataSet.SubscriberRow subscriber = dt[0];
            TokenPublisher p = new TokenPublisher(subscriber, DateTime.Now);
            DataSet.TokenRow token;
            try
            {
                token = p.Publish();
            }
            catch (DoubtfulAuthBehaviorException ex)
            {
                p.LockOut();
                logger.Info(ex.Message);
                WebUtil.RedirectToLockout(Context, subscriber.LockoutUntil);
                return;
            }
            WebUtil.AddAuthCookie(Response, token.Body);

            if (Request.QueryString["from"] != null && Request.QueryString["from"].Length > 0)
            {
                Response.Redirect(HttpUtility.UrlDecode(Request.QueryString["from"]));
            }
        }
예제 #2
0
        public void Test_Properties()
        {
            using (TransactionScope scope = new TransactionScope())
            {
                TitleTableAdapter tta = new TitleTableAdapter();
                tta.Insert("test title", "test push message", basePath + @"\copyDirectory_dist", basePath + @"\copyDirectory_orig");
                DataSet.TitleRow title = tta.GetDataByName("test title")[0];

                SubscriberTableAdapter sta = new SubscriberTableAdapter();
                sta.Insert(title.Id, "test authkey", "web", Constant.Ago);
                sta.Insert(title.Id, "test authkey 2", "web", new DateTime(2011, 10, 13));
                DataSet.SubscriberDataTable sdt = sta.GetDataByTitleId(title.Id);
                DataSet.SubscriberRow s1, s2;
                if (sdt[0].AuthenticationKey == "test authkey")
                {
                    s1 = sdt[0];
                    s2 = sdt[1];
                }
                else
                {
                    s2 = sdt[0];
                    s1 = sdt[1];
                }

                TokenTableAdapter kta = new TokenTableAdapter();
                kta.Insert(s1.Id, new DateTime(2011, 10, 12, 0, 0, 0), "deadbeef");
                kta.Insert(s2.Id, new DateTime(2011, 10, 12, 4, 59, 50), "deadbeef2");
                DataSet.TokenRow k1, k2;
                k1 = kta.GetDataByBody("deadbeef")[0];
                k2 = kta.GetDataByBody("deadbeef2")[0];

                Expect(SiteConstant.IsConfigurationOK, Is.EqualTo(true));

                DateTime now = new DateTime(2011, 10, 12, 5, 0, 0);

                TokenPublisher p1 = new TokenPublisher(s1, now);
                DataSet.TokenRow pk1 = p1.Publish();
                Expect(pk1.Id, Is.Not.EqualTo(k1.Id));

                TokenPublisher p2 = new TokenPublisher(s2, now);
                DataSet.TokenRow pk2 = p2.Publish();
                Expect(pk2.Id, Is.EqualTo(k2.Id));

                kta.Insert(s2.Id, new DateTime(2011, 10, 12, 4, 59, 10), "deadbeef3");
                kta.Insert(s2.Id, new DateTime(2011, 10, 12, 4, 59, 20), "deadbeef4");

                TokenPublisher p2_2 = new TokenPublisher(s2, now);
                try
                {
                    p2_2.Publish();
                    Expect(false);
                }
                catch (DoubtfulAuthBehaviorException)
                {
                    // OK
                }
                Expect(kta.GetDataBySubscriberId(s2.Id).Count, Is.EqualTo(3));
            }
        }
예제 #3
0
        public override void AuthenticateRequest(HttpContext context)
        {
            if (context.Request.Cookies[SiteConstant.AuthTokenCookieName] == null)
            {
                WebUtil.RedirectToAskAuthPage(context);
                return;
            }
            string tokenBody = context.Request.Cookies[SiteConstant.AuthTokenCookieName].Value;
            TokenVerifier v = new TokenVerifier(tokenBody, now);
            if (!v.IsValid)
            {
                logger.Info("token invalid. RequestInfo: " + WebUtil.RequestInfo(context));
                WebUtil.RedirectToAskAuthPage(context);
                return;
            }
            if (v.IsLockedOut)
            {
                logger.Info("token is locked out. RequestInfo: " + WebUtil.RequestInfo(context));
                WebUtil.RedirectToLockout(context, v.Subscriber.LockoutUntil);
                return;
            }
            if (v.IsOutdated)
            {
                logger.Info("token is Outdated. RequestInfo: " + WebUtil.RequestInfo(context));
                TokenPublisher p = new TokenPublisher(v.Subscriber, now);
                DataSet.TokenRow t;
                try
                {
                    t = p.Publish();
                }
                catch (DoubtfulAuthBehaviorException e)
                {
                    p.LockOut();
                    logger.Info(e.Message);
                    WebUtil.RedirectToLockout(context, v.Subscriber.LockoutUntil);
                    return;
                }
                catch (Exception ex)
                {
                    logger.Error("�F�؃g�[�N���̔��s�Ɏ��s���܂���", ex);
                    context.Response.StatusCode = (int) HttpStatusCode.InternalServerError;
                    context.Response.End();
                    return;
                }
                HttpCookie cookie = new HttpCookie(SiteConstant.AuthTokenCookieName, t.Body);
                cookie.Expires = DateTime.MaxValue;
                context.Response.Cookies.Add(cookie);
            }

            context.User = new GenericPrincipal(new GenericIdentity("user"), null);
        }