Oauth2.0和Yii的邂逅(以己拙見實現第三方接口權限管理)

有關oauth2.0:阮一峯前輩講解的很詳細了,傳送門http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

我用白話大致的說一下第三方登錄的整個流程

application身份(也就是調用第三方登錄的程序)

1.當用戶點擊某個第三方登錄,將用戶重定向到目標網站的登錄授權頁面。

2.接收第三方的請求,請求中有用戶授權成功的授權碼,接到授權碼以後就去第三方網站申請令牌(access_token)。

3.以後就可以通過這個令牌去訪問用戶的信息啦。

(還有其他參數,比如授權信息,刷新令牌,從某種角度說,那些只是錦上添花的東西,沒有行不行?我覺得行,當然可能是我忽略了什麼,有知道的請指出)

第三方身份(接口提供者)

1.當用戶訪問登錄授權頁,讓用戶登錄,登錄之後讓用戶選擇權限授權。

2.用戶授權,系統在一張表中記錄授權了app_id(使用token的應用id),access_token,person_id(授權人id),perssion(授予了哪些權限,是rule的參數)。

3.當第三方調用接口,首先認證第三方,然後Yii::$user->can(xxx)激活了對接口使用權限的認證,Yii會先找第三方被賦予了什麼樣的角色(權限)然後再找下級角色(權限),如果角色 或權限對應了某個規則,就通過這個規則來驗證是否擁有該角色(權限),如果沒有規則,存在就是擁有權限。一般來說,每個權限都會綁定一個規則,在當下,這個規則就是查詢2步驟的那張表裏第三方是否擁有token,有的話,是否用調用當前接口的權限。

(其實這個rbac是個前提,是在系統預設好了某些數據來定義角色,權限,規則的信息以及之間的關係)

用戶身份

1.點擊第三方登錄,輸入對應網站的賬號密碼,然後點登錄。

2.登錄成功後點擊授權。

我們兩邊的開發者忙活半天就是爲了讓用戶擁有這種極致的體驗。


關於Yii2的rbac

我覺得這裏關於rbac的介紹很詳細了,傳送門http://www.yiichina.com/doc/guide/2.0/security-authorization


當然,如果你是一個初次接觸這些的新手,這對你無疑是一個挑戰,因爲這麼複雜的一個過程,你沒法像我一樣跳出來一個身份一個身份的思考,因爲每一環關聯的細節都很多,相互穿插,一步連着一步。我的建議是,從頭看到尾,理解大概意思,思考一下,大致的過程,最好有兩個人,可以各自模擬身份,口頭實現一下過程,然後再每一個點的去突破。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章