如何使用葡萄宝石和 jwt 作为身份验证构建第三方 API



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

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

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

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

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

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

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

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

我使用JWT进行身份验证,使用我自己的Authorization:header方案,以及客户端和服务器之间的整个通信。葡萄::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文档中描述了如何实现格式化程序和解析器。

最新更新