用一个小故事给萌新讲透 OAuth 的实现原理(解释放评论区) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
RiverRay
V2EX    程序员

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

  RiverRay
leizhenpeng 2024-07-07 13:40:36 +08:00 2419 次点击
这是一个创建于 469 天前的主题,其中的信息可能已经有所发展或是发生改变。
你住在一个贼安全的小区,进出都要门禁卡。

某天,你出门了。恰好一个快递员来了,要送你的包裹 。

他站在门口半天进不去,就去找保安了。

“保安大哥,我要送个包裹,但没有门禁卡进不去呀。”快递员说。

保安立马打电话给你:“有个快递员要送包裹,你同意他进来吗?”

你回答:“可以啊,让他放到公共楼层就行”

保安对快递员说:“住户同意了,这是临时通行证,你用这个进门,只能去公共楼层。”

快递员拿着通行证,顺利进门,把包裹放在公共楼层,离开的时候把通信证也揣兜里带走了。

第二天,快递员又来了,发现通行证还没过期,就直接进小区,把包裹放在公共楼层。

第三天,他再次来送包裹,发现通行证过期了,又去找保安。

“保安大哥,我的通行证过期了,能给我一张新的吗?”

保安查了记录,说:“好的,这是新的通行证,你还是只能进公共楼层。”

这次保安没有再联系你,因为你之前已经同意了。

快递员拿着新的通行证,顺利进门,完成了投递。
6 条回复    2024-07-08 14:10:59 +08:00
RiverRay
    1
RiverRay  
OP
   2024-07-07 13:52:40 +08:00
#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
    2
pfffs  
   2024-07-07 13:55:59 +08:00
666

大佬,我想实现在中国大陆地区的服务器上面使用 google oauth2

求建议
RiverRay
    3
RiverRay  
OP
   2024-07-07 13:58:53 +08:00   1
@pfffs 可以用第三方帮你折腾

国内推荐:authing 身份云
国外:clerk 或者 supabase
mqllin
    4
mqllin  
   2024-07-08 08:40:04 +08:00
看了大佬的小故事茅塞顿开
CHTuring
    5
CHTuring  
   2024-07-08 11:48:06 +08:00
应该还少了个步骤,主动解除权限。
evilcoming
    6
evilcoming  
   2024-07-08 14:10:59 +08:00
膜拜
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     800 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 24ms UTC 21:06 PVG 05:06 LAX 14:06 JFK 17:06
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86