在對OAUTH2理解基礎上的乙個小故事

2021-06-27 14:17:01 字數 1502 閱讀 8888

上次對wso2的oauth2的原始碼實現閱讀過之後,對於oauth的認識有了更加深刻的了解.

認識一門技術,首先要從它解決的問題來入手.無論是解決什麼問題,都應該貼近生活,更加人性化.下面我就通過乙個故事來闡述我眼中的oauth.

有一位有錢人,在他的保險箱中存放著無數的珠寶,每次訪問珠寶他都是自己通過保險箱的密碼親自操作.但是,後來有錢人忙於生意,有時訪問寶物就讓手下的傭人去完成,然後在一抽出時間他就把密碼改掉.久而久之,他感到這樣做非常的累.因為每次只要有傭人操作過保險箱之後就得對密碼進行修改, 可是不修改密碼的話,那就隱藏意味著他與傭人永久著珠寶,因為密碼他們都是知道的.及時修改了密碼他也不放心,因為在他修改密碼之前他的所有珠寶都是與傭人共享的,很有可能在改密碼之前傭人就偷了珠寶.即使傭人是可靠的,如果傭人不經意洩露了密碼,在改密碼之前被其他的人偷掉了珠寶,那麼就嚴重了.所以,把保險箱的密碼告訴別人,這樣是不可取的.

這位有錢人終於想到了乙個好的辦法.就是其他的人想要訪問他的保險箱的話不是通過密碼,而是乙個口令.首先他找到了乙個絕對信任的人(gate),其次他對自己的珠寶進行分類(scope),每天他都將所有可以從保險箱中訪問寶物的口令(accesstoken)存放到保險箱中,由於需求的不同,口令的有效時間也不同,也許有的口令是乙個小時的有效時間,也許是只有一次的使用能力,也許是永久的.他把這些口令都告訴了那位可靠的人.

傭人來找他了,說明需要將項鍊存放到保險箱中,有錢人想了一想,給了他乙個口令(code)在其中包含了這個口令的有效時間,以及對保險箱項鍊分類的存放操作.於是傭人拿著這個口令去找可靠的人,可靠的人將口令確認之後,把真正訪問保險箱的口令給了傭人.傭人拿著口令去訪問保險箱,這個傭人想偷拿手鐲,發現他沒有許可權,只好存放項鍊乖乖存放進去.第二次又去拿著口令訪問保險箱的時候,發現已經過期了.因為,這個口令訪問一次就會過期.不要以為有錢人這樣做就完美了.假設事情是這樣的,主人給於了傭人去得到真正口令的口令(code)但是在半路被人劫持,口令(code)被人搶走,那麼劫匪將口令給了可靠的人,但是可靠的人並不知道當初有錢人給誰的口令,所以把真正的口令給了劫匪.那麼這個時候該分類下的珠寶就會有風險了.不管有錢人這樣的設定漏洞有多少,但是他至少避免了所有寶物的丟失(這裡其實是重定向url的確認問題).

有錢人的兒子想從裡面取珠寶了,也許也得像傭人一般去詢問有錢人,可是這裡不這樣想.假設,有錢人對比較特權的人是有規定的.他兒子直接去找可靠的人,那個人直接將他兒子的專有口令(這個依然是accesstoken)返回.由於是他兒子,將來是要繼承家產的,所以,兒子的口令是無限期的.但是,肯定是無限期的麼?當然不是,是不是無限期的當然是有錢人說了算.有錢人的年輕老婆想來訪問保險箱了,去找可靠的人,像兒子一樣獲得了口令,取到了滿意的東西,殊不知,她的口令可不是無限期的,是在離婚之前.年輕的老婆把口令記在了紙上,在離婚之後偷偷潛入家裡,企圖取寶物,但是她發現口令無效了.

以上的故事僅僅是個人在對oauth的理解上的一些構想,其中有一些時間的闡述可能是站在程式設計的角度去考慮,在實際的生活中也許有更簡單的方法.但是在計算機的世界裡卻不太可能那樣去做.說到底,oauth就是在解決乙個安全訪問,信任危機的問題.在具體的實現上,可能不大相同,但是都基本會遵循oauth這樣的一套協議.

OAuth2的一些改變

以前最煩的就是 xx和我說你咋不支援 oauth 啊?那是標準啊,多通用啊?同學,標準是啥?中國還有個饅頭標準,直徑大於多少還不算是饅頭呢!其實早在我做開放平台時,oauth 的確實有了,但是當時也就是個草案,不過也是一群大牛公司的人在那兒搗鼓,但是當時沒有乙個真正的開放平台大牛公司的人在做這個 我...

OAuth2的一些改變

以前最煩的就是xx和我說你咋不支援oauth啊?那是標準啊,多通用啊?同學,標準是啥?中國還有個饅頭標準,直徑大於多少還不算是饅頭呢!其實早在我做開放平台時,oauth的確實有了,但是當時也就是個草案,不過也是一群大牛公司的人在那兒搗鼓,但是當時沒有乙個真正的開放平台大牛公司的人在做這個 我認為雅虎...

基於OAUTH2的統一認證的例項解析

sso與多平台登入 sso一般用於同一單位的多個站點的登陸狀態保持,技術上一般參考cas協議 多平台登入一般是oauth體系的協議,有多種認證模式但是不具備會話管理和狀態保持。不過從本質上講,我覺得兩者都是通過可信的第三方進行身份驗證,如果說同一單位的多個子系統共同只圍繞乙個第三方賬戶 可以稱為認證...