private bool AuthenticateRequestImpl(HttpContext context)
        {
            string tokenBody = context.Request.Headers[SiteConstant.AuthTokenRequestResposeHeaderName];
            if (tokenBody == null)
            {
                logger.Info("�F�؃g�[�N���̂Ȃ����N�G�X�g������܂����BRequestInfo: " + WebUtil.RequestInfo(context));
                return false;
            }

            logger.Info("token:" + tokenBody + " RequestInfo:" + WebUtil.RequestInfo(context));
            TokenVerifier v = new TokenVerifier(tokenBody, now);
            if (!v.IsValid)
            {
                logger.Info("token invalid. RequestInfo: " + WebUtil.RequestInfo(context));
                return false;
            }
            if (!v.IsAuthScheme(AuthScheme.iOS_APNs))
            {
                logger.Info("scheme is not APNs. RequestInfo: " + WebUtil.RequestInfo(context));
                // return false;
            }
            if (v.IsLockedOut)
            {
                logger.Info("token is locked out. RequestInfo: " + WebUtil.RequestInfo(context));
                // return false;
            }
            if (!v.IsLiving)
            {
                logger.Info("token is not living. RequestInfo: " + WebUtil.RequestInfo(context));
                // return false;
            }
            if (v.IsOutdated)
            {
                logger.Info("token is Outdated. RequestInfo: " + WebUtil.RequestInfo(context));
                context.Response.Headers[SiteConstant.AuthStatusRequestResposeHeaderName] = "Outdated";
            }

            APNsTableAdapter ata = new APNsTableAdapter();
            DataSet.APNsDataTable adt = ata.GetDataBySubscriberId(v.Subscriber.Id);
            if (adt[0].UnreadRelease > 0)
            {
                adt[0].UnreadRelease = 0;
                ata.Update(adt);
            }

            context.User = new GenericPrincipal(new GenericIdentity("user"), null);
            return true;
        }
        private bool AuthenticateRequestImpl(HttpContext context)
        {
            string tokenBody = context.Request.Headers[SiteConstant.AuthTokenRequestResposeHeaderName];
            if (tokenBody == null)
            {
                logger.Info("�F�؃g�[�N���̂Ȃ����N�G�X�g������܂����BRequestInfo: " + WebUtil.RequestInfo(context));
                return false;
            }

            TokenVerifier v = new TokenVerifier(tokenBody, now);
            if (!v.IsValid)
            {
                logger.Info("token invalid. RequestInfo: " + WebUtil.RequestInfo(context));
                // return false;
            }
            if (!v.IsAuthScheme(AuthScheme.Android_LVL))
            {
                logger.Info("scheme is not Android_LVL. RequestInfo: " + WebUtil.RequestInfo(context));
                // return false;
            }
            if (v.IsLockedOut)
            {
                logger.Info("token is locked out. RequestInfo: " + WebUtil.RequestInfo(context));
                // return false;
            }
            if (!v.IsLiving)
            {
                logger.Info("token is not living. RequestInfo: " + WebUtil.RequestInfo(context));
                // return false;
            }
            if (v.IsOutdated)
            {
                logger.Info("token is Outdated. RequestInfo: " + WebUtil.RequestInfo(context));
                context.Response.Headers[SiteConstant.AuthStatusRequestResposeHeaderName] = "Outdated";
            }
            context.User = new GenericPrincipal(new GenericIdentity("user"), null);
            return true;
        }