V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HarrisonLee
V2EX  ›  程序员

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

  •  
  •   HarrisonLee · 2023-03-28 10:26:17 +08:00 · 3116 次点击
    这是一个创建于 401 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    ----当讨论用 OAuth 2.0 时候,要想想你是准备做授权服务器、还是服务提供商还是 client ,这点很重要。
    frank1256
        5
    frank1256  
       2023-03-28 11:07:58 +08:00
    这明显是因为 oauth2.0 听起来酷不是么
    janus77
        6
    janus77  
       2023-03-28 11:10:40 +08:00
    你怎么知道你的系统未来不会接入第三方呢
    litchinn
        7
    litchinn  
       2023-03-28 11:56:55 +08:00
    因为功能很全面,它还很容易做 SSO 。
    当你给第三方提供接口使用时,使用 OAuth 2.0 还会减少很多在认证层面的成本,包括沟通成本。
    Saitama
        8
    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
        9
    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 了。方便了不少
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   804 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:22 · PVG 06:22 · LAX 15:22 · JFK 18:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.