public static void ClassInitialize(TestContext context) { _testConfigKeys.Add(PRIVATE_KEY_CONFIG_KEY, PRIVATE_KEY_CONFIG_VALUE); _testConfigKeys.Add(KEY_SIZE_CONFIG_KEY, KEY_SIZE_CONFIG_VALUE); configuration = new ConfigurationBuilder() .AddInMemoryCollection(_testConfigKeys) .Build(); tokenBuilderService = new JwtTokenBuilderService(configuration); publicIDClaims = new List <TokenClaimModel> { new TokenClaimModel("Username", "TestUsername1"), new TokenClaimModel("EmailAddress", "TestEmailAddress1"), new TokenClaimModel("FirstName", "TestFirstName1"), new TokenClaimModel("LastName", "TestLastName1"), new TokenClaimModel("Birthdate", DateTime.UtcNow.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'")), }; jwtPayloadIDModel = new JwtPayloadModel { PublicClaims = publicIDClaims, Issuer = new TokenClaimModel("iss", "TestIssuer1"), Subject = new TokenClaimModel("sub", "TestSubject1"), Audience = new TokenClaimModel("aud", "TestAudience1"), ExpirationTime = new TokenClaimModel("exp", "30"), NotBefore = new TokenClaimModel("nbf", DateTime.UtcNow.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'")), IssuedAt = new TokenClaimModel("iat", DateTime.UtcNow.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'")) }; }
public string CreateToken(List <TokenClaimModel> userClaims) { var jwtPayloadModel = new JwtPayloadModel(); foreach (var userClaim in userClaims) { switch (userClaim.Type) { case "iss": jwtPayloadModel.Issuer = new TokenClaimModel("iss", userClaim.Value); break; case "sub": jwtPayloadModel.Subject = new TokenClaimModel("sub", userClaim.Value); break; case "aud": jwtPayloadModel.Audience = new TokenClaimModel("aud", userClaim.Value); break; case "exp": jwtPayloadModel.ExpirationTime = new TokenClaimModel("exp", userClaim.Value); break; case "nbf": jwtPayloadModel.NotBefore = new TokenClaimModel("nbf", userClaim.Value); break; case "iat": jwtPayloadModel.IssuedAt = new TokenClaimModel("iat", userClaim.Value); break; default: { jwtPayloadModel.PublicClaims.Add(userClaim); } break; } } var token = _tokenBuilderService.CreateToken(jwtPayloadModel); return(token); }
public string CreateToken(JwtPayloadModel jwtPayloadModel) { var privateKeyEncrypted = _configuration["PrivateKey"]; var privateKey = Convert.FromBase64String(privateKeyEncrypted); var keySize = int.Parse(_configuration["SecurityKeySettings:KeySize"]); using RSA rsa = RSA.Create(keySize); rsa.ImportRSAPrivateKey(privateKey, out _); var signingCredentials = new SigningCredentials(new RsaSecurityKey(rsa), SecurityAlgorithms.RsaSha256) { CryptoProviderFactory = new CryptoProviderFactory { CacheSignatureProviders = false } }; var claims = new List <Claim>(); foreach (var userClaim in jwtPayloadModel.PublicClaims) { claims.Add(new Claim(userClaim.Type, userClaim.Value)); } var tokenHandler = new JsonWebTokenHandler(); var tokenDescriptor = new SecurityTokenDescriptor { Issuer = jwtPayloadModel.Issuer.Value, Audience = jwtPayloadModel.Audience.Value, IssuedAt = DateTime.Parse(jwtPayloadModel.IssuedAt.Value).ToUniversalTime(), NotBefore = DateTime.Parse(jwtPayloadModel.NotBefore.Value).ToUniversalTime(), Expires = DateTime.UtcNow.AddMinutes(Double.Parse(jwtPayloadModel.ExpirationTime.Value)).ToUniversalTime(), Subject = new ClaimsIdentity(claims), SigningCredentials = signingCredentials, }; string finalToken = tokenHandler.CreateToken(tokenDescriptor); return(finalToken); }