Inheritance: System.IdentityModel.Tokens.SignatureProvider
Example #1
0
        /// <summary>
        /// Applies the signature to the JWT
        /// </summary>
        /// <param name="jwt">The JWT object.</param>
        /// <returns>The signed JWT</returns>
        protected virtual async Task <string> SignAsync(JwtSecurityToken jwt)
        {
            var rawDataBytes = System.Text.Encoding.UTF8.GetBytes(jwt.EncodedHeader + "." + jwt.EncodedPayload); // TODO: Is UTF-8 correct?

            var keyVaultSignatureProvider = new AzureKeyVaultSignatureProvider(_options.KeyIdentifier, JsonWebKeySignatureAlgorithm.RS256, KeyVaultClientAuthenticationCallback);

            var rawSignature = await Task.Run(() => Convert.ToBase64String(keyVaultSignatureProvider.Sign(rawDataBytes))).ConfigureAwait(false);

            return(jwt.EncodedHeader + "." + jwt.EncodedPayload + "." + rawSignature);

            //var handler = new JwtSecurityTokenHandler
            //{
            //    SignatureProviderFactory = new AzureKeyVaultSignatureProviderFactory()
            //};
            //return Task.FromResult(handler.WriteToken(jwt));
        }
        /// <summary>
        /// Applies the signature to the JWT
        /// </summary>
        /// <param name="jwt">The JWT object.</param>
        /// <returns>The signed JWT</returns>
        protected virtual async Task<string> SignAsync(JwtSecurityToken jwt)
        {
            var rawDataBytes = System.Text.Encoding.UTF8.GetBytes(jwt.EncodedHeader + "." + jwt.EncodedPayload); // TODO: Is UTF-8 correct?

            var keyVaultSignatureProvider = new AzureKeyVaultSignatureProvider(_options.KeyIdentifier, JsonWebKeySignatureAlgorithm.RS256, _authentication.KeyVaultClientAuthenticationCallback);

            var rawSignature = await Task.Run(() => Convert.ToBase64String(keyVaultSignatureProvider.Sign(rawDataBytes))).ConfigureAwait(false);

            return jwt.EncodedHeader + "." + jwt.EncodedPayload + "." + rawSignature;

            //var handler = new JwtSecurityTokenHandler
            //{
            //    SignatureProviderFactory = new AzureKeyVaultSignatureProviderFactory()
            //};
            //return Task.FromResult(handler.WriteToken(jwt));
        }