2017-04-08 70 views
0

我想弄清楚如何配置/使用Asp.Net核心授權憑證和用戶數據在另一臺服務器,通過API訪問。Asp.Net核心 - 來自另一臺服務器的自定義授權和身份?

例如,在「Auth」服務器中,我們有Auth數據庫,用於存儲用戶,角色和聲明。一些例子:

GET https://auth.myserver.com/v1/users/4/IsInRole/Admin

響應是一個簡單的布爾。

或者:

GET https://auth.myserver.com/v1/users/4/GetRolesForUser/

的響應是角色的列表。

另一臺服務器是資源服務器(也完全是基於API的,沒有前端)。它存儲了大量需要角色和聲明授權的數據。

另外,我們有第三個玩家:客戶。

客戶將:

  1. AUTH服務器,以獲得一個承載和刷新令牌,使用用戶名和密碼
  2. 客戶存儲這些令牌,併發送承載到資源服務器獲取一些數據
  3. 資源服務器將作爲k爲AUTH服務器如果承載令牌是有效
  4. 如果是,那麼資源服務器需要再次詢問AUTH服務器有關具有承載令牌的用戶,如果用戶有必要的孔/聲稱是訪問請求的資源所必需的。

第4步是我的疑問。我想,應該發生在資源服務器控制器:基本上

[HttpGet] 
[Authorize(Roles = "Admin")] //API CALL HERE TO THE AUTH SERVER (?) 
public async Task<IActionResult> GetData() 
{ 
    ... 

,我不知道如何認證上下文(只是直到返回請求)的用戶,把它在HttpContext.User中,使用我自己的自定義驗證過程

我試圖儘可能簡化這個架構,使我的問題更清晰。請忘記「Auth」服務器的安全性。

回答

0

如果您使用jwts,這個流程可以被簡化,角色可以存儲在聲明中,這意味着在授權屬性中不需要api調用。

此外資源服務器不需要驗證令牌是否有效,可以使用祕密完成。

看看以下是好資源https://leastprivilege.com/https://brockallen.com/