2016-10-22 55 views
1

我正在嘗試使用RPC作爲使用http REST API實際實現的一些服務的替代方案。由於這些服務實際上並不公開,並且只能由使用RPC的其他服務使用,因此更有意義。golang JSON RPC授權

我正在尋找關於RPC授權最佳實踐 的一些提示,因爲我真的不確定要遵循的方式。

我使用golang此

  • 我如何確保一個RPC得到只能由經過授權的服務

  • 使用我可以只授權的暴露過程的一個子集

Thx

回答

2

您可以使用類似的w ay授權REST服務。

JSON Web令牌(JWT)是一種廣泛使用的授權方法。您可以在jwt.io找到關於智威湯遜的演示和概念性概述。簡而言之,JWT是一個簽名的JSON對象,編碼爲一個字符串。 JSON對象可以對客戶端擁有的權限進行任意數量的「聲明」。

您的服務將簽署JWT(使用私鑰)並在身份驗證過程中將其傳遞給客戶端,我建議通過JSON-RPC方法完成此操作,該方法檢查客戶端的權限(通過API密鑰,用戶名和密碼或其他)。然後,您的受保護方法可能需要JWT作爲其參數之一:如果JWT得到驗證且具有正確的聲明,則執行其正常功能,否則返回錯誤。

我建議看看github.com/dgrijalva/jwt-go包。它提供了發佈和驗證JWT的方法。

+0

所以你建議實現一個服務[service-identity-provider],其中服務驗證並獲得一個包含與其授權有關的聲明的JWT,而不是將該令牌與RPC請求一起作爲參數傳遞,並將其用於另一個授權驗證請求方。我對嗎? – Gavello