Mật khẩu đặt khóa Python

Thư viện khóa là một thư viện để truy cập các kho lưu trữ mật khẩu khác nhau theo cách thống nhất. Nó dựa trên thư viện khóa Python

Thư viện cơ sở chứa một chương trình phụ trợ dựa trên biến môi trường cơ bản. Ngoài ra, có các phần phụ trợ khác có giao diện với các cửa hàng bí mật khác có thể được cài đặt riêng

1 Giao diện người dùng

Tạo một chuỗi khóa bằng cách sử dụng phần phụ trợ được chỉ định bởi chuỗi url keyring-spec. Quy trình này sẽ đưa ra một ngoại lệ vượt qua lỗi keyring-backend-load?

người dùng = đầu vào ["Tên người dùng. "] pw = getpass. getpass["Mật khẩu. "] auth_request = { "phạm vi". [ "public_repo", "gist" ], "ghi chú". "Công cụ IPython", "note_url". "https. //github. com/ipython/ipython/tree/master/tools", } phản hồi = yêu cầu. bài đăng ['https. //api. github. com/ủy quyền', auth=[người dùng, pw], data=json. kết xuất [auth_request]] phản hồi. mã thông báo raise_for_status[] = json. tải [đáp ứng. văn bản] ['mã thông báo'] khóa. set_password['github', fake_username, token] trả lại mã thông báo
def _parse_parameters[tên, tùy chọn]. """Phân tích tham số, với một bộ tên cho ngữ cảnh khóa""" cho khóa trong tùy chọn. phím[]. val = options[key] if isinstance[val, dict]. val = _parse_parameters[names + [key,], val] if isinstance[val, string_types] and len[val] > 1 and val[0] == "^". # Giải mã bí mật từ kho khóa val = val[1. ] dịch vụ = ". ". tham gia [tên] hoặc "_" nếu dịch vụ == "đàn hồi". # Trường hợp đặc biệt, do cách chúng tôi phân tích các dòng lệnh, coi đây là dịch vụ gốc = "_" logger. debug["keyring get['%s', '%s']", dịch vụ, val] val = keyring. get_password[service, val] if isinstance[val, string_types] and len[val] > 1 and val[0] == "$". # Đọc một giá trị từ môi trường val = val[1. ] tiều phu. gỡ lỗi["env['%s']", val] val = os. môi trường. tùy chọn nhận [giá trị] [khóa] = tùy chọn trả về giá trị
def write_temporary_credential[máy chủ, tài khoản, người dùng, id_token, store_temporary_credential=False]. nếu không id_token. tiều phu. gỡ lỗi ["không có mã thông báo ID nào được cung cấp khi cố lưu trữ thông tin xác thực tạm thời"] trả về nếu IS_MACOS hoặc IS_WINDOWS. nếu không khóa. tiều phu. debug["Phụ thuộc 'keyring' chưa được cài đặt, không thể cache id token. Bạn có thể gặp " "nhiều cửa sổ bật lên xác thực khi sử dụng Trình xác thực trình duyệt bên ngoài. Để tránh " "điều này, vui lòng cài đặt mô-đun khóa bằng lệnh sau. cài đặt pip " "snowflake-connector-python[secure-local-storage]"] trả về new_target = convert_target[máy chủ, người dùng] thử. móc khóa. set_password[new_target, người dùng. upper[], id_token] ngoại trừ keyring. lỗi. KeyringError như ke. tiều phu. debug["Không thể lưu id_token vào keyring, %s", str[ke]] elif IS_LINUX và store_temporary_credential. write_temporary_credential_file[máy chủ, tài khoản, người dùng, id_token] khác. tiều phu. gỡ lỗi ["tham số kết nối client_store_temporary_credential không được đặt hoặc hệ điều hành không hỗ trợ"]

Python keyring lib cung cấp một cách dễ dàng để truy cập dịch vụ khóa hệ thống từ python. Nó có thể được sử dụng trong bất kỳ ứng dụng nào cần lưu trữ mật khẩu an toàn

Thư viện khóa được cấp phép theo cả giấy phép MIT và giấy phép PSF

Các dịch vụ khóa chính này được hỗ trợ bởi thư viện khóa Python

  • Móc khóa Mac OS X
  • Mật vụ Linux
  • Kho thông tin xác thực Windows

