[英]What feature does devise have for api outside of token authenticable module
我正在为Rails json API使用基于令牌的身份验证。 自从devise弃用了token_authenticable模块以来,我已经在devise会话和注册控制器中重写了方法。 在这种状态下设计对于api是不必要的吗? 为我自己编写令牌认证的目的而设计的目的是否还更安全?
例如,根据设计要点,我应该使用以下代码从令牌中认证用户:
def authenticate_user_from_token!
email = params[:user_email].presence
user = email && User.find_by_email(email)
if user && Devise.secure_compare(user.authentication_token, params[:auth_token])
sign_in user, store: false
end
end
我相信params[:auth_token]
不适用于在标头中发送令牌的api。 我也不确定sign_in user
在json api中的作用是什么。 我可以继续设计并继续为令牌进行修改,也可以遵循https://github.com/danahartweg/authenticatable_rest_api/作为自定义解决方案。
您问题的答案取决于所需的安全性。 使用存储在用户表中的身份验证令牌的安全级别较低,例如用户名/密码。 通过https连接,临时攻击者很难获得所需的信息,但如果确实需要,则很容易受到重放攻击的攻击。 即使实现了滚动密钥(经常更改),也必须有某种方法将新密钥传达给客户端,同一攻击者可能会拦截该密钥。 就是说,如果您想在标头中传递auth_token
,则可以使用以下代码在控制器中检索它: request.headers[:auth_token]
。
HMAC是一种相当安全的方法,它通过在客户端和服务器之间合并共享机密以及已签名请求的超时来防止重放攻击。 请参阅我对这个问题的回答,以获取有关HMAC和带有iPhone客户端的Rails服务器的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.