簡體   English   中英

ASP.NET Web API 2承載令牌身份驗證和資源授權

[英]ASP.NET Web API 2 Bearer Token Authentication and Resources Authorization

在構建ASP.NET Web API端點時,可以使用[Authorize]屬性保護它們,並且可以使用承載令牌來認證請求並調用端點。

我的問題是關於授權以及一旦身份驗證成功后我們如何才能更好地授予對資源的訪問權限。

例如,如果有一個端點api/contracts/details並且希望限制特定人員對此的訪問,那么我在說的是SQL表字段(對象屬性)甚至整個表。 如何做到這一點?

我覺得角色不是這里的最佳選擇。 有什么建議嗎?

要么

用戶注冊后,他可以生成在請求承載令牌時必須提供的client_idclient_secret 我可以在令牌中添加client_id作為聲明。

在數據庫中,我有這樣的表:

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

我可以創建另一個稱為Access表,在其中指定所有允許的點(“客戶表”->“訪問表”對許多關系)

訪問表:

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

然后,我可以創建一個消息處理程序並檢查所有傳入的請求。 解碼承載令牌,提取client_id並在Access表中查詢允許的端點。 如果傳入請求與允許的端點匹配,則將其傳遞,否則將其拒絕。

我猜這應該工作嗎?

最好使用角色Attribute,但是您將需要創建TokenValidationHandler。 在這里檢查這個很好的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM