标签: python-keyring

在Windows Server 2003上使用python密钥环时出现错误1312

我正在python中编写Windows服务,我正在使用密钥环模块来安全地存储我需要定期和持久使用的凭据.这意味着密钥环使用本地系统用户凭据存储密码.

我所做的就是使用2个基本的密钥环功能:get_password(SERVICE_NAME, username, password)set_password(SERVICE_NAME, username).我没有按照我的理解预配置密钥环,并且看到它自动配置其后端.

当我在Windows Server 2008及更高版本上运行时,一切运行顺利.但是当我在Windows Server 2003上运行它时,我得到了这个令人讨厌的错误:

error: (1312, 'CredWrite', 'A specified logon session does not exist. It may already have been terminated.')

我认为它与用于运行我的服务的本地系统用户的登录会话有关,虽然它很奇怪,因为我知道它是一种超级管理员 - 超级用户的形式,应该有权做任何事情它想要在系统中.但是,当我将用户的登录凭据更改为本地管理员时,一切都顺利进行.

我的服务配置是否需要更改才能使其正常工作?或者更改本地系统用户的安全策略?或者我应该要求用户使用本地管理员凭据运行此服务?

python windows-services python-keyring

5
推荐指数
1
解决办法
795
查看次数

如何使用Python密钥环检索用户名?

我的Windows 7机器上有一个Mercurial密钥环.我正在使用Python keyring库从Mercurial密钥环获取用户凭据.

我可以使用以下命令检索给定用户名的密码:

keyring.get_password('Mercurial', 'user@@etc')
Run Code Online (Sandbox Code Playgroud)

是否有类似的功能来检索用户名?

python windows python-keyring

5
推荐指数
3
解决办法
2374
查看次数

在rhel7 Linux 上使用whick 密钥环后端以避免在存储凭证时使用额外的密码?

我安装了以下软件包(并非所有软件包都可以在两个平台上安装):

  • Python 3.5.4 :: Anaconda 自定义(64 位)
  • 钥匙圈 9.3.1
  • keyring_jeepney 0.2
  • 钥匙圈.alt 1.2
  • 秘密存储 2.3.1

在 Windows 7 机器上:

Window 7
Run Code Online (Sandbox Code Playgroud)

在 RHEL7 Linux 机器上:

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)

$ cat /proc/version
Linux version 3.10.0-514.26.2.el7.x86_64 (sandman@node3res7) (gcc version 4.8.5 20150623 (SuSE 4.8.5-11) (GCC) ) #1 SMP Tue Jul 4 13:45:36 UTC 2017
Run Code Online (Sandbox Code Playgroud)

在 Windows 上,登录名和密码按预期存储在安全的旧版本中,无需任何其他密码。我认为 WinVaultKeyring 只有在正确的用户登录时才能解锁,前提是我正确理解了所有内容:

>>> from keyring import get_keyring

>>> get_keyring()

<keyring.backends.Windows.WinVaultKeyring object at 0x000000000361CAC8>
Run Code Online (Sandbox Code Playgroud)

在 Linux 上,它有点不同,当您开始存储登录名和密码时,会询问额外的密码。每次我需要访问登录+密码时,都会请求最后一个密码:Please enter …

python-3.x python-keyring rhel7

5
推荐指数
1
解决办法
1245
查看次数

如何在GObject.timeout_add - Gtk3中使用Python SecretStorage

我尝试在2个Python进程中使用SecretStorage,但是当我尝试更新我的Gtk.Window时,我在大多数时间都收到此消息:

RuntimeError:无法初始化SecretService:未收到回复.可能的原因包括:远程应用程序未发送回复,消息总线安全策略阻止回复,回复超时过期或网络连接中断.

两者都以multiprocessing.Process开始,这是有效的:

def get_data(self):
    p1 = Process(target=P1().update_database)
    p1.start()
    p1.join()
    p2 = Process(target=P2().update_database)
    p2.start()
    p2.join()
Run Code Online (Sandbox Code Playgroud)

问题是:这是阻止我的Gtk界面,窗口被阻止,没有其他按钮可点击.

因此,我使用了一个也是threading.Thread

def on_get_data_button_clicked(self, widget):
    thread = Thread(target=self.get_data)
    thread.start()
Run Code Online (Sandbox Code Playgroud)

这也有效,但我无法从主窗口看到进程是否仍在进行中.

所以我添加了一个Gtk.Spinner-Button来查看活动

def on_get_data_button_clicked(self, widget):
    thread = Thread(target=self.get_data)
    thread.start()
    GObject.timeout_add(200, self.manage_spinner, thread)

