golang JSON RPC授权

标签 go json-rpc

我正在尝试使用 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/

相关文章:

compiler-construction - 如何为 Go 构建 8g 和 6g Go 编译器

c# - 无法通过 JSON-RPC 将 CREATEAWTRANSACTION 发布到比特币核心

java - 有没有更简单的方法来使用 RestyGWT 发布此消息?

json - 如何获取XBMC当前播放的项目?

image - Go Code 在 go test 和 go run 中的行为不同

go - 从 net.UDPConn 读取会锁定 PC

go - 有没有一种方法可以使用 mux 路由来选择处理程序而不使用 golang 的 http listenAndServe?

http - TCP 是同一主机中 Go 程序之间通信的最佳方法吗?

arrays - 如何使用嵌套数组解码 JSON 响应数组

javascript - 传递对 XBMC json-rpc 的引用以稍后识别答案