Các triển khai khóa khác cũng được cung cấp. Để biết thêm chi tiết, duyệt nguồn

hướng dẫn cài đặt

easy_install hoặc pip

Chạy easy_install hoặc pip

$ easy_install keyring
$ pip install keyring

Cài đặt nguồn

Tải xuống tarball nguồn từ https. //pypi. con trăn. org/pypi/keyring, giải nén nó, rồi chạy "setup. cài đặt py"

Sử dụng móc khóa

Cách sử dụng cơ bản của keyring khá đơn giản. chỉ cần gọi keyring. set_password và keyring. lấy mật khẩu

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'

Định cấu hình lib khóa của bạn

Python keyring lib chứa các triển khai cho một số phụ trợ. Thư viện sẽ tự động chọn keyring phù hợp nhất với môi trường hiện tại của bạn. Bạn cũng có thể chỉ định khóa bạn muốn sử dụng trong tệp cấu hình hoặc bằng cách gọi hàm

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
2

Tùy chỉnh khóa của bạn bằng tệp cấu hình

Phần này mô tả cách thay đổi tùy chọn của bạn trong tệp cấu hình

Đường dẫn tệp cấu hình

Cấu hình của lib được lưu trữ trong tệp có tên "keyringrc. cfg". Tệp này phải được tìm thấy ở một vị trí dành riêng cho nền tảng. Để xác định nơi lưu trữ tệp cấu hình, hãy chạy như sau

python -c "import keyring.util.platform_; print[keyring.util.platform_.config_root[]]"

Một số dây móc khóa cũng lưu trữ dữ liệu móc khóa trong hệ thống tệp. Để xác định nơi lưu trữ các tệp dữ liệu, hãy chạy lệnh này

python -c "import keyring.util.platform_; print[keyring.util.platform_.data_root[]]"

Cấu hình nội dung tập tin

Để chỉ định một chương trình phụ trợ khóa, hãy đặt tùy chọn khóa mặc định thành đường dẫn đầy đủ của lớp cho chương trình phụ trợ đó, chẳng hạn như

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
3

Nếu keyring-path được chỉ định, keyring sẽ thêm đường dẫn đó vào đường dẫn tìm kiếm mô-đun Python trước khi tải phần phụ trợ

Ví dụ: cấu hình này có thể được sử dụng để tải SimpleKeyring từ thư mục demo trong thanh toán dự án

[backend]
default-keyring=simplekeyring.SimpleKeyring
keyring-path=/home/kang/pyworkspace/python-keyring-lib/demo/

Viết phụ trợ keyring của riêng bạn

Giao diện cho phần phụ trợ được xác định bởi

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
4. Mọi chương trình phụ trợ phải xuất phát từ lớp cơ sở đó và xác định thuộc tính
>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
5 và ba chức năng.
>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
6,
>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
7 và
>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
8

Xem mô-đun

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
9 để biết thêm chi tiết về giao diện của lớp này

Đặt khóa trong thời gian chạy

Ngoài ra, khóa cho phép cấu hình theo chương trình của chương trình phụ trợ gọi api

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
2. Chương trình phụ trợ được chỉ định sau đó sẽ được sử dụng để lưu trữ và truy xuất mật khẩu

Đây là một ví dụ minh họa cách gọi

python -c "import keyring.util.platform_; print[keyring.util.platform_.config_root[]]"
1

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
5

Tích hợp keyring lib với ứng dụng của bạn

giao diện API

Keyring lib có một vài chức năng

  • python -c "import keyring.util.platform_; print[keyring.util.platform_.config_root[]]"
    
    2. Trả về triển khai khóa hiện được tải
  • python -c "import keyring.util.platform_; print[keyring.util.platform_.config_root[]]"
    
    3. Trả về mật khẩu được lưu trữ trong keyring hoạt động. Nếu mật khẩu không tồn tại, nó sẽ trả về Không có
  • python -c "import keyring.util.platform_; print[keyring.util.platform_.config_root[]]"
    
    4. Lưu trữ mật khẩu trong keyring
  • python -c "import keyring.util.platform_; print[keyring.util.platform_.config_root[]]"
    
    5. Xóa mật khẩu được lưu trữ trong keyring. Nếu mật khẩu không tồn tại, nó sẽ đưa ra một ngoại lệ

