golang JSON RPC授权
golang JSON RPC authorization
我正在尝试使用 RPC 作为一些实际使用 http REST API 实现的服务的替代方案。由于此服务实际上不是 public 并且仅供其他服务使用,因此使用 RPC 可能更有意义。
我正在寻找有关 RPC 授权最佳实践的提示
因为我真的不确定要遵循什么方式。
我正在为此使用 golang
如何确保 RPC 仅由授权服务使用
我可以只授权公开程序的一个子集吗
感谢
您可以采用与 REST 服务授权类似的方式处理授权。
JSON Web Tokens (JWT) 是一种广泛使用的授权方法。您可以在 jwt.io 找到 JWT 的演示和概念概述。简而言之,JWT 是一个带符号的 JSON 对象,编码为字符串。 JSON 对象可以对客户端拥有的权限进行任意数量的 "claims" 设置。
您的服务将签署 JWT(使用私钥)并在身份验证期间将其传递给客户端,我建议通过检查客户端权限的 JSON-RPC 方法来完成(通过 API 密钥、用户名和密码或其他)。然后,您的受保护方法可能需要 JWT 作为其参数之一:如果 JWT 已通过验证并具有正确的声明,则执行其正常功能,否则返回错误。
我建议看一下 github.com/dgrijalva/jwt-go 包。它提供了发布和验证 JWT 的方法。
我正在尝试使用 RPC 作为一些实际使用 http REST API 实现的服务的替代方案。由于此服务实际上不是 public 并且仅供其他服务使用,因此使用 RPC 可能更有意义。
我正在寻找有关 RPC 授权最佳实践的提示 因为我真的不确定要遵循什么方式。
我正在为此使用 golang
如何确保 RPC 仅由授权服务使用
我可以只授权公开程序的一个子集吗
感谢
您可以采用与 REST 服务授权类似的方式处理授权。
JSON Web Tokens (JWT) 是一种广泛使用的授权方法。您可以在 jwt.io 找到 JWT 的演示和概念概述。简而言之,JWT 是一个带符号的 JSON 对象,编码为字符串。 JSON 对象可以对客户端拥有的权限进行任意数量的 "claims" 设置。
您的服务将签署 JWT(使用私钥)并在身份验证期间将其传递给客户端,我建议通过检查客户端权限的 JSON-RPC 方法来完成(通过 API 密钥、用户名和密码或其他)。然后,您的受保护方法可能需要 JWT 作为其参数之一:如果 JWT 已通过验证并具有正确的声明,则执行其正常功能,否则返回错误。
我建议看一下 github.com/dgrijalva/jwt-go 包。它提供了发布和验证 JWT 的方法。