Oauth
什麼是Oauth?
一個開放協議,可以從Web,移動和桌面應用程序的簡單和標準方法中進行安全授權 - 來自文檔
- 最初設置Oauth的主要原因是允許應用程序訪問用戶的數據而無需將其提供給用戶的密碼。例子:還記得所有這些第三方應用程序都會要求您發送電子郵件 +密碼以訪問您的gmail聯繫人等嗎?明顯的違反安全性,因為應用程序可以堅持並能夠更改密碼。一些應用程序將將用戶的密碼存儲在原告文本中(明顯的安全風險)。用戶可以撤銷訪問的唯一方法是更改密碼
- OAuth的主要區別功能是,將用戶在第三方應用程序中輸入密碼,而是將用戶重定向到OAuth Server(我猜是主要的應用程序),以輸入其密碼,然後重定向回到尋求訪問的第三方應用程序。
- OAuth最初用例後的其他用例是在自己的API上構建第一方應用程序的組織。例子:登錄任何Google服務(YouTube,Gmail等)時,您不會直接登錄該服務。您將您重定向到Google的OAuth Server(coundures.google.com),然後在身份驗證後登錄並重定向到Google服務。
- 好處是出於安全原因集中密碼管理。
- 集中化的另一個好處是,它可以輕鬆升級所有用戶/服務的身份驗證
Oauth 2
- 在某些用例中,例如在移動應用程序中,無法安全地使用OAuth的初始實現。
- OAuth 2的目標是在OAuth 1上建造用於移動應用程序,並簡化與API消費者混淆的方面。
- OAuth 2的問題是,該協議的網絡和企業貢獻者之間存在衝突。許多爭論領域都放在不同的文檔中,在協議中留下了很多差距(因此,核心文檔中稱為框架)。
- 結果是OAuth 2的Web實現可能很複雜且令人困惑,因為您需要合成不同草稿的信息
- 實施問題:
- 標準不需要令牌類型
- 不需要特定的贈款類型
- 不提供有關令牌字符串大小的指導
創建OAuth 2應用程序
- 在服務網站上創建一個開發人員帳戶,並輸入有關應用程序(名稱,網站,徽標等)的基本信息
- 您將獲得一個
client_id和client_secret (有時),您的應用將使用該應用程序與服務進行交互。 - 註冊一個或多個重定向URL(OAuth 2服務將在用戶授權後將返回應用程序)以避免創建可以竊取用戶數據的惡意應用程序的關鍵。
- 重定向URL必須是HTTPS端點,以從攔截授權代碼和劫持會話中提供攻擊者
- OAuth 2沒有為不同的應用程序狀態註冊多個重定向URL,而是提供了一個“狀態”參數,可用於編碼應用程序狀態。
- 該參數是一個字符串,將在用戶被授權將其帶到應用程序中的正確位置後返回。狀態字符串應使用JWT之類的方法進行加密。
- 在用戶授權並將其重定向到客戶端應用程序後,生成的狀態最初存儲在會話中,OAuth服務器將狀態字符串與最初存儲的狀態進行比較,然後在交換授權代碼以供訪問令牌
我學到的其他概念
捲曲
- 代表客戶端URL是開發人員將數據傳輸到服務器的命令行工具。讓您通過指定要發送的URL(位置)和數據來與服務器進行通信。
- 支持不同的協議(HTTP,HTTP)並在幾乎每個平台上運行,非常適合在任何設備上測試通信
- 好處:
- 與幾乎OS和設備相當的便攜式和可比
- 對於測試端點有用
- 可以是冗長的,因此有助於調試
- 良好的錯誤記錄
在網絡上運行python腳本,而沒有諸如燒瓶或django之類的框架
- 您首先需要將Python腳本設置為CGI腳本
- CGI代表公共網關接口。它允許應用程序與Internet上的其他應用程序進行通信
- 首先創建一個CIG-bin文件夾,然後在此處移動Python腳本
- 然後使用Python的內置
http.server運行簡單的HTTP服務器 - 運行
python -m http.server --cgi來自包含CGI -bin的目錄以在CGI模式下啟動HTTP服務器。 - 導航到
http://localhost:8000/cgi-bin/your-script.py運行CGI腳本。 - 在
your-script.py中需要包含print("Content-type:text/htmlrnrn")以將響應的內容類型設置為“ text/html”,以使腳本像html文件一樣在瀏覽器中運行
Shebang(Hashbang)
-
#!在類似於Unix的操作系統中可執行文件的開始。 - 指定解釋器可執行文件的路徑,該路徑應用於運行腳本。
- 例如,像
#!/usr/bin/env python一樣的Shebang在Python腳本開始時告訴系統,該系統使用位於usr/bin/env python上的Python解釋器來運行腳本。
資源
- OAuth文檔
- 什麼是Oauth,為什麼重要? - YouTube上的Oktadev
- OAuth 2服務器
- IBM:什麼是捲髮?