public async Task <string> GetPemKey(string keyVaultIdentifier)
        {
            AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();

            KeyVaultSecurityKey.AuthenticationCallback keyVaultAuthCallback = new KeyVaultSecurityKey.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback);
            KeyVaultClient client    = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(keyVaultAuthCallback), EdnaExternalHttpClient.Create());
            KeyBundle      keyBundle = await client.GetKeyAsync(keyVaultIdentifier);

            RSAParameters rsaParameters = keyBundle.Key.ToRSAParameters();

            return(ExportPublicKey(rsaParameters));
        }
示例#2
0
        private SigningCredentials GetSigningCredentialsFromKeyVault(string keyVaultKeyString)
        {
            AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();

            KeyVaultSecurityKey.AuthenticationCallback keyVaultAuthCallback = new KeyVaultSecurityKey.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback);
            KeyVaultSecurityKey   keyVaultSecurityKey   = new KeyVaultSecurityKey(keyVaultKeyString, keyVaultAuthCallback);
            CryptoProviderFactory cryptoProviderFactory = new CryptoProviderFactory {
                CustomCryptoProvider = new KeyVaultCryptoProvider()
            };

            return(new SigningCredentials(keyVaultSecurityKey, SecurityAlgorithms.RsaSha256)
            {
                CryptoProviderFactory = cryptoProviderFactory
            });
        }
        public async Task <JsonWebKey> GetJwk(string keyVaultIdentifier)
        {
            AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();

            KeyVaultSecurityKey.AuthenticationCallback keyVaultAuthCallback = new KeyVaultSecurityKey.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback);
            KeyVaultClient client    = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(keyVaultAuthCallback), EdnaExternalHttpClient.Create());
            KeyBundle      keyBundle = await client.GetKeyAsync(keyVaultIdentifier);

            JsonWebKey jwk = new JsonWebKey(keyBundle.Key.ToString());

            //Pruning to remove values for certian properties that are optional
            return(new JsonWebKey()
            {
                Kid = keyVaultIdentifier,
                Kty = JsonWebAlgorithmsKeyTypes.RSA,
                Alg = Microsoft.IdentityModel.Tokens.SecurityAlgorithms.RsaSha256,
                Use = Microsoft.IdentityModel.Tokens.JsonWebKeyUseNames.Sig,
                E = jwk.E,
                N = jwk.N
            });
        }