Расшифровка всегда зашифрованного столбца приложение ASP.NET MVC - PullRequest
0 голосов
/ 21 ноября 2018

Я зашифровал пару столбцов в базе данных SQL, размещенной в Azure.Я сделал шифрование (детерминированное), используя AzureKeyVault.Я предоставил службе приложений в самом Azure доступ к KeyVault.Я также добавил Column Encryption Setting=enabled в строку подключения.Я использую Entity Framework 6.0 для своего слоя данных.

Однако, когда я выполняю запрос к таблице с шифрованием, я просто получаю сообщение об ошибке тайм-аута.

Истекло время ожидания выполнения.Время ожидания истекло до завершения операции, или сервер не отвечает.

Я смотрел на добавление этого кода и вызов его в моем методе Global.asax Application_Start:

public class AzureKeyValueConfiguration
{
    private static ClientCredential _clientCredential;

    public static void InitializeAzureKeyVaultProvider()
    {
        string clientId = "MyClient";
        string clientSecret = "MySecret";
        _clientCredential = new ClientCredential(clientId, clientSecret);

        SqlColumnEncryptionAzureKeyVaultProvider azureKeyVaultProvider = new SqlColumnEncryptionAzureKeyVaultProvider(GetToken);

        Dictionary<string, SqlColumnEncryptionKeyStoreProvider> providers =
            new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>();

        providers.Add(SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider);
        SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
    }

    private async static Task<string> GetToken(string authority, string resource, string scope)
    {
        var authContext = new AuthenticationContext(authority);
        AuthenticationResult result = await authContext.AcquireTokenAsync(resource, _clientCredential);

        if (result == null)
            throw new InvalidOperationException("Failed to obtain the access token");

        return result.AccessToken;
    }
}

protected void Application_Start()
{
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        AutoMapperConfiguration.Configure();
        log4net.Config.XmlConfigurator.Configure();
        AzureKeyValueConfiguration.InitializeAzureKeyVaultProvider();
}

Однако я даже не уверен, срабатывает ли этот код, поскольку я не могу заставить его попасть в отладчик.В общем, я немного растерялся и мог бы руководствоваться.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...