2017-08-29 62 views
1

通常在spring引導應用程序中,我們可以使用jpa audit來執行跟蹤。 Spring Boot Jpa Auditing跟蹤誰在微服務中創建或更改實體

雖然在微服務架構,我會盡量避免涉及到核心微服務的安全性。相反,我們可以在api網關上進行身份驗證/授權。

而如果核心服務沒有獲得當前登錄的用戶,我們必須找到一個方法來對當前運營商傳遞給核心服務。它可能是請求上的用戶標識符頭。或者也許我們可以將令牌傳遞給核心服務,讓它從auth服務器獲取登錄用戶。

如果任何人有處理這種情況,並給出了一些建議,我想知道。

+0

我聽說過,在微服務中有利於傳輸'交易密鑰'。例如,如果出現問題很重要,並且需要分析許多服務的日誌 –

回答

0

如果我理解正確的問題...

  • 你有哪些認證/授權實現
  • 在雖然API網關呼叫到一個核心服務通過談判成功的API網關
  • 核心服務進行的一些審計「誰做什麼」
  • 爲了執行這一審計的核心業務需要主叫用戶的身份

我覺得這裏可能的方法是:

  1. 實現API網關審計。我懷疑這不是一個跑步者,因爲審計可能會比在API網關中實現的更細。我懷疑你最可能在API getway審覈是一樣的東西用戶A調用端點B而你可能要審覈像用戶A插入項{...}在時間{...}這可能只能在核心服務內完成。

  2. 通過對核心服務傳遞原始調用者的憑據,讓它再次進行驗證。這將確保沒有未經認證的呼叫可以到達核心服務,並且還具有爲核心服務提供用戶身份的副作用,然後它可以用於審覈。但是,如果您的API網關是核心服務的入口點,那麼核心服務內的再次驗證僅用於提供用戶身份,在這種情況下,它可能被視爲矯枉過正。

  3. 傳遞從API網關的核心服務的身份驗證的用戶身份,並讓在其審計的核心服務使用這個。如果您的API網關爲核心業務的只有入口點那麼就沒有必要對核心服務和身份驗證的用戶身份的規定重新進行身份驗證可被視爲核心服務的API的一部分。至於該身份應該如何從API網關傳播到核心服務,根據API網關和核心服務之間的互操作性質,有幾種選擇。這聽起來像是HTTP調用,如果是這樣的話,那麼請求頭是有意義的,因爲這個狀態是請求範圍。你可能已經傳播了一些'水平狀態'(即狀態,但不是呼叫者提供的參數),例如correlationId(它允許您通過API getway將呼叫追蹤到核心服務並再次返回),如果是,則經過身份驗證的用戶身份可能是添加到該州並以相同的方式提供給核心服務。