Exemple #1
0
        /// <summary>
        /// Jwt 加密
        /// </summary>
        /// <returns></returns>
        public static string Encode(string secret)
        {
            var payload = new Dictionary <string, object>
            {
                { "UserId", 123 },
                { "UserName", "admin" }
            };

            // 加一个过期时间
            payload.Add("timeOut", DateTime.Now.AddDays(1));

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
            var token = encoder.Encode(payload, secret);

            // token的值: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJVc2VySWQiOjEyMywiVXNlck5hbWUiOiJhZG1pbiJ9.DErsX4o_WfxEw80gHSgjcfDAVCfV5WulmDb34QHpo70
            // token中有两个点将token分割为三部分,第一部分对应header,第二部分对应的是明文,第三部分是校验部分

            return(token);
        }
        public static string GetToken()
        {
            var now = _provider.GetNow().AddHours(2);

            //var unixEpoch = JwtValidator; // 1970-01-01 00:00:00 UTC
            var secondsSinceEpoch = 5000;
            //Math.Round((now - unixEpoch).TotalSeconds);
            var payload = new Dictionary <string, object>
            {
                //{ "claim1", 0 },
                //{ "claim2", "claim2-value" },
                { "exp", secondsSinceEpoch }
            };

            IJwtEncoder encoder = new JwtEncoder(_algorithm, _serializer, _urlEncoder);

            // TokenDto tokenModel = new TokenDto();

            //tokenModel.token = encoder.Encode(payload, secret);
            // tokenModel.expire = secondsSinceEpoch;
            return(encoder.Encode(payload, secret));
        }
Exemple #3
0
        /// <summary>
        /// 返回一个加密字符串
        /// </summary>
        /// <param name="secret">密钥</param>
        /// <returns></returns>
        public string EncodeToken(string secret)
        {
            Result result = new Result()
            {
                Code = 0, Data = DateTime.Now.ToLongTimeString()
            };

            //var payload = new Dictionary<string, object>
            //{
            //    { "Code", 0 },
            //    { "claim2", "claim2-value" }
            //};

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            var token = encoder.Encode(result, secret);

            return(token);
        }
Exemple #4
0
        /// <summary>
        /// 生成AccessToken
        /// </summary>
        /// <returns>AccessToken字符串</returns>
        public static string TokenHeader(long adminUserId)
        {
            Dictionary <string, string> dictionary = new Dictionary <string, string>
            {
                {
                    "adminUserId",
                    adminUserId.ToString()
                },
                {
                    "UUID",
                    Guid.NewGuid().ToString()
                }
            };

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
            string            token      = encoder.Encode(dictionary, Secret);

            return(token);
        }
Exemple #5
0
        public void DecodeToObject_Should_Throw_Exception_On_Invalid_Expiration_Claim_MultipleKeys()
        {
            var key  = _fixture.Create <string>();
            var keys = _fixture.Create <string[]>();

            keys[0] = key;

            var serializer = new JsonNetSerializer();
            var validator  = new JwtValidator(serializer, new UtcDateTimeProvider());

            var urlEncoder = new JwtBase64UrlEncoder();
            var decoder    = new JwtDecoder(serializer, validator, urlEncoder);

            var encoder = new JwtEncoder(new HMACSHA256Algorithm(), serializer, urlEncoder);
            var token   = encoder.Encode(new { exp = _fixture.Create <string>() }, key);

            Action encodingAJwtWithWrongExpField = ()
                                                   => decoder.DecodeToObject <Customer>(token, keys, verify: true);

            encodingAJwtWithWrongExpField.Should()
            .Throw <SignatureVerificationException>("because the invalid 'exp' must result in an exception on decoding");
        }
Exemple #6
0
        public string Encode <T>(T data, string secret, out DateTime exp)
        {
            var json    = JsonConvert.SerializeObject(data, Formatting.Indented);
            var payload = JsonConvert.DeserializeObject <Dictionary <string, object> >(json);

            var exp2 = DateTimeOffset.UtcNow.AddDays(1);

            exp = exp2.UtcDateTime;
            if (!payload.ContainsKey("exp"))
            {
                payload.Add("exp", exp2.ToUnixTimeSeconds());
            }

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            var token = encoder.Encode(payload, secret);

            return(token);
        }
