2017-09-26 83 views
0

請記住,我是一個noob,而且是oauth2的新手。我想得到oauth2的感覺並玩弄它。爲此,我使用offlineimap連接到我的Gmail帳戶並檢索電子郵件。如何以及爲什麼保護oauth2中的客戶機密

讓我複製我將用它來說明我的一般性問題

oauth2_client_id = clientId 
oauth2_client_secret = clientSecretToken 
oauth2_request_url = requestUrl 
oauth2_refresh_token = refreshToken 
type = IMAP 
remotehost = imap.gmail.com 
remoteuser = [email protected] 
remotepass = mailpasswd('gmail') 

據我瞭解CLIENT_ID用於識別我爲我的一些配置文件:請求URL只是我連接點在谷歌網站上的外部應用程序。刷新令牌用於生成實際的訪問令牌。

據我所知,客戶端的祕密是應用程序和gmail之間的共享祕密,以說服gmail正確的應用程序正在請求某些訪問。

問題如果我正確理解了這一點,刷新令牌和客戶機密應該是「祕密」的。這是否意味着將這些信息放在這樣的配置文件中是危險的?我們是否應該像密碼一樣加密它(例如用gpg)?

oauth2中對我來說不是100清楚的最後一點是:我是否正確理解我需要提供憑據(用戶名/密碼),因爲oauth2基本上假定我已登錄?

公平地說,oauth2在高層上所做的一切就是確保某個外部應用獲得對我的Gmail的某種訪問權限。這是爲特定應用程序授予特定數據。但我仍然需要提供我的憑據才能登錄到Gmail。

回答

1

想象一下,您使用公共代碼回購作爲github例如,並將您的代碼與您正在使用的配置文件一起推送到那裏。你剛剛把你的祕密暴露給了整個世界,我不能告訴你有多少人做過這樣的事情。

如果您的代碼不公開,那麼更好,但要確保您的Web服務器在直接請求時不會提供配置文件。只要整個事情是活的,只要沒有人可以訪問它,你就是安全的。

哦,只是爲了闡明刷新標記的工作原理....它用於延長以前標記的壽命,該標記已過期或接近過期,因此您不必申請新標記。

如果是我,我會加密所有3,意思是ClientID,ClientSecret和RefreshToken。

想想這樣,ClientID就是你的用戶名,ClientSecret就是你的密碼。

+0

thx爲anwser。兩個簡單的問題:那麼你會只加密client_secret和refresh_token還是隻加密client_secret?當然,我的意思是刷新令牌用於創建一個新的訪問令牌,如果我正確地理解它。 – math

+0

增加了更多的答案來處理您的問題 –

+0

很酷,非常感謝擴展anwser! – math

1

但事情是你只提供登錄憑據到你的Gmail帳戶,而不是暴露他們的第三方服務。第三方應用程序與您的帳戶進行交互,通過登錄後收到的身份驗證令牌進行身份驗證。如果需要,該令牌很容易失效,第三方應用程序將不再具有訪問權限。所有這些都不需要更改密碼。

+0

thx爲您的答案。這是一個公平的觀點。關於「如何看待更新和保密祕密」的問題呢?將它們存儲在文件中是否危險,或者我應該從加密文件中讀取它們? – math

相關問題