/// <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)); }
/// <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); }
/// <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); }
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"); }
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); }
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)); }
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 }); }
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); }
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"); }
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); }
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); }
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 }); }
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); }
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); }
/// <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); }
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); }
/// <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); }
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); }
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()); }
//生成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); }
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); }
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); }
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); }