Exemple #7
0
        public string GetJwtString(string customerId, string email)
        {
            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();

            IDateTimeProvider provider = new UtcDateTimeProvider();
            var now               = provider.GetNow().AddMinutes(60 * 24);
            var unixEpoch         = JwtValidator.UnixEpoch;
            var secondsSinceEpoch = Math.Round((now - unixEpoch).TotalSeconds);

            var payload = new Dictionary <string, object>
            {
                { "UserId", customerId },
                { "UserEmail", email },
                { "exp", secondsSinceEpoch }
            };

            IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);

            return(encoder.Encode(payload, _tokenSettings.Key));
        }
Exemple #8
0
        private string GetToken(Dictionary <string, object> payload)
        {
            var claims = new[]
            {
                new Claim("email", payload.Last().Value.ToString()),
                new Claim("id", payload.First().Value.ToString())
            };
            var secret = _options.SecretKey;

            payload.Add("claims", claims);
            payload.Add("iss", _options.Issuer);
            payload.Add("aud", _options.Audience);
            payload.Add("nbf", ConvertToUnixTimestamp(DateTime.Now));
            payload.Add("iat", ConvertToUnixTimestamp(DateTime.Now));
            payload.Add("exp", ConvertToUnixTimestamp(DateTime.Now.AddDays(1)));
            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            return(encoder.Encode(payload, secret));
        }
        public AuthenticationResponse GetResponse(AuthenticationRequest request)
        {
            IAuthenticationService authenticationService = new AuthenticationService();

            bool isSuccessful = authenticationService.Authenticate(request.Username, request.Password);

            if (isSuccessful)
            {
                List <Claim> claims = new List <Claim>
                {
                    new Claim(ClaimTypesMetadata.Username, request.Username)
                };

                JWTPayload payload = new JWTPayload
                {
                    Claims = claims
                };

                string secret = ServerConfiguration.Instance().ServerSecret;

                IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
                IJsonSerializer   serializer = new FastJSONSerializer();
                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

                string token = encoder.Encode(payload, secret);

                return(new AuthenticationResponse
                {
                    Code = 200,
                    AuthenticationToken = token
                });
            }

            return(new AuthenticationResponse
            {
                Code = 400
            });
        }
Exemple #10
0
        public static string Encode(Dictionary <string, object> obj)
        {
            var               secret     = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";
            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);


            //
            IDateTimeProvider provider = new UtcDateTimeProvider();
            var now = provider.GetNow();

            var unixEpoch         = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // or use JwtValidator.UnixEpoch
            var secondsSinceEpoch = provider.GetNow().AddYears(1).toJWTString();

            var payload = obj;

            var token = encoder.Encode(payload, secret);

            return(token);
        }
        public static string GenerateToken(string parameter)
        {
            IDateTimeProvider provider = new UtcDateTimeProvider();
            var now               = provider.GetNow();
            var unixEpoch         = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
            var secondsSinceEpoch = Math.Round((now - unixEpoch).TotalSeconds);

            secondsSinceEpoch += 3600;
            var payload = new Dictionary <string, object>
            {
                { "UserEmail", parameter },
                { "exp", secondsSinceEpoch }
            };
            var               secret     = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";
            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
            var               token      = encoder.Encode(payload, secret);

            return(token);
        }
Exemple #12
0
        public void DecodeToObject_Should_DecodeToken_On_Exp_Claim_After_Year2038()
        {
            const string key = TestData.Key;
            var          dateTimeProvider = new UtcDateTimeProvider();
            var          serializer       = new JsonNetSerializer();
            var          validator        = new JwtValidator(serializer, dateTimeProvider);
            var          urlEncoder       = new JwtBase64UrlEncoder();
            var          decoder          = new JwtDecoder(serializer, validator, urlEncoder);

            // Why 2038? See https://en.wikipedia.org/wiki/Year_2038_problem
            var post2038   = new DateTime(2038, 1, 19, 3, 14, 8, DateTimeKind.Utc);
            var exp        = (post2038 - new DateTime(1970, 1, 1)).TotalSeconds;
            var payload    = new { exp };
            var encoder    = new JwtEncoder(new HMACSHA256Algorithm(), serializer, urlEncoder);
            var validToken = encoder.Encode(payload, key);

            var expected = serializer.Serialize(payload);
            var actual   = decoder.Decode(validToken, key, true);

            expected.Should()
            .Be(actual, "because the token should be correctly decoded");
        }
