Может ли QuartzServer NET расшифровывать строку подключения в файле конфигурации? - PullRequest
0 голосов
/ 04 мая 2018

Я использую Quartz.Server.exe 2.X в качестве исполнителя заданий. Я использую Quartz.Server.exe.config для настройки кварца.

<quartz >
    <add key="quartz.scheduler.instanceName" value="AlyCE_LROScheduler" />
    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
    <add key="quartz.jobStore.useProperties" value="true" />
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
    <add key="quartz.jobStore.tablePrefix" value="QUARTZ_" />
    <add key="quartz.jobStore.dataSource" value="defaultDS" />
    <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
    <add key="quartz.dataSource.defaultDS.provider" value="SqlServer-20" />
    <add key="quartz.dataSource.defaultDS.connectionString" value="my connection string to encrypt/decrypt" />
</quartz>

Все отлично работает. Теперь я хотел бы зашифровать строку подключения по соображениям безопасности.

Есть ли способ позволить Quartz.Server.exe понимать зашифрованную строку подключения?

Спасибо

1 Ответ

0 голосов
/ 09 мая 2018

Я решил. Я удалил свойство кварца строки подключения и добавил свойство connectionProvider.type, которое позволяет мне переопределить стандартный Quartz.Impl.AdoJobStore.Common.DbProvider.

Итак, я могу расшифровать строку подключения.

Так что мой конфиг выглядит так:

<quartz >
    <!-- thread pool info -->
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
    <!-- job store info -->
    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
    <add key="quartz.jobStore.useProperties" value="true" />
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
    <add key="quartz.jobStore.tablePrefix" value="QUARTZ_" />
    <add key="quartz.jobStore.dataSource" value="defaultDS" />
    <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
    <add key="quartz.dataSource.defaultDS.connectionProvider.type" value="MyDll.MyDbProvider, MyDll" />
</quartz>
<connectionStrings>
    <add key="myConnString" connectionString="crypted"/>
</connectionStrings>

Затем я создаю новый проект библиотеки классов, где я создал этот класс:

public class MyDbProvider : DbProvider
{
    public MyDbProvider() : base("SqlServer-20", MyHelper.GetConnectionString()) { }
}

public static class MyHelper
{
    public static string GetConnectionString()
    {
        //here i decrypt my connection string from app.config file
    }
}

MyDll.dll должен находиться в том же каталоге, что и Quartz.Server.exe.

Надеюсь, это кому-нибудь поможет!

...