如何使用grape gem和jwt作为身份验证来构建第三方API

时间:2015-11-19 01:52:50

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

我有一个用于Android和ios应用程序的api的网络应用程序。使用JWT令牌进行身份验证。

现在,我想为我的应用客户端构建third party api's,以便将apis集成到网站中。

我整合了Grape gem,grape-swagger来构建api。 因为我已经将JWT用于原生app api了。我正在尝试对第三方apis使用相同的身份验证。

我认为将JWT用于api是安全的,但我仍然在问。将JWT用于第三方api是否安全,因为客户端可以公开他的令牌?

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

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

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

我还有其他方法可以进行身份​​验证吗

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

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

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

错误的格式为error_formatter,如果收件人未知(即"在"声明未找到),则会在未使用JWT.encode(data, nil, 'none')

签名/加密的情况下返回

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