Exemple #13
0
        private string GenerateJwt(int key, string secret, int expiryPeriod = 300)
        {
            int now    = CurrentTime();
            int expiry = now + expiryPeriod;

            var payload = new Dictionary <string, object>
            {
                { "iss", Convert.ToString(key) },
                { "ist", "project" },
                { "iat", now },
                { "exp", expiry }
            };

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            var token = encoder.Encode(payload, secret);

            return(token);
        }
        private static readonly int _expire    = 60 * 60 * 60 * 600;                                                             // seconds

        public static string GenerateToken(Employee employee, int expire)
        {
            try
            {
                var keySec = _secret;
                if (string.IsNullOrWhiteSpace(AppGlobal.NexusConfig.Secret))
                {
                    keySec = AppGlobal.NexusConfig.Secret;
                }
                if (expire <= 0)
                {
                    expire = _expire;
                }
                var provider          = new UtcDateTimeProvider();
                var createTime        = provider.GetNow();
                var expiredTime       = provider.GetNow().AddSeconds(expire);
                var secondsSinceEpoch = UnixEpoch.GetSecondsSince(expiredTime);

                var payload = new Dictionary <string, object>
                {
                    { "Employee", employee },
                    { "exp", secondsSinceEpoch }
                };

                IJwtAlgorithm       algorithm  = new HMACSHA256Algorithm(); // symmetric
                JWT.IJsonSerializer serializer = new JsonNetSerializer();
                IBase64UrlEncoder   urlEncoder = new JwtBase64UrlEncoder();
                IJwtEncoder         encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

                var token = encoder.Encode(payload, keySec);

                return(token);
            }
            catch (Exception ex)
            {
                Logger.Write(ex.ToString(), true);
            }
            return(null);
        }
Exemple #15
0
        public void DecodeToObject_Should_Decode_Token_After_NotBefore_Becomes_Valid()
        {
            var          dateTimeProvider = new UtcDateTimeProvider();
            const string key = TestData.Secret;

            var serializer = new JsonNetSerializer();
            var validator  = new JwtValidator(serializer, new UtcDateTimeProvider());

            var urlEncoder = new JwtBase64UrlEncoder();
            var decoder    = new JwtDecoder(serializer, validator, urlEncoder, TestData.HMACSHA256Algorithm);

            var now = dateTimeProvider.GetNow();
            var nbf = UnixEpoch.GetSecondsSince(now);

            var encoder = new JwtEncoder(TestData.HMACSHA256Algorithm, serializer, urlEncoder);
            var token   = encoder.Encode(new { nbf }, key);

            var dic = decoder.DecodeToObject <Dictionary <string, object> >(token, key, verify: true);

            dic.Should()
            .Contain("nbf", nbf);
        }
Exemple #16
0
        private AccessTokenViewModel GetToken(Dictionary <string, object> payload)
        {
            var secret = jwtSettings.SecretKey;

            payload.Add("iss", jwtSettings.Issuer);
            payload.Add("aud", jwtSettings.Audience);
            payload.Add("nbf", DateTimeOffset.Now.ToUnixTimeSeconds());
            payload.Add("iat", DateTimeOffset.Now.ToUnixTimeSeconds());
            var expires = DateTimeOffset.Now.AddDays(7);

            payload.Add(Constants.Claims.Exparation, expires.ToUnixTimeSeconds());
            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            return(new AccessTokenViewModel()
            {
                AccessToken = encoder.Encode(payload, secret),
                Expires = expires
            });
        }
