【问题标题】:golang JSON RPC authorizationgolang JSON RPC 授权
【发布时间】:2017-03-04 19:47:43
【问题描述】:

我正在尝试使用 RPC 作为一些实际使用 http REST API 实现的服务的替代方案。由于此服务实际上不是公共的,并且仅由使用 RPC 的其他服务使用可能更有意义。

我正在寻找有关 RPC 授权最佳实践的提示 因为我真的不确定要走的路。

我正在为此使用 golang

  • 如何确保 RPC 仅被授权服务使用

  • 我可以只授权一部分公开的过程吗

谢谢

【问题讨论】:

    标签: go json-rpc


    【解决方案1】:

    您可以以与授权 REST 服务类似的方式处理授权。

    JSON Web Tokens (JWT) 是一种广泛使用的授权方法。您可以在 jwt.io 找到 JWT 的演示和概念概述。简而言之,JWT 是一个签名的 JSON 对象,编码为字符串。 JSON 对象可以对客户端拥有的权限做出任意数量的任意“声明”。

    您的服务将签署 JWT(使用私钥)并在身份验证期间将其传递给客户端,我建议通过 JSON-RPC 方法检查客户端的权限(通过 API 密钥、用户名和密码或其他)。然后,您的受保护方法可能需要 JWT 作为其参数之一:如果 JWT 已验证并具有正确的声明,则执行其正常功能,否则返回错误。

    我建议看看github.com/dgrijalva/jwt-go 包。它提供了颁发和验证 JWT 的方法。

    【讨论】:

    • 因此您建议实施一项服务 [service-identity-provider],其中服务进行身份验证并获取包含有关其授权的声明的 JWT,而不是将该令牌与 RPC 请求一起作为参数传递并将其用于在请求的另一端进行授权验证。我说的对吗?
    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2017-10-21
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多