oauthlib-一款通用且完整的實現OAuth請求籤名邏輯python庫
OAuth通常看起來很複雜且難以實現。有一些著名的庫可以處理OAuth請求,但是它們都具有以下一種或兩種特性:
它們早於OAuth 1.0規範AKA RFC 5849。
它們早於OAuth 2.0規範AKA RFC 6749。
他們假定使用特定的HTTP請求庫。
OAuthLib是一個框架,可在不假設特定HTTP請求物件或Web框架的情況下實現OAuth1或OAuth2的邏輯。使用它可以將OAuth客戶端支援移植到您喜歡的HTTP庫上,或將支援移植到您喜歡的Web框架上。如果您是此類庫的維護者,請在OAuthLib之上編寫一個薄薄的單板並以很少的努力獲得OAuth支援。
支援哪些Web框架?
以下軟體包使用OAuthLib提供了OAuth支援。
對於Django,有django-oauth-toolkit,其中包括Django REST框架支援。
對於Flask,有flask-oauthlib和Flask-Dance。
對於Pyramid,有pyramid-oauthlib。
對於Bottle有bottle-oauthlib。
如果您編寫了支援您喜歡的框架的OAuthLib軟體包,請更新文件。
FAQ
1.如何將OAuthlib用作Django,Flask和其他Web框架的提供程式?
提供程式可以在任何Web框架中實現。但是,其中一些庫具有立即可用的庫來幫助整合:具體參考上方的內容。
對於其他框架,請通過開啟GitHub問題或在Gitter OAuthLib社群上進行聯絡。
2.身份認證和授權有什麼區別?
認證
身份驗證可驗證您的身份。例如,您可以使用ssh客戶端登入到Unix伺服器,或者使用POP3和SMTP客戶端訪問電子郵件伺服器。通常,PAM(可插拔身份驗證模組)用作高階應用程式程式設計介面(API)中的低階身份驗證方案,從而允許依賴於身份驗證的程式獨立於基礎身份驗證方案編寫。
授權
授權會驗證您有權執行的操作。例如,允許您通過ssh客戶端登入Unix伺服器,但無權訪問瀏覽器/ data2或任何其他檔案系統。成功進行身份驗證後,將進行授權。可以在檔案系統級別或使用各種應用程式級別的配置選項(例如chroot(2))來控制授權。
通常,連線嘗試必須由系統進行身份驗證和授權。通過這兩個因素,您可以輕鬆找出為什麼接受或拒絕連線嘗試的原因。
3.簡而言之,OAuth 1和2之間的最大區別是什麼?
OAuth 2更簡單,因為它需要使用TLS,而OAuth 1則需要在沒有TLS的情況下安全地工作。要確保沒有TLS OAuth 1的安全性,需要對每個請求進行簽名,這可能很麻煩。
獲取模組
標準安裝
標準安裝包含OAuthLib的核心功能,可以通過下載原始檔手動安裝:OAuthLib模組下載。
為了降低其要求,標準安裝中不包括RSA公鑰加密所需的Python軟體包。
帶有RSA的附加功能
為了支援使用RSA公鑰加密的功能,還必須安裝PyCA的 加密軟體包和PyJWT軟體包。這可以通過安裝OAuthLib的核心功能以及“ signedtoken”附加功能來完成。
pip install 'oauthlib[signedtoken]'