Exemple #17
0
        public AuthenticationStatus GenerateToken(User user, out string token)
        {
            AuthenticationStatus result = AuthenticationStatus.Success;

            token = null;

            if (_jwtSettings.IsEnabled)
            {
                DateTime unixEpoch = UnixEpoch.Value;

                IDateTimeProvider provider = new UtcDateTimeProvider();

                DateTimeOffset now = provider.GetNow().AddSeconds(_jwtSettings.ExpirationSpan);
                double         secondsSinceEpoch = Math.Round((now - unixEpoch).TotalSeconds);

                Dictionary <string, object> payload = new Dictionary <string, object>
                {
                    { "exp", secondsSinceEpoch.ToString(CultureInfo.InvariantCulture) },
                    { "Id", user.Id },
                    { "Email", user.Email },
                    { "Role", user.Role }
                };

                IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
                IJsonSerializer   serializer = new JsonNetSerializer();
                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();

                IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);

                token = encoder.Encode(payload, _jwtSettings.SignatureSecret);
            }
            else
            {
                result = AuthenticationStatus.ClientDisabled;
            }


            return(result);
        }
Exemple #18
0
        public static string GenerateToken(string userName, int expireMinutes = 20)
        {
            var               symmetricKey = Convert.FromBase64String(Secret);
            IJwtAlgorithm     algorithm    = new HMACSHA256Algorithm();
            IJsonSerializer   serializer   = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder   = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder      = new JwtEncoder(algorithm, serializer, urlEncoder);
            var               now          = (DateTimeOffset)Now.Value;
            var               expired      = now.AddMinutes(expireMinutes).ToUnixTimeSeconds();
            var               notBefore    = now.ToUnixTimeSeconds();

            var payload = new Dictionary <string, object>
            {
                { "name", userName },
                { "exp", expired },
                { "nbf", notBefore }
            };

            var token = encoder.Encode(payload, symmetricKey);

            return(token);
        }
Exemple #19
0
        /// <summary>
        /// Generates token by given model.
        /// Validates whether the given model is valid, then gets the symmetric key.
        /// Encrypt the token and returns it.
        /// </summary>
        /// <param name="model"></param>
        /// <returns>Generated token.</returns>
        public string GenerateToken(PaymentWithBKOnline paymentModel)
        {
            var TockenID       = new RandomCode().RandomNumber(4);
            var ExpireSeconds  = 60;
            var SecretKeyValue = ConfigurationManager.AppSettings["SecretKey"];
            var APIKey         = ConfigurationManager.AppSettings["AppKey"];
            var payload        = new Dictionary <string, object>
            {
                { "iss", APIKey },
                { "iat", DateTimeOffset.Now.ToUnixTimeSeconds() },
                { "exp", DateTimeOffset.Now.AddSeconds(ExpireSeconds).ToUnixTimeSeconds() },
                { "jti", TockenID },
                { "form_params", paymentModel }
            };
            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
            var token = encoder.Encode(payload, SecretKeyValue);

            return(token);
        }
Exemple #20
0
        private static TokenHolder CreateToken(EmployeeToken employeeInfo)
        {
            if (employeeInfo.VerifyObjectNull(throwEdit: false))
            {
                throw new EditException()
                      {
                          Edits = (new List <Edit>()
                    {
                        new Edit()
                        {
                            FieldName = "Invalid Data", Message = "Data should not be null."
                        }
                    })
                      };
            }

            TokenHolder tokenHolder = new TokenHolder();
            var         currentTime = (long)(DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime()).TotalSeconds;
            var         payload     = new Dictionary <string, object>();

            payload.Add("userInfo", employeeInfo);
            payload.Add("exp", currentTime + EXPIRYTIME);

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            tokenHolder.AccessToken = encoder.Encode(payload, SECRETKEY);

            var refreshPayload = new Dictionary <string, object>();

            refreshPayload.Add("userInfo", employeeInfo);
            refreshPayload.Add("CurrentDate", DateTime.Now.ToString());

            tokenHolder.RefreshToken = encoder.Encode(payload, REFRESHSECRETKEY);
            return(tokenHolder);
        }
