有没有必要在项目里使用Oauth2,不为了技术而技术,你可能并不需要 OAuth2
本博文出处:https://blog.csdn.net/yangxiao_hui/article/details/107252437
OAuth2 是一个关于 授权 (Authorization)的网络标准,在网上已经有大量的资料来解释,本文不再详细解释原理和规范的详情。关于 Authorization 和 Authentication 的区别之后会写另外一篇文章来分析。在此仅列两个比较优质的解释 OAuth2 原理的文章:
尽管如此,这里还是描述一下 OAuth2 的使用场景,以便约定和明确一下角色方便后面叙述。
角色
A
(twitter): 托管内容、搭建 OAuth2 服务、提供第三方登录接入;C
: twitter 的用户,在 twitter 网站上产生内容;B1
(medium.com): 希望 C 用 twitter 账号来登录自己的网站,并且希望获得 C 的 twitter 头像和用户名等基本信息;B2
(buffer.com): 希望 C 用 twitter 账号登录 buffer.com 并编写内容然后直接发布到 twitterB3
(twitterrific): twitter 的第三方 iOS 客户端
使用场景
用户 C 想要用自己的 twitter 的账号登录 medium.com,或者想用 buffer.com 来管理 twitter 的内容,或者想用 twitterrific 来刷推。但是这三个情况 用户 C 都不希望把自己的 twitter 用户名和密码直接交给 B,而是希望 twitter 和 B 之间通过某种协商,给 B 相应的权限。
需要多少权限是 B 在 twitter 的开放平台上设置的,是不是把这些权限(或者给部分权限)给 B 是用户 C 自己决定的,而且这个决定的操作(授权)是在 twitter 的网站或者官方 APP 里进行的。
在用户觉得某个 B 不值得信任的时候,在 twitter 的账号管理界面可以撤销对它的授权。或者当 twitter 发现某个 B 有违规操作的时候,可以完全禁止 B 获得授权。
OAuth2 就能满足以上的授权需求。
搭建 OAuth2 服务(担任 A)
什么时候需要自己搭建 OAuth2 服务呢?一般来说两种情况:
- 作为 twitter、Facebook、微信、QQ 这种有完善的用户系统、在互联网占到了基础设施级别的用户量,开放给其他网站做社交媒体登录;
- 作为 reddit 这种论坛网站,或者微博、twitter 这种社交媒体,开放给第三方开发客户端或者扩展应用。这种网站的特点是:本身是功能比较丰富,
接入 OAuth2 服务(担任 B)
什么时候需要接入别人提供的 OAuth2 服务呢?跟上面的担任 A 相对应的两种情况:
- 自己的网站想要用户使用 twitter、Facebook、微信、QQ 来登录,让用户跳过繁琐的注册过程,提高转化率;
- 想要为 reddit、微博、twitter 之类的网站开发客户端或者扩展应用。
不需要 OAuth2 的场景
总的来说,任何用来做 认证(Authentication)的场景都不适合用 OAuth,比如:
- 只有一套用户系统的时候:用常规的用户名密码模式或者联合身份等就够了。
- 有多套用户系统,但是这个数量是有限的而且是受控制的,比如同一家公司的几个子产品之间有不同的用户系统,但是希望能把这些用户打通:这就是典型的 Single Sign On 的应用场景
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通