一、OAuth協議的作用
例如我在qq上有很多的圖片,圖片分別保存在不同的文件夾中,現在有一個第三方登錄需要訪問我的其中某一個文件時ru我需要怎么做呢?如果我直接將我qq的賬號、密碼直接給第三方應用,那它就可以訪問我的全部圖片,但是有的圖片我是不想給他的!而且如果我只是想讓他訪問一段時間,過了這個時間之后,我就不想讓第三方訪問了,這個時候那我只能去修改密碼!想想這個工作就很繁瑣而且還不安全。
所以OAuth的作用就是資源擁有者給第三方應用,我想給他的權限,而且可以控制權限的時間。
二、OAuth協議中的角色
資源所有者(Resource Owner):對資源具有授權能力的人;比如:qq用戶、微信用戶。
第三方應用Client:獲得資源所有者的授權后可以去訪問資源所有者的資源。
服務提供商:資源存放的地方;例如qq,微信;其中提供商會提供一個認證服務器和一個資源服務器。
認證服務器(Authorization Server):認證資源所有著的身份,為資源所有者提供授權審批流程,并最終頒發授權令牌(Access Token)。
資源服務器:存放具體的資源,并處理訪問資源的路徑;例如qq空間的相冊
三、OAuth協議基本流程:
Client請求資源所有者的授權,請求中一般包含:要訪問的資源路徑,操作類型,Client的身份等信息。
資源所有者批準授權,并將“授權證據”發送給Client。
Client向認證服務器請求“訪問令牌(Access Token)”。此時,Client需向認證服務器提供資源所有者的“授權證據”,以及Client自己身份的憑證。
認證服務器驗證通過后,向Client返回“訪問令牌”。訪問令牌也有多種類型,若為bearer類型,那么誰持有訪問令牌,誰就能訪問資源。
5.認證服務器攜帶“訪問令牌”訪問資源服務器上的資源。在令牌的有效期內,Client可以多次攜帶令牌去訪問資源。
6.資源服務器驗證令牌的有效性,比如是否偽造、是否越權、是否過期,驗證通過后,才能提供服務。
四、授權模式
根據上訴第二步同意授權的方式可以分為四種授權模式:授權碼模式(authorization code),簡化模式(implicit),密碼模式(resource owner password credentials),客戶端模式(client credentials)。
現在主流的提供OAuth的提供商大都是授權碼模式,那么下面就說一下授權碼模式的流程:
授權碼模式的特點:1.用戶授權是在認證服務器上完成的;2.用戶同意授權后,認證服務器不是馬上返回最終的令牌,而是攜帶的授權碼,在通過第三方服務器攜帶授權碼去換令牌,這就需要第三方應用需要有自己服務器。