Oauth2.0协议 http://www.php20.com/forum.php?mod=viewthreadtid=28 (出处: 码农之家)
概要?
? ? OAuth2.0是OAuth協(xié)議的下一版本,但不向后兼容OAuth 1.0即完全廢止了OAuth1.0。 OAuth 2.0關(guān)注客戶端開發(fā)者的簡易性。要么通過組織在資源擁有者和HTTP服務(wù)商之間的被批準(zhǔn)的交互動作代表用戶,要么允許第三方應(yīng)用代表用戶獲得訪問的權(quán)限。同時(shí)為Web應(yīng)用,桌面應(yīng)用和手機(jī),和起居室設(shè)備提供專門的認(rèn)證流程。2012年10月,OAuth 2.0協(xié)議正式發(fā)布為RFC 6749
OAuth 1.0已經(jīng)在IETF塵埃落定,編號是RFC5849
這也標(biāo)志著OAuth已經(jīng)正式成為互聯(lián)網(wǎng)標(biāo)準(zhǔn)協(xié)議。
OAuth 2.0早已經(jīng)開始討論和建立的草案。OAuth2.0很可能是下一代的“用戶驗(yàn)證和授權(quán)”標(biāo)準(zhǔn)。現(xiàn)在百度開放平臺,騰訊開放平臺等大部分的開放平臺都是使用的OAuth 2.0協(xié)議作為支撐。
OAuth(開放授權(quán))是一個(gè)開放標(biāo)準(zhǔn),允許用戶讓第三方應(yīng)用訪問該用戶在某一網(wǎng)站上存儲的私密的資源(如照片,視頻,聯(lián)系人列表),而無需將用戶名和密碼提供給第三方應(yīng)用。
OAuth
允許用戶提供一個(gè)令牌,而不是用戶名和密碼來訪問他們存放在特定服務(wù)提供者的數(shù)據(jù)。每一個(gè)令牌授權(quán)一個(gè)特定的網(wǎng)站(例如,視頻編輯網(wǎng)站)在特定的時(shí)段(例如,接下來的2小時(shí)內(nèi))內(nèi)訪問特定的資源(例如僅僅是某一相冊中的視頻)。這樣,OAuth允許用戶授權(quán)第三方網(wǎng)站訪問他們存儲在另外的服務(wù)提供者上的信息,而不需要分享他們的訪問許可或他們數(shù)據(jù)的所有內(nèi)容。
OAuth是OpenID的一個(gè)補(bǔ)充,但是完全不同的服務(wù)。
OAuth 2.0
是OAuth協(xié)議的下一版本,但不向后兼容OAuth 1.0。 OAuth 2.0關(guān)注客戶端開發(fā)者的簡易性,同時(shí)為Web應(yīng)用,桌面應(yīng)用和手機(jī),和起居室設(shè)備提供專門的認(rèn)證流程。2012年10月,OAuth 2.0協(xié)議正式發(fā)布為RFC 6749 。
Facebook的新的Graph API只支持OAuth 2.0,Google在2011年3月亦宣布Google API對OAuth 2.0的支持。
認(rèn)證授權(quán)過程編輯
在認(rèn)證和授權(quán)的過程中涉及的三方包括:
1、服務(wù)提供方,用戶使用服務(wù)提供方來存儲受保護(hù)的資源,如照片,視頻,聯(lián)系人列表。
2、用戶,存放在服務(wù)提供方的受保護(hù)的資源的擁有者。
3、客戶端,要訪問服務(wù)提供方資源的第三方應(yīng)用,通常是網(wǎng)站,如提供照片打印服務(wù)的網(wǎng)站。在認(rèn)證過程之前,客戶端要向服務(wù)提供者申請客戶端標(biāo)識。
使用OAuth進(jìn)行認(rèn)證和授權(quán)的過程如下所示:
用戶想操作存放在服務(wù)提供方的資源。
用戶登錄客戶端向服務(wù)提供方請求一個(gè)臨時(shí)令牌。
服務(wù)提供方驗(yàn)證客戶端的身份后,授予一個(gè)臨時(shí)令牌。
客戶端獲得臨時(shí)令牌后,將用戶引導(dǎo)至服務(wù)提供方的授權(quán)頁面請求用戶授權(quán)。在這個(gè)過程中將臨時(shí)令牌和客戶端的回調(diào)連接發(fā)送給服務(wù)提供方。
用戶在服務(wù)提供方的網(wǎng)頁上輸入用戶名和密碼,然后授權(quán)該客戶端訪問所請求的資源。
授權(quán)成功后,服務(wù)提供方引導(dǎo)用戶返回客戶端的網(wǎng)頁。
客戶端根據(jù)臨時(shí)令牌從服務(wù)提供方那里獲取訪問令牌。
服務(wù)提供方根據(jù)臨時(shí)令牌和用戶的授權(quán)情況授予客戶端訪問令牌。
客戶端使用獲取的訪問令牌訪問存放在服務(wù)提供方上的受保護(hù)的資源。
簡單歷史回顧
OAuth 1.0在2007年的12月底發(fā)布并迅速成為工業(yè)標(biāo)準(zhǔn)。
2008年6月,發(fā)布了OAuth 1.0 Revision A,這是個(gè)稍作修改的修訂版本,主要修正一個(gè)安全方面的漏洞。
2010年四月,OAuth 1.0的終于在IETF發(fā)布了,協(xié)議編號RFC 5849。
OAuth 2.0的草案是在2011年5月初在IETF發(fā)布的。
OAuth is a security protocol that enables users to grant third-party access to their web resources without sharing their passwords.
OAuth是個(gè)安全相關(guān)的協(xié)議,作用在于,使用戶授權(quán)第三方的應(yīng)用程序訪問用戶的web資源,并且不需要向第三方應(yīng)用程序透露自己的密碼。
OAuth 2.0是個(gè)全新的協(xié)議,并且不對之前的版本做向后兼容,然而,OAuth 2.0保留了與之前版本OAuth相同的整體架構(gòu)。
這個(gè)草案是圍繞著 OAuth2.0的需求和目標(biāo),歷經(jīng)了長達(dá)一年的討論,討論的參與者來自業(yè)界的各個(gè)知名公司,包括Yahoo!, Facebook, Salesforce, Microsoft, Twitter, Deutsche Telekom, Intuit, Mozilla, and Google。
OAuth 2.0的新特性:
6種全新流程
User-Agent Flow – 客戶端運(yùn)行于用戶代理內(nèi)(典型如web瀏覽器)。
Web Server Flow – 客戶端是web服務(wù)器程序的一部分,通過http request接入,這是OAuth 1.0提供的流程的簡化版本。
Device Flow – 適用于客戶端在受限設(shè)備上執(zhí)行操作,但是終端用戶單獨(dú)接入另一臺電腦或者設(shè)備的瀏覽器
Username and Password Flow – 這個(gè)流程的應(yīng)用場景是,用戶信任客戶端處理身份憑據(jù),但是仍然不希望客戶端儲存他們的用戶名和密碼,這個(gè)流程僅在用戶高度信任客戶端時(shí)才適用。
Client Credentials Flow – 客戶端適用它的身份憑據(jù)去獲取access token,這個(gè)流程支持2-legged OAuth的場景。
Assertion Flow – 客戶端用assertion去換取access token,比如SAML assertion。
可以通過使用以上的多種流程實(shí)現(xiàn)Native應(yīng)用程序?qū)Auth的支持(程序運(yùn)行于桌面操作系統(tǒng)或移動設(shè)備)
application support (applications running on a desktop or mobile device) can be implemented using many of the flows above.
持信人token
OAuth 2.0 提供一種無需加密的認(rèn)證方式,此方式是基于現(xiàn)存的cookie驗(yàn)證架構(gòu),token本身將自己作為secret,通過HTTPS發(fā)送,從而替換了通過 HMAC和token secret加密并發(fā)送的方式,這將允許使用cURL發(fā)起APIcall和其他簡單的腳本工具而不需遵循原先的request方式并進(jìn)行簽名。
簽名簡化:
對于簽名的支持,簽名機(jī)制大大簡化,不需要特殊的解析處理,編碼,和對參數(shù)進(jìn)行排序。使用一個(gè)secret替代原先的兩個(gè)secret。
短期token和長效的身份憑據(jù)
原先的OAuth,會發(fā)行一個(gè) 有效期非常長的token(典型的是一年有效期或者無有效期限制),在OAuth 2.0中,server將發(fā)行一個(gè)短有效期的access token和長生命期的refresh token。這將允許客戶端無需用戶再次操作而獲取一個(gè)新的access token,并且也限制了access token的有效期。
角色分開
OAuth 2.0將分為兩個(gè)角色:
Authorization server負(fù)責(zé)獲取用戶的授權(quán)并且發(fā)布token。
Resource負(fù)責(zé)處理API calls。
流程圖
?
轉(zhuǎn)載于:https://www.cnblogs.com/yx520zhao/p/6616686.html
總結(jié)
以上是生活随笔為你收集整理的Oauth2.0协议 http://www.php20.com/forum.php?mod=viewthreadtid=28 (出处: 码农之家)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 SPI的使用
- 下一篇: 【转载】PHP面向对象(OOP)编程入门