2014-03-19 23 views
1

我是oAUth2的新手,我試圖弄清楚幾件事情。oAuth 2.0 - 代表用戶代理

我瞭解oAuth2的基本原理,但我不知道如何在我的情況下實現它。

我在寫一個代表用戶自動執行手動過程並執行一些任務(更新/請求狀態等)的應用程序。我們連接的API使用oAuth2授予​​我們的應用程序權限。我們計劃在用戶向我們創建新帳戶時授予我們的應用許可。

我知道用戶會要求提供給我們應用程序的驗證碼。然後我們的應用程序將使用認證碼來生成訪問令牌。

我們只想這樣做一次。然後充當用戶發送和接收通知,而不必讓用戶使用他們的憑證登錄服務。

我不知道如何實現這一點,而不必存儲用戶憑證以獲得授權碼,因爲驗證碼和驗證令牌過期。我猜這是一種常見的情況。

我需要做些什麼來獲得我想要完成的事情?

回答

3

您可以使用RefreshToken得到一個新的的accessToken,如果這是由授權服務器提供。

如果沒有提供,我會聯繫Api提供商,您不應該存儲用戶憑據。事實上,如果OAuth協議作爲客戶端得到了很好的實施,您甚至不應該能夠獲得客戶端憑證。當用戶必須登錄時,您應該將用戶重定向到授權服務器,用戶應登錄,然後授權服務器將授權令牌重定向到您的應用程序。

另見刷新令牌這種解釋從OAuth的2.0規範:

刷新令牌用於獲得訪問令牌憑據。刷新 令牌由授權服務器發佈給客戶端,並且噹噹前訪問令牌 變得無效或過期時獲取新的訪問令牌,或者獲得具有相同或更窄範圍的其他訪問令牌012xx(訪問令牌可能具有生命週期較短且權限較資源 擁有者授權更少)。根據 授權服務器的判斷,發佈刷新令牌是可選的。如果授權服務器發出刷新 令牌,它發出的訪問令牌時,包括

注意

如果你申請一個新的accessToken使用RefreshToken和響應包括一個新的RefreshToken你應該覆蓋您當前保存的RefreshToken。換句話說,你應該總是使用你收到的最新的RefresthToken。

+0

同意!好答案。刷新令牌就是這裏的答案。再加上:不要存儲用戶的信用! – OhadR

+0

@JosVinke - 我們正在獲取刷新令牌。所以,我假設訪問令牌是短命的,並且刷新令牌很長時間。這正是我想知道的。 – Eric

+0

@esquire是的,這是正確的。 Al強硬一些實現是不同的Instagram例如使用長期存在的訪問令牌。 –