2015-09-23 94 views
1

我對如何處理OAuth2協議中的作用域有一個普遍的疑問。爲便於論證,我們從一個具體的例子開始:OAuth2協議中的作用域處理

假設我有一個OAuth服務器A,我想用它來保護兩個RESTful API R1R2。這兩個服務具有特殊的作用域,用於授予用戶對某些受保護資源的訪問權限。因此可以說R1需要範圍S1R2需要範圍S2爲了訪問一些受限制的資源。

我們進一步假定OAuth服務器A也使用範圍emailprofile,它們需要訪問OAuth服務器自身管理的用戶數據。

現在,這是我有麻煩了解。據我所見,OAuth服務器A通常只知道如何處理他自己使用的範圍(在本例中爲emailprofile)。但是,爲了訪問兩個API上的受限功能(R1需要S1R2需要S2),需要使用哪些範圍?

我是否必須使用OAuth服務器手動註冊這些範圍(以便知道它們存在並可以在需要時授予它們)?這又意味着我需要使用OAuth服務器註冊所有我想保護/使用的API的範圍。

這些假設是否正確?如果我在這裏遇到問題,也許有人可以通過解釋整個範圍處理通常如何實現來幫助我。我試圖谷歌oauth2和範圍,但似乎沒有很好的解釋如何確切的範圍在協議中處理。

回答

2

由於它的加入OAuth2授權服務器A責任發出訪問令牌,而訪問令牌與特定範圍理所當然的,這聽起來合理有A知道的S1S2

這並非完全必要,A可以將範圍視爲「不透明」字符串而不在意,但註冊範圍爲A可讓您檢查所請求的範圍是否存在(並且不是一些隨機字符串)因爲在授權流程期間(「您允許」OAuth2客戶端「訪問您的R1數據,這意味着blablabla」而不是「您授予對S1的訪問權限」)時向用戶顯示的提示中顯示更有意義的消息。

+0

因此,要包裝起來,在OAuth服務器'A'中實現允許管理範圍(CRUD)的功能似乎是個好主意。所以服務器真的需要知道受保護服務所需的所有範圍嗎?感謝您的回答! – evermean