OAuth授权 和 Api Key, JWT三种的区别
最近在研究restful api安全方面的相关知识, 于是就接触到了oauth2.0, jwt, apikey+secret+sign 等认证方案;
但实在搞不明白这三者怎么就都是做认证的?
- 首先 jwt 和 apikey 这两种方案的话, 都是带有对参数的完整性校验, 防replay 防篡改等数据传输的安全措施的, 而oauth最终只是使用access_token来向服务端证明客户端有访问该api的权限, 和之前几个完全没有什么可比性, 为什么一说到认证授权, 就直接把这几个摆在一起对比呢?
比如现在有三个角色:
这只是公司其中的一个系统A: 前端: H5/APP 后端: Server (api接口) 数据中心: datacenter (api接口) 首先对于A系统的后端来说, 要想访问数据中心, 肯定是需要经过授权的, 用什么方案? oauth? A系统的前端访问A系统后端如何保证数据安全, 以及接口授权, 还有用户的登录状态token和oauth的access_token也分不清楚?
完全懵逼中, 求指点??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
首先分清楚一点。
JWT是一个“认证规范”,而OAuth是一个“开放标准网络协议”,并不是同一个类型的东西。
举个例子,你在服务器上存放了一些“资源”,JWT提供了一种用于发布接入令牌(Access Token),并对发布的签名接入令牌进行验证的方法,令牌(Token)本身包含了一系列声明,服务器可以根据这些声明限制用户对资源的访问。而你可以用这个token去访问你要访问的资源,而不需要每次都进行帐号密码认证。
而OAuth提供了一套详细的授权机制,你可以通过公开的或私有的设置,授权第三方应用访问特定资源。
上面的“你”指代用户。简单来说,JWT是用来证明你有权限访问特定资源,并提供一个安全方便的方式访问资源。而OAuth是你要授权第三方访问你的资源。
我之前也在了解相关知识, 楼主这么一说..... 本来有点了解, 现在基本上完全不懂这几个概念的应用场景了, 貌似能通用, 但又貌似不行 一起等待大神解答
个人认为Ouath只是针对对外访问,前后端交互,和数据中心交互,应该是走内部的,不会对外开放,如果还是不放心,可以自己去做对称加密,至于Ouath协议可以对外接口那里去用,让第三方用户去你这里获得授权,确认身份以后再给他数据等。
oauth授权是针对第三方提供的解决方案,类似微信公众号的网页授权,正常的内部调用接口是不会对外开放的,暂时还不太了解你说的JWT,apikey+secret+sign主要是为了验证数据的合法性,防止篡改