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