2012-07-20 91 views
1

因此,我正在使用OAuth2實施Provider。試圖瞭解OAuth2流程

我得到客戶端申請client_id和client_secret的部分。這將它們唯一地標識給提供者。

所以,現在他們已經有了,他們正在通過SSL,爲什麼需要授權令牌?然後,在那之後,爲什麼需要授權代碼?

另外,爲什麼刷新令牌?

爲什麼我們不能只使用client_id和client_secret?我確實獲得了基於最終用戶授權保護的資源,但需要額外的授權。這很有道理。但爲什麼一個授權令牌和代碼?

最後,所有這些都需要資源,而不是最終用戶保護?

所以,我想這是5個不同的問題,幫助我理解:

  1. 爲什麼一個身份驗證令牌?
  2. 爲什麼選擇驗證碼?
  3. 爲什麼刷新令牌?
  4. 爲什麼不爲不受保護的資源(或我們可以)使用客戶端憑證?
  5. 爲什麼都是 auth令牌和代碼? (我想這可能會被1和2都回答)。

回答

3

對不起,我希望這對某些人有用,以備將來參考。

首先他們被稱爲Authorization CodeAccess Token

  1. Access Token是代表訪問 資源
  2. Authorization Code權的字符串表示的資源 業主給予客戶的授權。在大多數情況下,資源所有者是在服務器上擁有一些資源的最終用戶 。客戶端要訪問這些資源,所以他需要來自 用戶的授權。
  3. Refresh Token用於更新過期Access Tokens。 Usualli一個訪問令牌的生命期爲幾分鐘,而刷新在幾個月/年/無論什麼時候過期。你使用訪問者;當它們變老時,使用刷新令牌獲取新的訪問令牌。 請注意,在OAuth1中,只有一種類型的令牌持續了幾個月。已經引入短命令來提高協議安全性。
  4. 我想我沒有承認。如果資源不受保護,請不要使用OAuth!反正還有就是Client Credential Grant當你認爲客戶資源所有者(here an example使用。
  5. 見1和2,它們是不同的,也是他們可以通過兩個不同的通道被髮送(但我還是天堂」 t發現使用不同的頻道)。

總之當客戶端授權碼,他說給認證服務器(AS):「EHI,資源所有者說,我可以訪問的資源」 AS爲客戶提供了一個訪問令牌。現在,他擁有令牌,客戶端轉到資源服務器:「授權服務器說我可以訪問資源,查看我的令牌」,他獲得資源。

注意,有4個流,每一個使用不同類型的授權格蘭特的並且只有那些中的一個是所述授權代碼。這都是關於文字。 關於該機制,首先閱讀this (a little obsolete) introduction並再次閱讀RFC 6749,請記住這些事項。

希望你現在有一個更清晰的想法。