Asp.net

利用 Active Directory 的 REST API 授權方法

  • June 17, 2020

保護具有以下要求的 REST Web API 的最佳方法是什麼。該系統有一個 Angular JS 前端,帶有在 ASP.net 中實現的 REST API。

  • 系統中有兩個“角色”,使用者將擁有其中一個角色。一個角色應該允許訪問某些 API(稱之為“VIEW”),另一個角色允許訪問其他 API
  • 所有使用者都在 Active Directory 中,所以如果我有使用者名,我可以檢查他們的角色——一些客戶端在 Windows 機器上,其他客戶端在 Linux 上
  • 我想保持會話,這樣我就不必為每個 API 呼叫查找 AD
  • 我想要單點登錄。在 Windows 機器上,我不需要他們輸入使用者並通過,因為我已經可以使用 Windows 身份驗證檢索他們的使用者名。

我相信 Oauth 將是我最好的選擇。

系統中有兩個“角色”,使用者將擁有其中一個角色。一個角色應該允許訪問某些 API(稱之為“VIEW”),另一個角色允許訪問其他 API

  • 對於基於角色的身份驗證,您可以使用$$ Authorize(“Role” = “Manager”) $$. 令牌將由身份伺服器提供,並將包含作為角色的聲明。

所有使用者都在 Active Directory 中,所以如果我有使用者名,我可以檢查他們的角色——一些客戶端在 Windows 機器上,其他客戶端在 Linux 上

  • 如果您有 ADFS,那麼您可以有一個信任 ADFS 的身份伺服器。ADFS 將提供一個令牌,該令牌將具有角色聲明,並且您的身份伺服器將執行聲明轉換並將相同的角色聲明返回給 Angular 應用程序。

我想保持會話,這樣我就不必為每個 API 呼叫查找 AD

  • 為此,在請求令牌時,您可以請求離線範圍,以便身份伺服器提供Refresh TokenAccess Token這樣您就不需要一次又一次地請求 AD。

我想要單點登錄。在 Windows 機器上,我不需要他們輸入使用者並通過,因為我已經可以使用 Windows 身份驗證檢索他們的使用者名。

  • 對於這個,您可以讓您的身份伺服器信任 WSFederation 以進行 Windows 身份驗證。

所以基本上你需要設置身份伺服器,它將為你提供令牌,REST API 將使用該令牌來驗證聲明以將正確的資訊返回給使用者。

引用自:https://stackoverflow.com/questions/39776414