【问题标题】:How to build third party API's using grape gem and jwt as authentication如何使用葡萄 gem 和 jwt 作为身份验证构建第三方 API
【发布时间】:2016-02-21 00:08:28
【问题描述】:

我有一个为 android 和 ios 应用程序构建的带有 api 的 web 应用程序。使用JWT 令牌进行身份验证。

现在我想为我的应用程序客户构建third party api's 以将apis 集成到那里的网站中。

我集成了Grape gem,grape-swagger 用于构建api。 因为我已经将 JWT 用于本机应用程序 api。我正在尝试对第三方 api 使用相同的身份验证。

我假设将 JWT 用于 api 是安全的,但我仍然在问。将 JWT 用于第三方 api 是否安全,因为客户端可能会暴露其令牌?

我需要一些关于如何使用 jwt 作为身份验证和葡萄来构建第三方 api 的参考/链接。

如何进行 jwt 身份验证和葡萄

  • 我是否应该在网站上给客户一个页面以添加自定义密钥进行加密,然后生成带有 user.id 和电子邮件作为有效负载的令牌,以便他可以验证自己的签名。并要求客户端为以后的所有请求发送此令牌。
  • 我应该创建/users/sign_in api 并在用户发送用户名密码时创建。我是否应该发送 24 小时到期的 jwt 令牌,并要求客户端每 24 小时生成一次新令牌。

有没有其他方法可以进行身份​​验证

【问题讨论】:

    标签: ruby-on-rails api authentication jwt grape


    【解决方案1】:

    我使用 JWT 使用我自己的方案进行身份验证,使用 Authorization: 标头以及客户端和服务器之间的整个通信。 Grape::API 处理程序以:

    开头
    content_type    :jwt, 'application/jwt'
    formatter       :jwt, Rack::JWTFormatter
    parser          :jwt, Rack::JWTParser
    format          :jwt
    

    错误以error_formatter 格式化,如果接收者未知(即未找到“iss”声明),则返回它而不使用JWT.encode(data, nil, 'none') 签名/加密

    Grape Documentation中描述了如何实现格式化程序和解析器。

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-14
        • 2017-01-16
        • 2022-01-21
        • 2015-05-27
        相关资源
        最近更新 更多