2015-03-02 55 views
1

當我們建立的ASP.NET Web API端點,我們可以使用[Authorize]屬性保護他們,我們可以使用承載令牌驗證請求,並調用端點。的ASP.NET Web API 2承載令牌認證和資源的授權

我的問題是關於授權以及我們如何能夠更好地授予訪問資源,一旦驗證成功。

例如,如果有一個端點api/contracts/details並希望限制對特定人員的訪問,我正在談論SQL表字段(對象屬性)甚至整個表。這怎麼能實現?

我有一種感覺,角色是不是在這裏最好的選擇。有什麼建議?

用戶註冊後,他就可以生成一個client_idclient_secret請求承載令牌時,他必須出示。我可以添加client_id爲令牌內要求。

在我的表是這樣的數據庫:

  • 用戶(用戶詳細信息)
  • 客戶端(CLIENT_ID,client_secret ...等)
  • RefreshToken(refresh_token,保護票)

我可以創建另一個表,名爲Access,其中我指定了所有允許的設定點(客戶端表 - >關於許多關係的訪問表)

訪問表:

  • API /用戶
  • API /設備
  • API /產品

然後我可以創建一個消息處理程序和檢查所有傳入的請求。解碼不記名令牌,提取client_id並查詢允許的端點的Access表。如果傳入的請求匹配允許的端點,則讓它通過,否則拒絕它。

這應該工作我猜?

回答

0

你是最好用的角色屬性,但你需要創建一個TokenValidationHandler。檢查這個優秀的答案here

+0

我不需要在委託處理程序中有一個自定義令牌驗證過程,因爲通過簡單地使用控制器上的授權屬性或api控制器中的操作,持證人身份驗證令牌可以爲我執行此操作。 – 2015-03-02 11:09:42