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