มอบฟังก์ชันการทำงานของไลบรารีสำหรับการสื่อสารกับอุปกรณ์ FIDO ผ่าน USB รวมถึงการตรวจสอบลายเซ็นรับรองและการยืนยัน
ไลบรารีนี้มีจุดมุ่งหมายเพื่อรองรับโปรโตคอล FIDO U2F และ FIDO 2 สำหรับการสื่อสารกับเครื่องตรวจสอบความถูกต้อง USB ผ่านโปรโตคอล Client-to-Authenticator (CTAP 1 และ 2) นอกเหนือจากการเข้าถึงอุปกรณ์ระดับต่ำแล้ว คลาสที่กำหนดไว้ในโมดูล fido2.client
และ fido2.server
ยังใช้การดำเนินการระดับที่สูงกว่าซึ่งมีประโยชน์เมื่อเชื่อมต่อกับ Authenticator หรือเมื่อใช้งานการสนับสนุน WebAuthn สำหรับ Relying Party
สำหรับการใช้งาน โปรดดู examples/
ไดเร็กทอรี
ลิงก์เหล่านี้ที่เกี่ยวข้องกับ WebAuthn และ FIDO2 สามารถช่วยคุณเริ่มต้นได้:
คู่มือ Yubico WebAuthn/FIDO2: https://developers.yubico.com/FIDO2/
ข้อกำหนด W3C WebAuthn: https://www.w3.org/TR/webauthn/
ข้อมูลจำเพาะของ FIDO: https://fidoalliance.org/specialations/download/
โครงการนี้ ยกเว้นไฟล์ที่กล่าวถึงด้านล่าง ได้รับใบอนุญาตภายใต้ใบอนุญาต BSD 2-clause ดูไฟล์ COPYING สำหรับข้อความลิขสิทธิ์ฉบับเต็ม
โครงการนี้มีซอร์สโค้ดจาก pyu2f (https://github.com/google/pyu2f) ซึ่งได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0 ไฟล์เหล่านี้อยู่ใน fido2/hid/
ดู http://www.apache.org/licenses/LICENSE-2.0 หรือไฟล์ COPYING.APLv2 สำหรับข้อความลิขสิทธิ์แบบเต็ม
โครงการนี้ยังรวมรายการส่วนต่อท้ายสาธารณะ (https://publicsuffix.org) ซึ่งได้รับอนุญาตภายใต้ Mozilla Public License เวอร์ชัน 2.0 ไฟล์นี้ถูกจัดเก็บเป็น fido2/public_suffix_list.dat
ดู https://mozilla.org/MPL/2.0/ หรือไฟล์ COPYING.MPLv2 สำหรับข้อความลิขสิทธิ์ฉบับเต็ม
fido2 เข้ากันได้กับ Python 3.7 และใหม่กว่า และได้รับการทดสอบบน Windows, MacOS และ Linux การสนับสนุน OpenBSD, FreeBSD และ NetBSD มีให้ตามที่เป็นอยู่และอาศัยการมีส่วนร่วมของชุมชน
fido2 สามารถติดตั้งได้โดยการรันคำสั่งต่อไปนี้:
pip ติดตั้ง fido2
หากต้องการติดตั้งการขึ้นต่อกันที่จำเป็นสำหรับการสื่อสารกับเครื่องยืนยันตัวตน NFC ให้ใช้:
pip ติดตั้ง fido2 [pcsc]
ภายใต้ Windows 10 (1903 หรือใหม่กว่า) การเข้าถึงอุปกรณ์ FIDO จะถูกจำกัด และจำเป็นต้องทำงานในฐานะผู้ดูแลระบบ ไลบรารีนี้ยังสามารถใช้ได้เมื่อทำงานในฐานะที่ไม่ใช่ผู้ดูแลระบบ ผ่านทางคลาส fido.client.WindowsClient
ตัวอย่างนี้รวมอยู่ในไฟล์ examples/credential.py
ภายใต้ Linux คุณจะต้องเพิ่มกฎ Udev เพื่อให้สามารถเข้าถึงอุปกรณ์ FIDO หรือทำงานในฐานะรูทได้ ตัวอย่างเช่น กฎ Udev อาจมีดังต่อไปนี้:
#Udev กฎสำหรับการอนุญาตให้ HID เข้าถึงอุปกรณ์ Yubico เพื่อรองรับ FIDO KERNEL=="hidraw*", ระบบย่อย=="hidraw", MODE = "0664", กลุ่ม = "plugdev", ATTRS {idVendor} = = "1050"
อาจมีแพ็คเกจที่มีอยู่แล้วสำหรับการแจกจ่ายของคุณซึ่งทำสิ่งนี้ให้กับคุณ ดู: https://support.yubico.com/hc/en-us/articles/360013708900-Using-Your-U2F-YubiKey-with-Linux
ภายใต้ FreeBSD คุณจะต้องเรียกใช้ในฐานะรูทหรือเพิ่มกฎสำหรับอุปกรณ์ของคุณไปที่ /etc/devd.conf ซึ่งสามารถดำเนินการอัตโนมัติได้โดยการติดตั้ง security/u2f-devd:
# pkg ติดตั้ง u2f-devd
โครงการนี้ขึ้นอยู่กับการเข้ารหัส สำหรับคำแนะนำในการติดตั้งการขึ้นต่อกันนี้ โปรดดู https://cryptography.io/en/latest/installation/
สามารถเลือกรองรับ NFC ผ่านทาง PC/SC โดยใช้ไลบรารี pyscard สำหรับคำแนะนำในการติดตั้งการพึ่งพานี้ โปรดดู https://github.com/LudovicRousseau/pyscard/blob/master/INSTALL.md
ในการพัฒนาห้องสมุดเราใช้บทกวี หากต้องการตั้งค่าสภาพแวดล้อม dev ให้รันคำสั่งนี้ในไดเร็กทอรีรากของที่เก็บ:
ติดตั้งบทกวี
นอกจากนี้เรายังใช้การคอมมิตล่วงหน้าเพื่อสแกนโค้ดก่อนคอมมิต
แม้ว่าการทดสอบจำนวนมากสามารถทำงานได้ด้วยตัวเอง แต่การทดสอบบางอย่างต้องใช้อุปกรณ์ U2F หรือ FIDO2 ที่เชื่อมต่อจึงจะทำงานได้
บทกวีวิ่ง pytest