我有一个为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文档中描述了如何实现格式化程序和解析器。