def manage_spinner(self, thread):
    if thread.is_alive():
        return True
    else:
        self.sync_spinner.stop()
        return False
Run Code Online (Sandbox Code Playgroud)

有时这是有效的,但大多数时候我收到此错误:

RuntimeError:无法初始化SecretService:未收到回复.可能的原因包括:远程应用程序未发送回复,消息总线安全策略阻止回复,回复超时过期或网络连接中断.

在下标中,SecretStorage以这种方式使用:

def get_key(self, key_name):
    bus = secretstorage.dbus_init()
    collection = secretstorage.get_default_collection(bus)
    if collection.is_locked():
        collection.unlock()
    items = collection.get_all_items()
    for item in items:
        if item.get_label() == key_name:
            return item.get_secret()
Run Code Online (Sandbox Code Playgroud)

如果在get_key()调用期间调用GObject.timeout_add,则会出现此问题.

也许它也与这个问题有关: …

python gtk pygobject python-multithreading python-keyring

5
推荐指数
0
解决办法
131
查看次数

运行命令行工具时避免出现密钥环消息

在 Docker 中运行的无头 Linux 中运行命令行实用程序(在本例中为pgcli )时,我收到这两条消息:

No handlers could be found for logger "keyring.backend"
Please enter password for encrypted keyring:
Run Code Online (Sandbox Code Playgroud)

如何配置记录器和密钥环的密码,以便在运行任何依赖于密钥环的实用程序时不再烦恼?

请注意,我使用的是无头 Ubuntu,因此我需要知道如何从命令行执行此操作。

谢谢

ubuntu python-keyring

5
推荐指数
2
解决办法
7558
查看次数

在Ubuntu18上打开Spyder3时缺少导致Keyring错误的依赖项?

我对编程等还不陌生。我正在尝试使用Spyder3,并且不断收到此错误(如下)。我正在使用Geforce 1080ti,Ubuntu 18.04.01,python3.3.6,python2未安装。我尝试了$ pip3 install密钥环,该密钥环现已安装,但仍收到错误。

$ spyder3
Error initializing plugin EntryPoint('Windows (alt)', 'keyrings.alt.Windows', None, Distribution('keyrings.alt', '3.0')).
Traceback (most recent call last):
  File "/home/usr/.local/lib/python3.6/site-packages/keyring/backend.py", line 163, in _load_plugins
    init_func = ep.load()
  File "/home/usr/.local/lib/python3.6/site-packages/entrypoints.py", line 77, in load
    mod = import_module(self.module_name)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", …
Run Code Online (Sandbox Code Playgroud)

ide spyder python-keyring python-3.6 ubuntu-18.04

5
推荐指数
1
解决办法
917
查看次数

运行时错误:没有可用的推荐后端。(带 Python 的钥匙圈)

我有一个程序,它使用 Yagmail 和密钥环包来安全存储电子邮件凭据。当我在atom.io 中运行此脚本并空闲时,它可以工作。

然而,当我用 pyinstaller 打包它后,它给了我这样的消息:

RuntimeError: No recommended backend was available. Install a recommended 3rd party backend package; or, install the keyrings.alt package if you want to use the non-recommended backends. See https://pypi.org/project/keyring for details.
Run Code Online (Sandbox Code Playgroud)

在我的程序中我有

import keyring
Run Code Online (Sandbox Code Playgroud)

我也已经安装了 keyring.alt

python pyinstaller python-keyring

5
推荐指数
1
解决办法
2万
查看次数

WSL 2 上的 Python3 需要很长时间(超过 6 分钟)才能导入密钥环

当我尝试pip在我的机器上运行命令时,我注意到这个问题WSL2 Ubuntu-20.04,运行任何东西都需要很长时间。我最终将范围缩小到pip导入keyring模块的时间。

Python 3.8.5 (default, May 27 2021, 13:30:53)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> def import_keyring():
...     time_start = time.time()
...     import keyring
...     print(f"Keyring took {time.time() - time_start} seconds to load")
...
>>> import_keyring()
Keyring took 400.4930064678192 seconds to load
Run Code Online (Sandbox Code Playgroud)

查看进程资源管理器,似乎有一个子进程正在等待:

 dbus-launch --autolaunch <32 character hex string> --binary-syntax --close-stderr
Run Code Online (Sandbox Code Playgroud)

dbus-launch 命令本身似乎没有任何子进程,所以我常常strace查看它挂在哪里:

connect(3, {sa_family=AF_INET, sin_port=htons(6000), sin_addr=inet_addr("<my main machine's …
Run Code Online (Sandbox Code Playgroud)

python dbus pip python-keyring windows-subsystem-for-linux

2
推荐指数
1
解决办法
1060
查看次数