Хранить пароли в конфигурационном файле Castle Windsor? - PullRequest
0 голосов
/ 11 марта 2009

У меня есть следующее:

interface IDefectRepository { /* ... */ }
class MyDefectRepository : IDefectRepository
{
    public MyDefectRepository(string url, string userName, string password)
    {
        // ...
    }

    // ...
}

Я использую для передачи параметров конструктора из Web.config. Есть ли способ сохранить зашифрованный пароль в файле Web.config? Другие предложения?

Ответы [ 2 ]

1 голос
/ 12 марта 2009

Вы можете ввести пароль через ISubDependencyResolver ( sample1 , sample2 ), который получит пароль из зашифрованного раздела в ваш web.config.

1 голос
/ 11 марта 2009

Попробуйте наследовать MyDefectRepositoryWithEncryptedPasswords от MyDefectRepository. В конструкторе MyDefectRepositoryWithEncryptedPasswords расшифруйте пароль и передайте его конструктору MyDefectRepository, например:

class MyDefectRepositoryWithEncryptedPasswords : MyDefectRepository
{
    public MyDefectRepositoryWithEncryptedPasswords(string url, string userName, string encryptedPassword)
        : base(url, userName, Decrypt(encryptedPassword))
    {
    }

    public static string Decrypt(string encrypted)
    {
        // Do whatever...
    }
}

В любом случае, я не думаю, что вы должны хранить зашифрованные пароли с помощью двусторонних методов шифрования. Вы должны использовать какое-то хеширование (криптографическое) и сравнить хэши. Для этого потребуется изменить конструктор, чтобы получить не пароль, а его хеш.

...