/// <summary>
 /// 从服务端获取身份令牌
 /// </summary>
 /// <returns></returns>
 public string GetToken(string clienid, string username, string password, string appSecret)
 {
     try
     {
         IdentityCheckEntity identity = new IdentityCheckEntity()
         {
             clienid   = clienid,
             nonce     = new Random().NextDouble().ToString(),
             timestamp = Convert.ToInt64((DateTime.UtcNow - _unixEpoch).TotalSeconds).ToString(),
             username  = username,
             password  = password,
         };
         identity.signature = SignatureString(appSecret, identity.timestamp, identity.nonce);
         HttpItem item = new HttpItem()
         {
             URL         = "http://localhost:8375/api/token/Get", //URL     必需项
             Method      = "post",                                //URL     可选项 默认为Get
             IsToLower   = false,                                 //得到的HTML代码是否转成小写     可选项默认转小写
             ContentType = "application/json",
             Accept      = "application/json",
             Postdata    = JsonHelper.Serialize(identity)
         };
         var result = new HttpHelper().GetHtml(item);
         if (result.StatusCode != HttpStatusCode.OK)
         {
             Console.WriteLine(string.Format("获取Token失败:请求参数->clienid:{0};nonce:{1};timestamp:{2};username:{3};password:{4};appSecret:{5};signature:{6},错误内容:{7}", identity.clienid, identity.nonce, identity.timestamp, identity.username, identity.password, identity.signature, result.Html));
         }
         return(result.Html);
     }
     catch (Exception ex)
     {
         Console.WriteLine(string.Format("请求异常->获取Token失败"), ex);
         throw ex;
     }
 }
        /// <summary>
        /// 获取通讯令牌
        /// </summary>
        /// <param name="Eitity"></param>
        /// <returns></returns>
        public TokenInfoEntity GetToken(IdentityCheckEntity Eitity)
        {
            var Eitityinfo = new TokenInfoEntity();

            Eitityinfo.errmsg  = "数据完整性检查不通过";
            Eitityinfo.success = false;
            if (Eitity != null)
            {
                var Thirdparty = this.thirdPartys.First(o => o.clientId == Eitity.clienid);
                if (Thirdparty == null)
                {
                    return(Eitityinfo);                   //第三方请求对象不存在,返回请求
                }
                //根据入参获取身份签名,并进行身份签名对比
                string tmpStr = SignatureString(Thirdparty.clientSecret, Eitity.timestamp, Eitity.nonce);
                if (tmpStr != Eitity.signature.ToLower())
                {
                    return(Eitityinfo);                                                     //签名验证不通过,返回请求
                }
                DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(_unixEpoch);
                long     lTime   = long.Parse(Eitity.timestamp + "0000000");
                TimeSpan toNow   = new TimeSpan(lTime);
                dtStart = dtStart.Add(toNow);

                double minutes = DateTime.Now.Subtract(dtStart).TotalMinutes;
                if (minutes > this.timspanExpiredMinutes)
                {
                    Eitityinfo.errmsg  = "签名时间戳失效";
                    Eitityinfo.success = false;
                    return(Eitityinfo);
                }
                if (Eitity.username.ToLower() != Thirdparty.userName.ToLower() || Eitity.password != Thirdparty.passWord)
                {
                    Eitityinfo.success = false;
                    Eitityinfo.errmsg  = "用户名或密码错误";
                    return(Eitityinfo);
                }
                TimeSpan t         = (DateTime.UtcNow - _unixEpoch);
                int      timestamp = (int)t.TotalDays;
                var      tokenload = new Dictionary <string, object>
                {
                    { "iss", Eitity.clienid },           //issuer     请求对象
                    { "iat", timestamp },                //时间戳,当前单位天
                    { "username", Thirdparty.userName }, //请求账户名
                };
                Eitityinfo.accesstoken = JsonWebToken.Encode(tokenload, this.sharedKey, JwtHashAlgorithm.HS256);
                Eitityinfo.expiresin   = this.tokenExpiredDay * 24 * 3600;
                Eitityinfo.errmsg      = "";
                Eitityinfo.success     = true;
            }
            return(Eitityinfo);
        }
        public TokenInfoEntity Get(IdentityCheckEntity entity)
        {
            var service = new UzaiSecurityVerificationLogicService();

            return(service.GetToken(entity));
        }