Example #1
0
        public string Encode(Models.JwtPayload payload)
        {
            var whatIsThis = Signature();
            var jwt        = new JsonWebToken <Models.JwtPayload>(payload, Signature());

            return(jwt.ToEncodedString());
        }
Example #2
0
        /// <summary>
        /// ref https://jasonwatmore.com/post/2019/10/11/aspnet-core-3-jwt-authentication-tutorial-with-example-api
        /// </summary>
        /// <param name="payload"></param>
        /// <returns></returns>
        public string EncodeConst(Models.JwtPayload payload)
        {
            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
                new Claim(JwtRegisteredClaimNames.Exp, $"{new DateTimeOffset(DateTime.Now.AddMinutes(30)).ToUnixTimeSeconds()}"),
                new Claim(ClaimTypes.Name, payload.aud)
            };
            var tokenHandler = new JwtSecurityTokenHandler();
            var key          = Encoding.ASCII.GetBytes(Const.SecurityKey);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, payload.aud)
                }),
                Expires            = DateTime.UtcNow.AddDays(7),
                Issuer             = payload.iss,
                Audience           = payload.aud,
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(token));
        }
Example #3
0
 public ActionResult <string> Login(string userId, string pwd)
 {
     if (!string.IsNullOrEmpty(userId) && !string.IsNullOrEmpty(pwd))
     {
         //var claims = new[]
         //{
         //    new Claim(JwtRegisteredClaimNames.Nbf,$"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
         //    new Claim(JwtRegisteredClaimNames.Exp,$"{new DateTimeOffset(DateTime.Now.AddMinutes(30)).ToUnixTimeSeconds()}"),
         //    new Claim(ClaimTypes.Name,userId)
         //};
         Models.JwtPayload jwtPayload = new Models.JwtPayload
         {
             aud    = "Yang",
             claimA = "to be world value",
             exp    = $"{new DateTimeOffset(DateTime.Now.AddMinutes(30)).ToUnixTimeSeconds()}",
             nbf    = $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}",
             iat    = $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}",
             iss    = "Yang",
             sub    = "login"
         };
         return(StatusCode(StatusCodes.Status201Created, new { token = _jwtService.EncodeConst(jwtPayload) }));
     }
     return(StatusCode(StatusCodes.Status400BadRequest, "userId or pwd is invalid."));
 }