Exemple #21
0
        /// <summary>
        /// 获取JWT token
        /// </summary>
        /// <param name="token"></param>
        /// <param name="expireTime">过期时间</param>
        /// <returns></returns>
        public static bool GetToken(out JwtResult jwtResult, int expireTime = 20)
        {
            try
            {
                DateTime UTC = DateTime.Now;
                Dictionary <string, object> payload = new Dictionary <string, object>
                {
                    { "iat", ConvertDateTimeInt(UTC) },
                    { "iss", "ERP@Oversea" },
                    { "exp", ConvertDateTimeInt(UTC.AddMinutes(expireTime)) }
                };

                IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
                IJsonSerializer   serializer = new JsonNetSerializer();
                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
                string            result     = encoder.Encode(payload, secret);
                string            token      = DESEncrypt.DesEncrypt(result);
                jwtResult = new JwtResult()
                {
                    JwtCode   = token,
                    IsSuccess = true,
                    Message   = "success"
                };
                return(true);
            }
            catch (Exception e)
            {
                Utility.Log.WriteTextLog("JWTGetToken", "JWT.GetToken:", e.Message, "", "");
                jwtResult = new JwtResult()
                {
                    JwtCode   = "",
                    IsSuccess = false,
                    Message   = e.Message
                };
                return(false);
            }
        }
        private string generateToken(TokenType tokenType, string email = null, string username = null)
        {
            string            token      = "";
            const string      secret     = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";
            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            switch (tokenType)
            {
            case TokenType.Valid:
                token = encoder.Encode(new Dictionary <string, object>
                {
                    { "preferred_username", email },
                    { "sub", "1234567890" },
                    { "name", username },
                    { "jti", Guid.NewGuid() },
                    { "iat", DateTimeOffset.UtcNow.ToUnixTimeSeconds() },
                    { "exp", DateTimeOffset.UtcNow.AddMinutes(30).ToUnixTimeSeconds() }
                }, secret);
                break;

            case TokenType.Invalid:
                token = encoder.Encode(new Dictionary <string, object>
                {
                    { "sub", "1234567890" },
                    { "jti", Guid.NewGuid() },
                    { "iat", DateTimeOffset.UtcNow.ToUnixTimeSeconds() },
                    { "exp", DateTimeOffset.UtcNow.AddMinutes(30).ToUnixTimeSeconds() }
                }, secret);
                break;

            default:
                break;
            }
            return(token);
        }
Exemple #23
0
        public LoginResult Post([FromBody] LoginRequest request)
        {
            LoginResult rs = new LoginResult();

            //这是是获取用户名和密码的,这里只是为了模拟
            if (request.UserName == "wangshibang" && request.Password == "123456")
            {
                AuthInfo info = new AuthInfo {
                    UserName = "******", Roles = new List <string> {
                        "Admin", "Manage"
                    }, IsAdmin = true
                };
                try
                {
                    const string secret = "To Live is to change the world";
                    //secret需要加密
                    IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
                    IJsonSerializer   serializer = new JsonNetSerializer();
                    IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                    IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
                    var token = encoder.Encode(info, secret);
                    rs.Message = "XXXXX";
                    rs.Token   = token;
                    rs.Success = true;
                }
                catch (Exception ex)
                {
                    rs.Message = ex.Message;
                    rs.Success = false;
                }
            }
            else
            {
                rs.Message = "fail";
                rs.Success = false;
            }
            return(rs);
        }
