node.js - Restful api认证机制的问题
PHPz
PHPz 2017-04-17 11:33:23
[Node.js讨论组]

目前是采用json web token这种机制,验证合法用户后返回一个toekn,然后该用户每次请求都带上这个token,最后服务器验证token是否合法。但是这样有一个弊端:token很容易让别人获取到,这样就能访问任意的api,不安全。

这需要用上https来保证安全?想请教一下大家有哪些更好更安全的认证机制。

PHPz
PHPz

学习是最好的投资!

全部回复(9)
迷茫

1.开放平台?开放平台一搬用oauth验证机制。
2.一般的接口验证的话,可以发放一个secretkey给用户(secretkey可以是通过oauth验证方式发放,也可以手动发放),然后请求参数加一个sign参数,sign等于hash(secretkey+paramsStr+secretkey),服务器验证sign是否合法,这种方式不需要传输secretkey。

阿神

可以用上 HTTPS. 对于 token 验证的话, 可以增加一些限制, 比如 IP 范围. 用上了 HTTPS 还是有可能被劫持, 但是概率比较小, 我觉得是不用太担心的, 除非是什么不得了的网站. 用户名密码验证的话, 可以采用时间戳/验证码 + hash, 但同上, 如果用的 HTTPS 并不是很必要.

大家讲道理

可以授权后根据token来做一个简单的签名和验签

高洛峰

http://www.asp.net/web-api/overview/security/inpidual-accounts-in-web-api
FYI

天蓬老师

如果是WebAPP的话,最好全程https,参照OAuth2.0,这样开发比较简单。token是有生命周期,可以有IP限制(IP跟获取token时候的IP不一致就拒绝)
如果客户端是C++、安卓之类的也可以用OAuth1.0的老办法,每一次请求都要附上secret,secret是HMAC_SHA1("神秘代码&param1="+param1+"&param2="+param2+"&...",access_token+"&&"+"app_token")
这样的例子比较多,谷歌一下太多了,你搭个OAuth1.0的服务器就好了,不用买证书。如果自己写SDK,估计工程量比前者大多了。

高洛峰

我现在也是使用的你这种方法。现在不考虑改变验证方法,等以后需要的时候再去修改验证方法。

这里讲了很多认证方法,希望能够帮助你。如何实现用户认证系统?

黄舟

你说的让用户带着token来请求资源,只是authorization,你还需要authentication。在用户登录之后,你可以给这个用户生成一个id token(这个也可以是JWT),然后把这个id token string当成cookie返回给客户端让他们存着,这样每次用户带着一个access token来请求资源的时候,把access token和request header里的这个id cookie对照看是不是属于同一个用户。这个方案至少解决了万一access token被别人拿到,别人还需要一个id cookie才能获取资源。但是id cookie也有可能被别人盗取。为了更好的安全性,这时候就要上HTTPS了,然后把cookie的安全性做高

伊谢尔伦

使用oauth认证机制

迷茫

楼上的几位回答都很好,现在采用OAuth2.0授权了,而OAuth2.0都是建议使用https协议加密数据的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号