Tham gia

Python keyring lib là một dự án cộng đồng mở và rất hoan nghênh những người đóng góp mới

  • Kho. http. //cai Xô nhỏ. org/kang/python-keyring-lib/
  • Theo dõi lỗi. http. //cai Xô nhỏ. org/kang/python-keyring-lib/issues/
  • Danh sách gửi thư. http. //các nhóm. Google. com/group/python-keyring

Chạy thử nghiệm

Các thử nghiệm được chạy liên tục bằng Travis-CI

Để tự chạy thử nghiệm, bạn sẽ muốn cài đặt khóa vào một số môi trường để có thể kiểm tra nó. Ba kỹ thuật đề nghị được mô tả dưới đây

Sử dụng trình chạy pytest

Móc khóa được trang bị với bộ chạy pytest. Do đó, bạn có thể gọi các bài kiểm tra từ bất kỳ Python được hỗ trợ nào [đã cài đặt phân phối] bằng cách sử dụng lệnh này

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
0

trình chạy pytest sẽ tải xuống mọi phụ thuộc chưa được đáp ứng và chạy thử nghiệm bằng pytest

Kỹ thuật này là kỹ thuật được sử dụng bởi tập lệnh Travis-CI

Sử dụng virtualenv và pytest/nose/unittest2

Pytest và Nose là hai trình chạy thử nghiệm phổ biến sẽ khám phá các thử nghiệm và chạy chúng. Unittest [unittest2 trong Python 2. 6] cũng có chế độ khám phá các bài kiểm tra

Tuy nhiên, trước tiên, những người chạy thử nghiệm này thường cần một môi trường thử nghiệm để chạy. Bạn nên cài đặt khóa vào môi trường ảo để tránh can thiệp vào môi trường hệ thống của bạn. Để biết thêm thông tin, hãy xem tài liệu venv hoặc trang chủ virtualenv

Sau khi bạn đã tạo [hoặc chỉ định] môi trường của mình, hãy cài đặt khóa vào môi trường bằng cách chạy

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
1

Sau đó, gọi người chạy thử yêu thích của bạn, e. g

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
2

hoặc

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
3

Sử dụng bản dựng

Keyring cung cấp một buildout. cfg để sử dụng với buildout. Nếu bạn đã cài đặt bản dựng, các bài kiểm tra có thể được gọi như vậy

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
0

Để biết thêm thông tin về các tùy chọn mà tập lệnh cung cấp, hãy thực thi

>>> import keyring
>>> keyring.set_password["system", "username", "password"]
>>> keyring.get_password["system", "username"]
'password'
1

Tín dụng

Dự án dựa trên ý tưởng của Tarek Ziade trong bài đăng này. Kang Zhang ban đầu thực hiện nó như một dự án Google Summer of Code và Tarek đã cố vấn cho Kang về dự án này

Làm cách nào để cài đặt khóa trong Python?

Nhập “ khóa cài đặt pip ” [không có dấu ngoặc kép] trong dòng lệnh và nhấn Enter lần nữa . Điều này cài đặt khóa cho cài đặt Python mặc định của bạn.

Keyring lưu trữ mật khẩu như thế nào?

Dữ liệu nhạy cảm được mã hóa và lưu trữ trong tệp khóa trong thư mục chính của người dùng . Khóa mặc định sử dụng mật khẩu đăng nhập để mã hóa, vì vậy người dùng không cần nhớ mật khẩu khác.

Mật khẩu khóa là gì?

Giống như một chuỗi khóa trong đời thực cho phép bạn giữ một số bộ khóa nhất định cùng nhau, một chuỗi khóa trong Mật khẩu và Khóa cho phép bạn giữ mật khẩu và khóa trong các nhóm riêng biệt. When you open Passwords and Keys for the first time, you will see keys and password grouped together.

Mật khẩu khóa Linux là gì?

Khóa của Ubuntu là một tính năng thu thập tất cả mật khẩu của bạn trong một ứng dụng an toàn [khóa gnome] và sẽ sử dụng các mật khẩu được lưu trữ này để tự động đăng nhập bạn vào các dịch vụ khác nhau. All of your stored passwords inside of the keyring are protected by a single master password.

Chủ Đề