Exemple #24
0
        public TokenInfo GetToken([FromBody] LoginRequest loginRequest)
        {
            TokenInfo tokenInfo = new TokenInfo();

            if (loginRequest != null)
            {
                string   userName = loginRequest.UserName;
                string   passWord = loginRequest.Password;
                bool     isAdmin  = (userName == "SWD") ? true : false;
                AuthInfo authInfo = new AuthInfo {
                    UserName = userName, Roles = new List <string>(), IsAdmin = isAdmin, ExpiryDateTime = DateTime.Now.AddDays(1)
                };
                const string secretKey = "ShunKai";//
                try
                {
                    byte[]            key        = Encoding.UTF8.GetBytes(secretKey);
                    IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
                    IJsonSerializer   serializer = new JsonNetSerializer();
                    IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                    IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
                    var token = encoder.Encode(authInfo, key);
                    tokenInfo.Success = true;
                    tokenInfo.Token   = token;
                    tokenInfo.Message = "OK";
                }
                catch (Exception ex)
                {
                    tokenInfo.Success = false;
                    tokenInfo.Message = ex.Message.ToString();
                }
            }
            else
            {
                tokenInfo.Success = false;
                tokenInfo.Message = "用户信息为空";
            }
            return(tokenInfo);
        }
        public IHttpActionResult Login([FromBody] LoginViewModel model)
        {
            if (model == null)
            {
                model = new LoginViewModel();
                Validate(model);
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var user = DbSet.Users.FirstOrDefault(c => c.Username == model.Username && c.Password == model.Password);

            if (user != null)
            {
                const string secret = "gjhgjhgmjgjmhgjhtjmjmgjmgjmgjhm";

                IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
                IJsonSerializer   serializer = new JsonNetSerializer();
                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
                var payload = new Dictionary <string, object>
                {
                    { "Id", user.Id }
                };
                var token = encoder.Encode(payload, secret);

                var result = new TokenModel()
                {
                    AccessToken = token,
                    Type        = "Bearer",
                    LifeTime    = 0
                };

                return(Ok(result));
            }
            return(Unauthorized());
        }
Exemple #26
0
        //生成access_token
        private string GetToken(string username)
        {
            IDateTimeProvider provider = new UtcDateTimeProvider();
            var now               = provider.GetNow();
            var unixEpoch         = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // or use JwtValidator.UnixEpoch
            var secondsSinceEpoch = Math.Round((now - unixEpoch).TotalSeconds);

            var payload = new Dictionary <string, object>
            {
                { "name", username },
                //{"exp",secondsSinceEpoch+(20) }
                { "exp", secondsSinceEpoch + (3600 * 24 * 30) }     //超时时间,单位:秒
            };
            var secret = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
            var token = encoder.Encode(payload, secret);

            return(token);
        }
Exemple #27
0
        public const string SECRETKEY = "jwttest"; //加密的密钥

        /// <summary>
        /// 使用自定义密钥加密,HS512签名
        /// </summary>
        /// <param name="strSecretKey">密钥</param>
        /// <param name="strJson">需要加密的JSON</param>
        /// <returns></returns>
        public static string EncodeByJwt(string strSecretKey, string strJson)
        {
            try
            {
                var payload = new Dictionary <string, object>
                {
                    { "Crypt", strJson }
                };

                IJwtAlgorithm     algorithm  = new HMACSHA512Algorithm();
                IJsonSerializer   serializer = new JsonNetSerializer();
                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

                var token = encoder.Encode(payload, strSecretKey);

                return(token);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public string GetToken()
        {
            // setup payload
            var payload = new
            {
                iss = "appnotch.com",
                sub = _subject,
                iat = DateTime.UtcNow.ToUnixTimestamp(),
                jti = Guid.NewGuid().ToString("N")
            };

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();

            IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);

            // convert the secret to base64 string and use as key
            var base64Secret = Convert.FromBase64String(_secret);
            var token        = encoder.Encode(payload, base64Secret);

            return(token);
        }
Exemple #29
0
        private static string Encoder(object obj, string type)
        {
            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            string secret;

            switch (type)
            {
            case "header": secret = Service.key_header;
                break;

            default: secret = Service.key_data;
                break;
            }
            ;

            string token = encoder.Encode(obj, secret);

            return(token);
        }
Exemple #30
0
        public static string Generate(string userName)
        {
            var secret        = ConfigurationManager.AppSettings["JWTSecret"];
            var expireMinutes = ConfigurationManager.AppSettings["JWTExpireMinutes"];

            IDateTimeProvider provider = new UtcDateTimeProvider();
            var now               = provider.GetNow();
            var unixEpoch         = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // or use JwtValidator.UnixEpoch
            var secondsSinceEpoch = Math.Round((now.AddMinutes(int.Parse(expireMinutes)) - unixEpoch).TotalSeconds);
            var payload           = new Dictionary <string, object>
            {
                { "user", userName },
                { "exp", secondsSinceEpoch }
            };

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);
            var token = encoder.Encode(payload, secret);

            return(token);
        }