protected virtual string Sign(string signingInput, System.IdentityModel.Tokens.SigningCredentials signingCredentials)
        {
            if (signingCredentials == null)
            {
                return(string.Empty);
            }
            string result;

            using (SignatureProvider signatureProvider = SignatureProvider.Create(signingCredentials))
            {
                result = Base64UrlEncoder.Encode(signatureProvider.Sign(Base64UrlEncoder.TextEncoding.GetBytes(signingInput)));
            }
            return(result);
        }
Example #2
0
 public static SignatureProvider Create(System.IdentityModel.Tokens.SigningCredentials signingCredentials)
 {
     Utility.VerifyNonNullArgument("signingCredentials", signingCredentials);
     if (System.StringComparer.Ordinal.Compare(signingCredentials.DigestAlgorithm, "http://www.w3.org/2001/04/xmlenc#sha256") != 0)
     {
         throw new System.ArgumentException("signingCredentials.DigestAlgorithm must be SHA-256");
     }
     System.IdentityModel.Tokens.X509AsymmetricSecurityKey x509AsymmetricSecurityKey = signingCredentials.SigningKey as System.IdentityModel.Tokens.X509AsymmetricSecurityKey;
     if (x509AsymmetricSecurityKey != null)
     {
         return(new X509AsymmetricSignatureProvider(x509AsymmetricSecurityKey));
     }
     System.IdentityModel.Tokens.SymmetricSecurityKey symmetricSecurityKey = signingCredentials.SigningKey as System.IdentityModel.Tokens.SymmetricSecurityKey;
     if (symmetricSecurityKey != null)
     {
         return(new SymmetricSignatureProvider(symmetricSecurityKey));
     }
     throw new System.ArgumentException("signingCredentials.SigningKey must be either X509AsymmetricSecurityKey or SymmetricSecurityKey");
 }
Example #3
0
        public static string MakeToken(string secret, string user)
        {
            var securityKey = new System.IdentityModel.Tokens.InMemorySymmetricSecurityKey(Encoding.Default.GetBytes(secret));

            System.IdentityModel.Tokens.SigningCredentials signingCredentials =
                new System.IdentityModel.Tokens.SigningCredentials(
                    securityKey,
                    "http://www.w3.org/2001/04/xmldsig-more#hmac-sha256",
                    "http://www.w3.org/2001/04/xmlenc#sha256");

            byte[] randomNonce           = new Byte[32];
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();

            rng.GetBytes(randomNonce);

            List <Claim> claims = new List <Claim>()
            {
                new Claim("user", user),
                new Claim("nonce", Convert.ToBase64String(randomNonce)),
            };

            var jwtSecurityToken = new System.IdentityModel.Tokens.JwtSecurityToken(
                issuer,
                audience,
                claims,
                DateTime.Now,
                DateTime.Now.AddHours(1),
                signingCredentials
                );

            var handler = new System.IdentityModel.Tokens.JwtSecurityTokenHandler();

            string tokenString = handler.WriteToken(jwtSecurityToken);

            return(tokenString);
        }
Example #4
0
 public JsonWebSecurityToken(string issuer, string audience, System.DateTime validFrom, System.DateTime validTo, System.Collections.Generic.IEnumerable <JsonWebTokenClaim> claims, System.IdentityModel.Tokens.SigningCredentials signingCredentials) : this(issuer, audience, validFrom, validTo, claims)
 {
     Utility.VerifyNonNullArgument("signingCredentials", signingCredentials);
     this._signingCredentials = signingCredentials;
 }