關於OAuth2.0的介紹,請看下面鏈接(講的挺好的):
http://blog.csdn.net/seccloud/article/details/8192707
我的理解:
一共四個角色,A:Client(訪問者),B:資源擁有者,C:權限控制平台,D:資源中心
訪問流程:Client(訪問者)向 資源擁有者索要 資源訪問權限, 資源擁有者 給 Client(訪問者)開個授權書,Client(訪問者)拿着授權書到 權限控制平台 索要訪問令牌,Client(訪問者)獲取令牌,憑令牌訪問資源。
打個不恰當比法:C 欠 A 一筆錢,A沒時間去向C 討債,於是A給B開個委托書讓B去拿錢,C 看了委托書確認了A確實委托了B,也確認了B的身份,於是C給了B一把保險櫃的鑰匙,讓B 自己去取錢。
以上兩個例子,相信你己了解什么是OAuth2.0了吧。
關於SSO 理解
去年看了博客園某大神的大作之后,記下了筆記沒留URL,現就對着筆記進行回顧下。
客人訪問A站點,需要登錄,於是跳轉到SSO進入登錄,backurl帶上A站點的URL,當登錄成功之后,跳回A站點,並給SSO的憑證與A站點的憑證。
客人從A站點跳轉到B站點,B站點需要驗證客人的身份,帶上SSO的憑證到SSO進入驗證,通過之后,給B站點發B站點的憑證。
一個邏輯:接入站點先判斷是否有SSO的憑證,有則判斷是否有接入站點憑證。若沒有SSO的憑證,有接入站點憑證需重新登錄。若有SSO的憑證,沒有接入站點憑證,從SSO站點獲取接入站點憑證。
現在的問題是怎么將這兩者結合一起成為一個系統?!
A.com 與 B.com 由於涉及到跨站,所以給了A.com的Token B.com讀不到(一般使用cookie 存Token), 若權限確實允許 A.com 與 B.com 可以只認證一次,在A.com時己獲取訪問權限時,再轉入B.com時,需要再次向 sso.com再次請求,但時sso.com在上次保留了 用戶的登錄憑據,所以不需要用戶再次輸入帳號及密碼,直接下發B.com的 Token ,再跳轉到B.com 。實現免登錄功能。