素材牛VIP会员
OAuth授权 和 Api Key, JWT三种的区别
 凤***奇  分类:PHP代码  人气:799  回帖:4  发布于6年前 收藏

最近在研究restful api安全方面的相关知识, 于是就接触到了oauth2.0, jwt, apikey+secret+sign 等认证方案;

但实在搞不明白这三者怎么就都是做认证的?

  1. 首先 jwt 和 apikey 这两种方案的话, 都是带有对参数的完整性校验, 防replay 防篡改等数据传输的安全措施的, 而oauth最终只是使用access_token来向服务端证明客户端有访问该api的权限, 和之前几个完全没有什么可比性, 为什么一说到认证授权, 就直接把这几个摆在一起对比呢?
  2. 比如现在有三个角色:

    这只是公司其中的一个系统A:
        前端: H5/APP 
        后端: Server (api接口) 
        
    数据中心: datacenter (api接口)
    
    首先对于A系统的后端来说, 要想访问数据中心, 肯定是需要经过授权的, 用什么方案? oauth?
    A系统的前端访问A系统后端如何保证数据安全, 以及接口授权, 还有用户的登录状态token和oauth的access_token也分不清楚?
    

    完全懵逼中, 求指点??

讨论这个帖子(4)垃圾回帖将一律封号处理……

Lv6 码匠
zh***ni 职业无 6年前#1

个人认为Ouath只是针对对外访问,前后端交互,和数据中心交互,应该是走内部的,不会对外开放,如果还是不放心,可以自己去做对称加密,至于Ouath协议可以对外接口那里去用,让第三方用户去你这里获得授权,确认身份以后再给他数据等。

Lv5 码农
牛***满 产品经理 6年前#2

oauth授权是针对第三方提供的解决方案,类似微信公众号的网页授权,正常的内部调用接口是不会对外开放的,暂时还不太了解你说的JWT,apikey+secret+sign主要是为了验证数据的合法性,防止篡改

Lv1 新人
凌***志 移动开发工程师 6年前#3

首先分清楚一点。

JWT是一个“认证规范”,而OAuth是一个“开放标准网络协议”,并不是同一个类型的东西。

举个例子,你在服务器上存放了一些“资源”,JWT提供了一种用于发布接入令牌(Access Token),并对发布的签名接入令牌进行验证的方法,令牌(Token)本身包含了一系列声明,服务器可以根据这些声明限制用户对资源的访问。而你可以用这个token去访问你要访问的资源,而不需要每次都进行帐号密码认证。

而OAuth提供了一套详细的授权机制,你可以通过公开的或私有的设置,授权第三方应用访问特定资源。

上面的“你”指代用户。简单来说,JWT是用来证明你有权限访问特定资源,并提供一个安全方便的方式访问资源。而OAuth是你要授权第三方访问你的资源。

Lv6 码匠
Ga***er 软件测试工程师 6年前#4

我之前也在了解相关知识, 楼主这么一说..... 本来有点了解, 现在基本上完全不懂这几个概念的应用场景了, 貌似能通用, 但又貌似不行 一起等待大神解答

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取