Pracuję nad skryptem ze współpracownikiem, który polega na łączeniu się z bazą danych. Chcemy, aby kod był niezależny od tego, który z nas go używa, przy jednoczesnym zachowaniu prywatności naszych haseł i bez konieczności uwierzytelniania w trakcie dnia pracy. Po pewnym wyszukiwaniu (obaj jesteśmy nowicjuszami w Pythonie) wydaje się, że możemy użyć do tego celu kluczyka, więc zainstalowałem go z pip (najprawdopodobniej wersja 1.2.2 biblioteki, bazująca na mojej pamięci daty instalacji).Czy istnieje sposób uzyskania dostępu do kluczy w systemie Windows bez podawania hasła głównego?
Problem polega na tym, że przy próbie uzyskania dostępu do zapisanych haseł, jestem poproszony o ustawienie hasła głównego, aby uzyskać dostęp do bazy kluczy, jak pokazano tutaj (z IDLE):
>>> import keyring
>>> keyring.set_password('Service', 'MyUsername', 'MyPassword')
Warning (from warnings module):
File "C:\Python27\lib\getpass.py", line 92
return fallback_getpass(prompt, stream)
GetPassWarning: Can not control echo on the terminal.
Warning: Password input may be echoed.
Please enter password for encrypted keyring:
Po ustawieniu hasła, Mogę łatwo uzyskiwać i ustawiać hasła, dopóki nie zrestartuję powłoki. Teraz muszę ponownie wprowadzić hasło główne:
>>> ================================ RESTART ================================
>>> import keyring
>>> print keyring.get_password('Service', 'MyUsername')
Warning (from warnings module):
File "C:\Python27\lib\getpass.py", line 92
return fallback_getpass(prompt, stream)
GetPassWarning: Can not control echo on the terminal.
Warning: Password input may be echoed.
Please enter password for encrypted keyring:
Po wprowadzeniu hasła głównego, to uwierzytelnienie nie ustępuje tylko podczas bieżącej sesji/między ponownym uruchomieniu. Kiedy uruchamiam skrypty z wiersza poleceń, jest jeszcze gorzej - muszę się uwierzytelniać za każdym razem, gdy skrypt jest uruchamiany. W tym momencie keyring nie oszczędza mi czasu ani wysiłku, i wątpię, by moje hasło było bezpieczniejsze niż zapamiętywanie i ręczne wprowadzanie.
Po wyszukaniu rozwiązań wygląda na to, że keyring automatycznie uwierzytelni się w systemie Unix, jeśli hasło główne jest takie samo, jak hasło konta użytkownika, ale to nie działało dla mnie w systemie Windows.
Czy staram się zdobyć brelok do zrobienia czegoś, czego nie powinienem robić, czy jest tylko błąd w mojej implementacji?
Moje doświadczenie wydaje się być sprzeczny z tym zgłoszone przez innego użytkownika (-ów), który twierdzi, że nie jest pytany o hasło, gdy aplikacja próbuje uzyskać dostęp do bazy kluczy w odpowiednim pytaniem How does python-keyring work on Windows?
Nie mam odpowiedzi, ale patrzyłem na podobny problem.Z mojego odczytu dokumentów myślę, że może zaistnieć potrzeba zaimplementowania niestandardowego zaplecza python-keyring (prawdopodobnie z podklasy na keyring.backends.file.BaseKeyring) i nadpisania metod szyfrowania/odszyfrowania do schematu opartego na certyfikacie i skonfigurowania zaplecza do użyj certyfikatu identyfikującego dozwolonego użytkownika – rtmie
Którą wersję klucza używasz? Właśnie pobrałem najnowszy klucz z: https://bitbucket.org/kang/python-keyring-lib/downloads. Próbowałem pod Windows 7 z Python2.7 w IDLE. Nie zgłaszał ostrzeżeń takich jak Ty, ani nie prosił o podanie hasła do zaszyfrowanych kluczy: To po prostu działa dobrze tutaj – ZZY
@ZZY Prawdopodobnie używałem wersji 1.2.2 w czasie pisania tego pytania, ale wkrótce zrezygnowałem i nie używałem go od tego czasu. Wygląda na to, że ten problem nie występuje już w obecnej wersji 3.8 dostępnej przez 'pip'. Dziękuję za czek - jeśli utworzysz odpowiedź, przyznaję nagrodę za nagrodę. – Air