0

我在 Windows 上为 Perl 使用 Passwd::Keyring::Auto。我注意到密钥环不是持久的。我可以强制它在 Windows 上持久化吗?

http://search.cpan.org/~mekk/Passwd-Keyring-Auto-0.2703/lib/Passwd/Keyring/Au​​to.pm

前任。

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,但这不起作用。

提前致谢

4

2 回答 2

1

还有一点需要注意的是:通过一些努力,应该可以在 Windows 上使用 Passwd::Keyring::PwSafe3 后端,以保持密码的持久性。您仍然需要在每次运行时提供此存储的打开密码(由于操作系统授权而无法打开),但如果您有多个密码或也想从 GUI 管理它们,这可能是有意义的。您可以尝试将环境变量 PASSWD_KEYRING_AUTO_PREFER 设置为 PwSafe3 以使用此密钥环(当然要事先安装模块)。

于 2015-01-08T09:42:37.460 回答
1

我还没有开发 Windows 后端,因为我目前没有 Windows 机器。编写像 Passwd::Keyring::WindowsVault (或类似的)这样的模块应该不难(特别是考虑到可以参考 python 密钥环库源以获得灵感),但需要一些具有 Windows 开发环境的程序员。如果您(或其他任何人)有兴趣编写一个,我很乐意提供帮助,但我根本无法测试这样的模块,甚至无法为 CPAN 准备二进制分发。

一旦存在这样的模块,将其集成到 Passwd::Keyring::Auto 将是微不足道的

指针:

(Passwd::Keyring 后端应该实现什么) https://metacpan.org/pod/distribution/Passwd-Keyring-Auto/lib/Passwd/Keyring/Au ​​to/KeyringAPI.pm

(pythonic 库使用的 API) 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

于 2015-01-08T09:34:43.140 回答