用一个小故事给萌新讲透 OAuth 的实现原理(解释放评论区)

查看 30|回复 2
作者:RiverRay   
你住在一个贼安全的小区,进出都要门禁卡。
某天,你出门了。恰好一个快递员来了,要送你的包裹 📦。
他站在门口半天进不去,就去找保安了。
“保安大哥,我要送个包裹,但没有门禁卡进不去呀。”快递员说。
保安立马打电话给你:“有个快递员要送包裹,你同意他进来吗?”
你回答:“可以啊,让他放到公共楼层就行”
保安对快递员说:“住户同意了,这是临时通行证,你用这个进门,只能去公共楼层。”
快递员拿着通行证,顺利进门,把包裹放在公共楼层,离开的时候把通信证也揣兜里带走了。
第二天,快递员又来了,发现通行证还没过期,就直接进小区,把包裹放在公共楼层。
第三天,他再次来送包裹,发现通行证过期了,又去找保安。
“保安大哥,我的通行证过期了,能给我一张新的吗?”
保安查了记录,说:“好的,这是新的通行证,你还是只能进公共楼层。”
这次保安没有再联系你,因为你之前已经同意了。
快递员拿着新的通行证,顺利进门,完成了投递。
RiverRay
OP
  
#0 快递员请求保安允许他进入小区
⬇️
第三方应用请求用户授权:
应用程序向授权服务器(保安)发起授权请求,请求访问用户的资源。
请求的 URL 通常包含 client_id 、redirect_uri 、scope 等参数。
#1
保安打电话给你,确认是否允许快递员进入
⬇️
授权服务器向用户请求授权:
授权服务器将用户重定向到一个登录和授权页面
用户在这个页面上登录并同意授权,授权服务器验证用户身份并获取用户同意
#2
保安给快递员一张临时通行证,允许他进入公共楼层
⬇️
授权服务器发放授权码:
用户同意授权后,授权服务器生成并返回一个授权码给第三方应用
授权码是一个临时的凭证,用于在稍后阶段交换访问令牌
#3
快递员使用通行证进入小区
⬇️
应用程序使用授权码请求访问令牌:
应用程序将授权码发送到授权服务器的令牌端点,换取访问令牌
请求中包含 grant_type 、code 、redirect_uri 、client_id 和 client_secret 等参数
#4
快递员被限制只能进入公共楼层。
⬇️
访问令牌的权限范围( scope ):
访问令牌中包含 scope ,定义了应用程序可以访问的资源和操作范围
例如,scope=read 表示应用程序只能读取资源,不能进行修改
#5
电子钥匙过期,保安第二次发通行证
⬇️
刷新令牌机制:
访问令牌有有效期( expires_in ),到期后需要使用刷新令牌来获取新的访问令牌
应用程序使用刷新令牌向授权服务器请求新的访问令牌,不需要再次请求用户授权
pfffs   
666
大佬,我想实现在中国大陆地区的服务器上面使用 google oauth2
求建议
您需要登录后才可以回帖 登录 | 立即注册

返回顶部