Как сделать Passwd::Keyring::Auto персистентным в Windows
Я использую Passwd::Keyring::Auto для Perl в Windows. Я заметил, что связка ключей не является постоянной. Могу ли я заставить его быть постоянным в Windows?
http://search.cpan.org/~mekk/Passwd-Keyring-Auto-0.2703/lib/Passwd/Keyring/Auto.pm
Ex.
use Passwd::Keyring::Auto;
my $keyring = get_keyring(app=>"Test", group=>"Windows");
my $username = "someuser";
my $password = $keyring->set_password($username, $password, "mylostspace.com");
Когда моя программа заканчивается, я бы хотел получить все пароли, которые у меня были в связке ключей, как показано ниже:
$password = $keyring->get_password($username, "sometest.com");
Однако $keyring->is_persistent() всегда возвращает 0. Я пытался принудительно задать параметр PERSISTENT => 1, когда создаю связку ключей, но это не сработало.
заранее спасибо
2 ответа
И еще одно замечание: с некоторыми усилиями должна быть возможность использовать бэкэнд Passwd::Keyring::PwSafe3 в Windows, чтобы сохранить пароли постоянными. Вам по-прежнему нужно будет вводить пароль для этого хранилища (не открывать благодаря авторизации ОС) при каждом запуске, но если у вас несколько паролей или вы хотите управлять ими из графического интерфейса, это может иметь смысл. Вы можете попробовать установить переменную окружения PASSWD_KEYRING_AUTO_PREFER в PwSafe3, чтобы использовать этот набор ключей (конечно, установите модуль заранее).
Я просто еще не разработал бэкэнд для Windows, так как на данный момент у меня нет Windows-машины. Написание такого модуля, как Passwd:: Keyring:: WindowsVault (или аналогичного), не должно быть трудным (особенно если учесть, что для вдохновения можно обратиться к источнику библиотеки ключей Python), но для этого требуется некоторый программист со средой разработки Windows. Если вы (или кто-то еще) заинтересованы в написании одного, я был бы рад помочь, но я просто не могу протестировать такой модуль или даже подготовить бинарный дистрибутив для CPAN.
Как только такой модуль существует, его интеграция в Passwd::Keyring::Auto будет тривиальной
указатели:
(что должен реализовать Passwd::Keyring backend) https://metacpan.org/pod/distribution/Passwd-Keyring-Auto/lib/Passwd/Keyring/Auto/KeyringAPI.pm
(API, используемые библиотекой pythonic) https://bitbucket.org/kang/python-keyring-lib/src/8aadf61db38c70a5fe76fbe013df25fa62c03a8d/keyring/backends/Windows.py?at=default(в perl его следует заменить некоторым XS, как я ничего не знаю, как ctypes, структура кода модуля, скорее всего, будет похожа на https://bitbucket.org/Mekk/perl-keyring-gnome/src)