Asp.net
利用 Active Directory 的 REST API 授權方法
保護具有以下要求的 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 Token,Access Token這樣您就不需要一次又一次地請求 AD。我想要單點登錄。在 Windows 機器上,我不需要他們輸入使用者並通過,因為我已經可以使用 Windows 身份驗證檢索他們的使用者名。
- 對於這個,您可以讓您的身份伺服器信任 WSFederation 以進行 Windows 身份驗證。
所以基本上你需要設置身份伺服器,它將為你提供令牌,REST API 將使用該令牌來驗證聲明以將正確的資訊返回給使用者。