創作內容

4 GP

Oauth2 個人理解(一)

作者:驥哥│2020-08-30 12:42:41│巴幣:8│人氣:364
這兩天在研究Oauth2,打算來寫一個golang的範例,以oauth2為基礎做一個簡單的登入範例。

在研究的過程中順手整理了一下自己的理解, 如果有誤的話請糾正。


* Oauth2

* 使用場景,為什麼我們要使用Oauth2?

假設今天我們要開發一個應用程式,功能是可以將使用者存在google帳號底下的照片都匯入應用程式並且做一些處理,這時候就要想說,我們的應用程式要怎麼存取到使用者帳號底下的資源呢?

在以前我們可能會想說,使用者自行輸入他的google帳號密碼,我們開發的應用程式再藉由那組帳號密碼獲得存取照片的權限,藉此來對照片進行處理。 但是這樣會衍生出很多問題,主要就是如果該應用程式是藉由我們使用者的google帳號密碼來獲得權限的話,應用程式本身獲得的權限太多了,應用程式本來只需要照片的存取權而已,如果是拿google帳密的話則是拿到了整個帳號的使用權限。

如果現在有個不懷好意的應用程式獲得了你整個google帳號密碼的使用權限, 便可以透過它去登入很多不同的網站,又或者是拿去做非法的交易等等...  所以需要提出一個解決方法,一來是可以讓應用程式獲得他想要獲得的資源,二來是也不會開放太多的權限給應用程式,只授權部份的存取功能。

從另外一個角度來討論, 如果今天我很信任這個應用程式,把整個帳號的權限都交給了這個應用程式, 某一天決定之後可能不再使用這個應用程式了。 這時候我們如果想要把權限收回來怎麼做呢?  我們需要把帳號密碼重新設定一輪,才可以確保應用程式本身不再有獲得我帳號權限的能力。

總結一下傳統方法的缺點:
(1): 應用程式為了後續的操作可能會保留使用者的帳號密碼, 我們無法確定是否安全。
(2): 使用者無法限制應用程式能掌握到的權限,以及權限有效的時間。
(3): 修改密碼之後可以收回權限,不過也同時讓所有獲得用戶授權的第三方應用全部失效。
(4): 只要有一個第三方的應用程式出現了資料外洩問題,會導致其他第三方應用也有被盜用的危險。

以上這幾個論點就是為何我們需要藉由oauth來讓第三方應用所獲得的權限可以僅限於它所需要使用的部份。

簡單的說Oauth就是一種授權機制,以google為存放data的地方為例, 使用者告知google,授權第三方的應用程式可以獲得部份的資源, google的系統則產生一個token, 第三方的應用可以透過token來在實現內進行授權權限內的資料存取。

token vs. password
1. token是有時效性,時間到了會自動撤銷,不會讓第三方應用程式一直持有權限。
2. 如果今天不想要繼續授權給應用程式了,資源擁有者可以隨時撤銷token的有效性。
3. token最大的好處是有權限的管理,可以只開放部份的資源存取權給第三方的應用程式。

在後續的文章會大概介紹一下oauth2實際上是怎麼運作的,還有怎麼申請google的oauth2服務。
不過可能還要等個幾天,因為我還在研究XD

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4899625
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

4喜歡★leichitw 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:計算機組織(二)... 後一篇:Oauth 個人理解(二...

追蹤私訊切換新版閱覽

作品資料夾

happy545你好~~
如果我賣以前畫畫的作品有人會買嗎?我真的需要幫忙....看更多我要大聲說16小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】