0

有在我們的系統中三個連通方:基於聲明的訪問控制 - 如何實現'系統'用戶?

  • 前端
  • 服務A
  • 服務B

再加上我們有獨立的安全令牌服務,我們的身份提供者。

經過身份驗證的用戶與Frontend進行交互,它調用服務A,服務A又調用服務B.用戶的訪問令牌使用「poor's man identity delegation」通過此管道傳遞。服務A和服務B授權(或不授權)基於通過的身份聲明的用戶操作。大家都很開心!

但是現在我遇到了服務A在操作過程中沒有用戶上下文的情況。它發生:

  • 啓動期間
  • 當服務A從消息總線處理消息
  • 當計時器觸發

在每種情況下,服務A需要調用服務B,以獲得一些數據,但它收到401,因爲沒有訪問令牌傳遞給服務B.

是否有任何最佳實踐如何處理這種情況?我現在頭腦中唯一的想法是在我們的身份提供商處註冊'系統'用戶(每個服務A,服務B,服務C等的可能用戶),獲得該用戶的訪問令牌並在上述情況下使用它。但是我聞起來不好,我正在尋找其他的想法。

任何建議,將不勝感激。謝謝!

回答

0

簡短的回答將是:如果你沒有人行動起來,那麼作爲你自己。

即使使用「窮人的人身份代理」服務A使用某種機制在STS進行身份驗證。在您發佈的鏈接中正在使用證書。所以實現一種獲取令牌的新方法。你已經有了一個獲得ActAs標記的方法,所以現在你需要實現一個獲取用戶標記的方法(對於服務A)。

您的STS應該已經知道這個「系統」用戶,因爲它允許他請求ActA令牌。您只需向系統用戶分配一些聲明即可定義即使它不代表任何用戶行事時也能執行的操作。

相關問題