本文概述了oauth 2.0協議。它討論了oauth 2.0實現過程中涉及的不同參與者和步驟。
oauth2支援「委派身份驗證」,即授予對其他人或應用程式的訪問許可權以代表您執行操作。考慮一下這種情況:你開車去一家優雅的酒店,他們可能會提供代客泊車服務。然後,您授權代客服務員通過將鑰匙交給他來開車,以便讓他代表您執行操作。
oauth2的工作方式類似 - 使用者授予對應用程式的訪問許可權,以代表使用者執行有限的操作,並在訪問可疑時撤消訪問許可權。
i)資源伺服器:託管受oauth2保護的使用者擁有資源的伺服器。資源伺服器驗證訪問令牌並提供受保護資源。
ii)資源所有者:通常,應用程式的使用者是資源所有者。資源所有者能夠授予或拒絕訪問資源伺服器上託管的自己的資料。
iii)授權伺服器:授權伺服器獲得資源所有者的同意,並向客戶端發出訪問令牌以訪問資源伺服器託管的受保護資源。
iv)客戶端:應用程式使api請求代表資源所有者對受保護資源執行操作。在它可以這樣做之前,它必須由資源所有者授權,並且授權必須由資源伺服器/授權伺服器驗證。oauth2根據其與授權伺服器安全身份驗證的能力(即,維護其客戶端憑據機密性的能力)定義了兩種客戶端型別:
a)機密:客戶能夠保持其憑證的機密性。機密客戶端在安全伺服器上實現,具有對客戶端憑證的受限訪問(例如,在web伺服器上執行的web應用程式)。
b)公共:客戶端無法維護其憑據的機密性(例如,已安裝的本機應用程式或基於web瀏覽器的應用程式),並且無法通過任何其他方式進行安全的客戶端身份驗證。
讓我們從開發人員的角度看這個場景,並找出這裡涉及的演員:
oauth要求客戶端向授權伺服器註冊。授權伺服器請求有關客戶端的一些基本資訊,例如name,redirect_uri(授權伺服器在資源所有者授予許可權時將重定向到的url)並將客戶端憑據(client-id,client-secret)返回給客戶端。在執行諸如交換訪問令牌的授權碼和重新整理訪問令牌等操作時,這些憑證對於保護請求的真實性至關重要。
要獲取訪問令牌,客戶端將從資源所有者獲取授權。授權以授權授權的形式表示,客戶端使用該授權授權來請求訪問令牌。oauth2定義了四種標準授權型別:授權**,隱式,資源所有者密碼憑據和客戶端憑據。它還提供了一種用於定義其他授權型別的擴充套件機制。
i)授權**授權:此授權型別針對機密客戶端(web應用程式伺服器)進行了優化。授權**流不會將訪問令牌公開給資源所有者的瀏覽器。相反,使用通過瀏覽器傳遞的中間「授權**」來完成授權。在對受保護的api進行呼叫之前,必須將此**交換為訪問令牌。
ii)隱性撥款:此撥款型別適用於公共客戶。隱式授權流程不適用重新整理令牌。如果授權伺服器定期過期訪問令牌,則只要需要訪問許可權,您的應用程式就需要執行授權流程。在此流程中,在使用者授予所請求的授權後,會立即將訪問令牌返回給客戶端。不需要中間授權**,因為它在授權**授權中。
iii)資源所有者密碼憑證:資源所有者密碼憑證授權型別適用於資源所有者與客戶端具有信任關係並且資源所有者同意與客戶端共享他/她的憑證(使用者名稱,密碼)的情況。然後,客戶端可以使用所有者憑據中的資源從授權伺服器獲取訪問令牌。
iv)客戶端憑據:當客戶端本身擁有資料且不需要資源所有者的委派訪問許可權,或者已經在典型oauth流程之外授予應用程式委派訪問許可權時,此授權型別是合適的。在此流程中,不涉及使用者同意。客戶端交換其客戶端憑據以獲取訪問令牌。
如果訪問令牌由於令牌已過期或已被撤銷而不再有效,則使用oauth 2.0訪問令牌進行api呼叫可能會遇到錯誤。在這種情況下,資源伺服器將返回4xx錯誤**。客戶端可以使用重新整理令牌(在授權**交換訪問令牌時獲得)獲取新的訪問令牌。
這是嘗試提供oauth 2.0過程的概述,並提供獲取訪問令牌的方法。我希望它有所幫助。
享受整合應用的樂趣!
英文原文:dzone.com/articles/oa…
初學者mysql MySQL初學者使用指南
有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連線mysql 修改密碼 增加使用者等方面來學習一些mysql的常用命令。一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後...
DLL初學者指南
這裡有兩個方法來載入乙個dll 乙個方法是捷徑另乙個則相比要複雜些。捷徑是只鏈結到你.lib 檔案並將.dll檔案置入你的新專案的路徑中去。因此,建立乙個新的空的win32控制台專案並新增乙個原始檔。將你做的dll放入你的新專案相同的目錄下。include include declspec dlli...
DLL初學者指南
dll初學者指南 dll project的源 及測試專案 原文出處 codeguru 我正在學習dlls,談不上對其有什麼高屋建瓴的見解 本文只是 通過 編碼讓你看到並想知道 是如何執行的。在本文中,我假定你知道如何使用你的編譯器特性,比如設定目錄路徑等等。ifndef dll tutorial h...