为什么微服务喜欢用 Oauth2.0?

2023-03-28 10:26:17 +08:00
 HarrisonLee

现在感觉 100 篇讲微服务认证授权的博客里面有 98 篇都在讲 Oauth2.0 ,Oauth2.0 一般不都是用在开放平台吗,如用户授权其他系统来访问本系统的资源。但这种场景很有限吧,对于一般的业务系统,普通 token+网关统一鉴权感觉就很完美了。是我理解有问题吗,请各位帮忙补充指正!

3216 次点击
所在节点    程序员
9 条回复
libaili
2023-03-28 10:33:40 +08:00
因为企业办公多数使用企业微信、钉钉、飞书等软件,需要业务和以上工具打通,以上工具都提供 oauth 接入
8355
2023-03-28 10:41:40 +08:00
先问是不是再问为什么
javalaw2010
2023-03-28 10:49:43 +08:00
因为 oauth2.0 是一种规范,而且易于实现。此外,oauth2.0 不仅有你常用的授权码模式,还有其他三种模式,都有各自适用的场景,而 client credentials 模式就很适合服务端之间交互的场景。当然,在实现上你完全可以把它实现为你所说的 token+网关鉴权的方式,这两者并不是冲突的。
mmdsun
2023-03-28 11:04:29 +08:00
自己公司开发的内部用系统,完全没必要用 OAuth 2.0 。
我理解的是:除非公司用户体量很大,打算像微信、QQ 那样,提供微信登录那种,做 OAuth 2.0 用处更大
你自己的项目用第三方登录的,也就是调用几个接口获取 accessToken 的事情。

----当讨论用 OAuth 2.0 时候,要想想你是准备做授权服务器、还是服务提供商还是 client ,这点很重要。
frank1256
2023-03-28 11:07:58 +08:00
这明显是因为 oauth2.0 听起来酷不是么
janus77
2023-03-28 11:10:40 +08:00
你怎么知道你的系统未来不会接入第三方呢
litchinn
2023-03-28 11:56:55 +08:00
因为功能很全面,它还很容易做 SSO 。
当你给第三方提供接口使用时,使用 OAuth 2.0 还会减少很多在认证层面的成本,包括沟通成本。
Saitama
2023-03-28 14:18:55 +08:00
我以前稍微找过一点资料,大概了解一点,有问题请欢迎指正。
以前是用来做授权,但是后来名气大了,还有个原因我猜就是大部分人也不清楚 OAuth2 到底是啥,认证和授权的概念也分不太清。于是越来越多的人用 OAuth2 来做认证。于是索性有大佬在 OAuth2 的协议的基础上搞了一个 OpenID Connect ,给 OAuth2 协议加了一个标准的认证流程。像 Spring Security5 的 OAuth2 就是支持的 OpenID Connect 认证的,所以现在用 Oauth2 来认证也没毛病。

参考
https://oauth.net/articles/authentication/
Saitama
2023-03-28 14:24:47 +08:00
补充一点,记不太清了。
OpenID Connect 协议大概就是。
原本 OAuth2 是在第三方那里认证完成后跳转回来给你一个 AccessToken 。以前做认证的话就是在授权时 scope 里加上 user 部分,然后得到 accessToken 后在请求一下类似 /user/me 这种接口,获取 userId 。
现在如果使用 OAuth2+OpenID Connect 的话,在第三方跳转回来的时候,会直接给你一个 AccessToken ,和 IdToken 。Jwt 格式。直接就知道 userId 了。方便了不少

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/927756

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX