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